From 44a21a32cd6facdb2990aa37a96d1b3b13d95364 Mon Sep 17 00:00:00 2001 From: Jorrit Schaap <schaap@astron.nl> Date: Fri, 29 Apr 2016 14:33:00 +0000 Subject: [PATCH] Task #9349: inital python mom rpc client for copy task and more. Talks to Java MoM services. --- .gitattributes | 1 + SAS/MoM/MoMQueryService/CMakeLists.txt | 1 + SAS/MoM/MoMQueryService/config.py | 3 ++ SAS/MoM/MoMQueryService/momrpc.py | 42 ++++++++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 SAS/MoM/MoMQueryService/momrpc.py diff --git a/.gitattributes b/.gitattributes index 985f3647b9e..34409cbffb7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4726,6 +4726,7 @@ SAS/MoM/MoMQueryService/momqueryrpc.py -text SAS/MoM/MoMQueryService/momqueryservice -text SAS/MoM/MoMQueryService/momqueryservice.ini -text SAS/MoM/MoMQueryService/momqueryservice.py -text +SAS/MoM/MoMQueryService/momrpc.py -text SAS/MoM/MoMQueryService/test/CMakeLists.txt -text SAS/MoM/MoMQueryService/test/test_momqueryservice.py -text SAS/MoM/MoMQueryService/test/test_momqueryservice.run -text diff --git a/SAS/MoM/MoMQueryService/CMakeLists.txt b/SAS/MoM/MoMQueryService/CMakeLists.txt index bb355d1c6eb..7e6a3118ab4 100644 --- a/SAS/MoM/MoMQueryService/CMakeLists.txt +++ b/SAS/MoM/MoMQueryService/CMakeLists.txt @@ -9,6 +9,7 @@ set(_py_files config.py momqueryservice.py momqueryrpc.py + momrpc.py ) python_install(${_py_files} DESTINATION lofar/mom/momqueryservice) diff --git a/SAS/MoM/MoMQueryService/config.py b/SAS/MoM/MoMQueryService/config.py index a5b66e022d8..00986504667 100644 --- a/SAS/MoM/MoMQueryService/config.py +++ b/SAS/MoM/MoMQueryService/config.py @@ -5,3 +5,6 @@ from lofar.messaging import adaptNameToEnvironment DEFAULT_MOMQUERY_BUSNAME = adaptNameToEnvironment('lofar.ra.command') DEFAULT_MOMQUERY_SERVICENAME = 'momqueryservice' + +DEFAULT_MOM_BUSNAME = adaptNameToEnvironment('lofar.mom.bus') +DEFAULT_MOM_SERVICENAME = '' diff --git a/SAS/MoM/MoMQueryService/momrpc.py b/SAS/MoM/MoMQueryService/momrpc.py new file mode 100644 index 00000000000..94d01c9aeaa --- /dev/null +++ b/SAS/MoM/MoMQueryService/momrpc.py @@ -0,0 +1,42 @@ +#!/usr/bin/python + +import sys +import logging +from optparse import OptionParser +from lofar.messaging.RPC import RPC, RPCException, RPCWrapper +from lofar.mom.momqueryservice.config import DEFAULT_MOM_BUSNAME, DEFAULT_MOM_SERVICENAME + +logger = logging.getLogger(__file__) + +class MoMRPC(RPCWrapper): + def copyTask(self, mom2id, newTaskName=None, newTaskDescription=None): + logger.info("calling copyTask rpc for mom2id %s" % (mom2id)) + new_task_mom2id = self.rpc('TaskCopy', mom2Id=mom2id) #, newTaskName=newTaskName, newTaskDescription=newTaskDescription) + logger.info("mom2id of copied task = %s" % (new_task_mom2id)) + return new_task_mom2id + +def main(): + # Check the invocation arguments + parser = OptionParser('%prog [options]', + description='do rpc calls to the momservice from the commandline') + parser.add_option('-q', '--broker', dest='broker', type='string', default=None, help='Address of the qpid broker, default: localhost') + parser.add_option('-b', '--busname', dest='busname', type='string', default=DEFAULT_MOM_BUSNAME, help='Name of the bus exchange on the qpid broker [default: %default]') + parser.add_option('-s', '--servicename', dest='servicename', type='string', default=DEFAULT_MOM_SERVICENAME, help='Name for this service [default: %default]') + parser.add_option('--mom2id', dest='mom2id_to_copy', type='int', help='[REQUIRED] mom2id of the task to copy.') + parser.add_option('-V', '--verbose', dest='verbose', action='store_true', help='verbose logging') + (options, args) = parser.parse_args() + + if options.mom2id_to_copy == None: + parser.print_help() + parser.error('Missing required option mom2id') + + verbose = bool(options.verbose) + + logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', + level=logging.DEBUG if verbose else logging.INFO) + + with MoMRPC(busname=options.busname, servicename=options.servicename, broker=options.broker, verbose=verbose) as rpc: + print rpc.copyTask(options.mom2id_to_copy) + +if __name__ == '__main__': + main() -- GitLab