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