Skip to content
Snippets Groups Projects
Commit d4f0cb36 authored by Jorrit Schaap's avatar Jorrit Schaap
Browse files

Task #8705: added PyMessaging as lofar_package. Added MoMQueryService and a simple client

parent 9ad00c9b
No related branches found
No related tags found
No related merge requests found
...@@ -4599,6 +4599,11 @@ SAS/Feedback_Service/src/Feedback.h -text ...@@ -4599,6 +4599,11 @@ SAS/Feedback_Service/src/Feedback.h -text
SAS/Feedback_Service/src/FeedbackMain.cc -text SAS/Feedback_Service/src/FeedbackMain.cc -text
SAS/Feedback_Service/src/FeedbackService.conf -text SAS/Feedback_Service/src/FeedbackService.conf -text
SAS/Feedback_Service/src/fb_data_44883.txt -text SAS/Feedback_Service/src/fb_data_44883.txt -text
SAS/MoM/CMakeLists.txt -text
SAS/MoM/MoMQueryService/CMakeLists.txt -text
SAS/MoM/MoMQueryService/__init__.py -text
SAS/MoM/MoMQueryService/momprojectdetailsquery.py -text
SAS/MoM/MoMQueryService/momqueryservice.py -text
SAS/OTB/OTB-distribution/assembly.xml -text SAS/OTB/OTB-distribution/assembly.xml -text
SAS/OTB/OTB-distribution/pom.xml -text SAS/OTB/OTB-distribution/pom.xml -text
SAS/OTB/OTB/assembly.xml -text SAS/OTB/OTB/assembly.xml -text
......
...@@ -66,6 +66,8 @@ if(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED) ...@@ -66,6 +66,8 @@ if(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED)
set(MessageBus_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MessageBus) set(MessageBus_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MessageBus)
set(MessageDaemons_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MessageDaemons) set(MessageDaemons_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MessageDaemons)
set(Messaging_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/Messaging) set(Messaging_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/Messaging)
set(PyCommon_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/Messaging/python/common)
set(PyMessaging_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/Messaging/python/messaging)
set(MSLofar_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MSLofar) set(MSLofar_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/MSLofar)
set(pyparameterset_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/pyparameterset) set(pyparameterset_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/pyparameterset)
set(pytools_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/pytools) set(pytools_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LCS/pytools)
...@@ -151,4 +153,5 @@ if(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED) ...@@ -151,4 +153,5 @@ if(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED)
set(SAS_Tools_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubSystems/SAS_Tools) set(SAS_Tools_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubSystems/SAS_Tools)
set(PVSS_DB_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubSystems/PVSS_DB) set(PVSS_DB_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubSystems/PVSS_DB)
set(LAPS_CEP_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubSystems/LAPS_CEP) set(LAPS_CEP_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubSystems/LAPS_CEP)
set(MoMQueryService_SOURCE_DIR ${CMAKE_SOURCE_DIR}/SAS/MoM/MoMQueryService)
endif(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED) endif(NOT DEFINED LOFAR_PACKAGE_LIST_INCLUDED)
# $Id$ # $Id$
#lofar_package(PyMessaging 1.0 DEPENDS PyCommon) lofar_package(PyMessaging 1.0 DEPENDS PyCommon)
include(PythonInstall) include(PythonInstall)
......
# $Id: CMakeLists.txt 32745 2015-11-01 20:17:08Z schoenmakers $
add_directory(MoMQueryService)
# $Id$
lofar_package(MoMQueryService 1.0 DEPENDS PyMessaging)
include(PythonInstall)
set(_py_files
__init__.py
momqueryservice.py
momprojectdetailsquery.py
)
python_install(${_py_files} DESTINATION lofar/mom/momqueryservice)
# $Id$
#!/usr/bin/python
import sys
from lofar.messaging.RPC import RPC
''' Simple RPC client for Service momqueryservice.GetProjectDetails
'''
if __name__ == '__main__':
if len(sys.argv) <= 1:
print 'Please provide one or more mom ids'
sys.exit(1)
ids = ','.join(sys.argv[1:])
with RPC('momqueryservice','GetProjectDetails',timeout=10) as getProjectDetails:
res,status=getProjectDetails(ids)
if status == 'OK':
for id,obj in res.items():
print 'Object %s' % (id)
for k,v in obj.items():
print ' %s: %s' % (k, v)
print
else:
print status, res
#!/usr/bin/python
# $Id$
'''
Simple Service listening on momqueryservice.GetProjectDetails
which gives the project details for each requested mom object id
'''
from mysql import connector
from lofar.messaging import Service
# do not commit passwd in svn
passwd=''
class DBlistener:
def __init__(self):
self.conn = connector.connect(host="mysql1.control.lofar",
user="momreadonly",
passwd=passwd,
database="lofar_mom3")
def __call__(self, text):
# parse text
# it should contain a list of ints
# filter out everything else to prevent sql injection
mom_ids = [x.strip() for x in text.split(',')]
mom_ids = [x for x in mom_ids if x.isdigit()]
cursor = self.conn.cursor()
# TODO: make a view for this query in momdb!
query = '''SELECT project.mom2id as project_mom2id, project.name as project_name, project.description as project_description,
object.mom2id as object_mom2id, object.name as object_name, object.description as object_description, object.mom2objecttype as object_type, object.group_id as object_group_id
FROM lofar_mom3.mom2object as object
inner join lofar_mom3.mom2object as project on project.id = object.ownerprojectid
where object.mom2id in (%s)
order by project_mom2id
''' % (','.join(mom_ids))
cursor.execute(query)
result={}
rows= cursor.fetchall()
for row in rows:
item = {'project_mom2id': int(row[0]),
'project_name': row[1],
'project_description': row[2],
'object_mom2id': int(row[3]),
'object_name': row[4],
'object_description': row[5],
'object_type': row[6],
'object_group_id': int(row[7]) if row[7] else None}
result[str(row[3])] = item
return result
with Service("momqueryservice", "GetProjectDetails", DBlistener(), startonwith=True) as getProjectDetailsService:
getProjectDetailsService.WaitForInterrupt()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment