From e674de623c6d8473e0c4ea6cfb26ac70ccdcd0b6 Mon Sep 17 00:00:00 2001
From: Sinisa Veseli <sveseli@aps.anl.gov>
Date: Fri, 26 Jun 2015 20:06:41 +0000
Subject: [PATCH] allow arbitrary key-value pairs to be passed to daq service
 and to processing plugins

---
 src/python/dm/daq_web_service/cli/startDaqCli.py | 10 +++++++---
 src/python/dm/daq_web_service/cli/uploadCli.py   |  8 ++++++--
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/python/dm/daq_web_service/cli/startDaqCli.py b/src/python/dm/daq_web_service/cli/startDaqCli.py
index 81af4eb2..a88cca0f 100755
--- a/src/python/dm/daq_web_service/cli/startDaqCli.py
+++ b/src/python/dm/daq_web_service/cli/startDaqCli.py
@@ -6,7 +6,7 @@ from daqWebServiceSessionCli import DaqWebServiceSessionCli
 
 class StartDaqCli(DaqWebServiceSessionCli):
     def __init__(self):
-        DaqWebServiceSessionCli.__init__(self)
+        DaqWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
         self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
         self.addOption('', '--data-directory', dest='dataDirectory', help='Experiment data directory.')
 
@@ -25,13 +25,17 @@ class StartDaqCli(DaqWebServiceSessionCli):
     def runCommand(self):
         self.parseArgs(usage="""
     dm-start-daq --experiment=EXPERIMENTNAME --data-directory=DATADIRECTORY
+        [key1:value1, key2:value2, ...]
 
 Description:
-    Starts DAQ for a given experiment. Provided data directory will be monitored for data files.
+    Starts DAQ for a given experiment. Specified data directory will be 
+    monitored for data files. All provided key/value pairs will be passed to 
+    file processing plugins. 
         """)
         self.checkArgs()
         api = ExperimentRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
-        experiment = api.startDaq(self.getExperimentName(), self.getDataDirectory())
+        daqInfo = self.splitArgsIntoDict()
+        experiment = api.startDaq(self.getExperimentName(), self.getDataDirectory(), daqInfo=daqInfo)
         print experiment.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
 
 #######################################################################
diff --git a/src/python/dm/daq_web_service/cli/uploadCli.py b/src/python/dm/daq_web_service/cli/uploadCli.py
index ea247a8f..9c75cc18 100755
--- a/src/python/dm/daq_web_service/cli/uploadCli.py
+++ b/src/python/dm/daq_web_service/cli/uploadCli.py
@@ -6,7 +6,7 @@ from dm.common.exceptions.invalidRequest import InvalidRequest
 
 class UploadCli(DaqWebServiceSessionCli):
     def __init__(self):
-        DaqWebServiceSessionCli.__init__(self)
+        DaqWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
         self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
         self.addOption('', '--data-directory', dest='dataDirectory', help='Experiment data directory.')
 
@@ -25,9 +25,13 @@ class UploadCli(DaqWebServiceSessionCli):
     def runCommand(self):
         self.parseArgs(usage="""
     dm-upload --experiment=EXPERIMENTNAME --data-directory=DATADIRECTORY
+        [key1:value1, key2:value2, ...]
 
 Description:
-    Schedules data upload for a given experiment. 
+    Schedules data upload for a given experiment. All existing files in the
+    specified directory will be uploaded to storage. Relative directory 
+    structure will be preserved. All provided key/value pairs will be passed 
+    to file processing plugins.
         """)
         self.checkArgs()
         api = ExperimentRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
-- 
GitLab