From d89f98e61f5784636ec20b54f9596f897e7bc160 Mon Sep 17 00:00:00 2001
From: Sinisa Veseli <sveseli@aps.anl.gov>
Date: Wed, 2 Dec 2015 17:20:27 +0000
Subject: [PATCH] new commands related to daq and upload tracking

---
 bin/dm-get-daq-info                           | 17 +++++++++
 .../dm/daq_web_service/cli/getDaqInfoCli.py   | 36 +++++++++++++++++++
 .../daq_web_service/cli/getUploadInfoCli.py   |  4 +--
 .../dm/daq_web_service/cli/startDaqCli.py     |  4 +--
 .../dm/daq_web_service/cli/stopDaqCli.py      | 14 +++++---
 .../dm/daq_web_service/cli/uploadCli.py       |  4 +--
 6 files changed, 69 insertions(+), 10 deletions(-)
 create mode 100755 bin/dm-get-daq-info
 create mode 100755 src/python/dm/daq_web_service/cli/getDaqInfoCli.py

diff --git a/bin/dm-get-daq-info b/bin/dm-get-daq-info
new file mode 100755
index 00000000..322caa3b
--- /dev/null
+++ b/bin/dm-get-daq-info
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# Run command
+
+if [ -z $DM_ROOT_DIR ]; then
+    cd `dirname $0` && myDir=`pwd`
+    setupFile=$myDir/../setup.sh
+    if [ ! -f $setupFile ]; then
+        echo "Cannot find setup file: $setupFile"
+        exit 1
+    fi
+    source $setupFile > /dev/null
+fi
+
+$DM_ROOT_DIR/src/python/dm/daq_web_service/cli/getDaqInfoCli.py $@
+
+
diff --git a/src/python/dm/daq_web_service/cli/getDaqInfoCli.py b/src/python/dm/daq_web_service/cli/getDaqInfoCli.py
new file mode 100755
index 00000000..4361c6d2
--- /dev/null
+++ b/src/python/dm/daq_web_service/cli/getDaqInfoCli.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+
+from daqWebServiceSessionCli import DaqWebServiceSessionCli
+from dm.daq_web_service.api.experimentRestApi import ExperimentRestApi
+from dm.common.exceptions.invalidRequest import InvalidRequest
+
+class GetDaqInfoCli(DaqWebServiceSessionCli):
+    def __init__(self):
+        DaqWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
+        self.addOption('', '--id', dest='id', help='Daq id.')
+
+    def checkArgs(self):
+        if self.options.id is None:
+            raise InvalidRequest('Daq id must be provided.')
+
+    def getId(self):
+        return self.options.id
+
+    def runCommand(self):
+        self.parseArgs(usage="""
+    dm-get-daq-info --id=ID
+
+Description:
+    Retrieves detailed information for the specified data acquisition.
+        """)
+        self.checkArgs()
+        api = ExperimentRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
+        daqInfo = api.getDaqInfo(self.getId())
+        print daqInfo.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
+
+#######################################################################
+# Run command.
+if __name__ == '__main__':
+    cli = GetDaqInfoCli()
+    cli.run()
+
diff --git a/src/python/dm/daq_web_service/cli/getUploadInfoCli.py b/src/python/dm/daq_web_service/cli/getUploadInfoCli.py
index 6900caba..ca3a4a29 100755
--- a/src/python/dm/daq_web_service/cli/getUploadInfoCli.py
+++ b/src/python/dm/daq_web_service/cli/getUploadInfoCli.py
@@ -18,10 +18,10 @@ class GetUploadInfoCli(DaqWebServiceSessionCli):
 
     def runCommand(self):
         self.parseArgs(usage="""
-    dm-get-upload-status --id=ID
+    dm-get-upload-info --id=ID
 
 Description:
-    Retrieves detailed information for a given data upload.
+    Retrieves detailed information for the specified data upload id.
         """)
         self.checkArgs()
         api = ExperimentRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
diff --git a/src/python/dm/daq_web_service/cli/startDaqCli.py b/src/python/dm/daq_web_service/cli/startDaqCli.py
index a88cca0f..aac21b57 100755
--- a/src/python/dm/daq_web_service/cli/startDaqCli.py
+++ b/src/python/dm/daq_web_service/cli/startDaqCli.py
@@ -35,8 +35,8 @@ Description:
         self.checkArgs()
         api = ExperimentRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
         daqInfo = self.splitArgsIntoDict()
-        experiment = api.startDaq(self.getExperimentName(), self.getDataDirectory(), daqInfo=daqInfo)
-        print experiment.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
+        daqInfo = api.startDaq(self.getExperimentName(), self.getDataDirectory(), daqInfo=daqInfo)
+        print daqInfo.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
 
 #######################################################################
 # Run command.
diff --git a/src/python/dm/daq_web_service/cli/stopDaqCli.py b/src/python/dm/daq_web_service/cli/stopDaqCli.py
index 892b2d78..6310a316 100755
--- a/src/python/dm/daq_web_service/cli/stopDaqCli.py
+++ b/src/python/dm/daq_web_service/cli/stopDaqCli.py
@@ -8,25 +8,31 @@ class StopDaqCli(DaqWebServiceSessionCli):
     def __init__(self):
         DaqWebServiceSessionCli.__init__(self)
         self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
+        self.addOption('', '--data-directory', dest='dataDirectory', help='Experiment data directory.')
 
     def checkArgs(self):
         if self.options.experimentName is None:
             raise InvalidRequest('Experiment name must be provided.')
+        if self.options.dataDirectory is None:
+            raise InvalidRequest('Experiment data directory must be provided.')
 
     def getExperimentName(self):
         return self.options.experimentName
 
+    def getDataDirectory(self):
+        return self.options.dataDirectory
+
     def runCommand(self):
         self.parseArgs(usage="""
-    dm-stop-daq --experiment=EXPERIMENTNAME
+    dm-stop-daq --experiment=EXPERIMENTNAME --data-directory=DATADIRECTORY
 
 Description:
-    Stop DAQ for a given experiment. 
+    Stop DAQ for a given experiment and data directory.
         """)
         self.checkArgs()
         api = ExperimentRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
-        experiment = api.stopDaq(self.getExperimentName())
-        print experiment.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
+        daqInfo = api.stopDaq(self.getExperimentName(), self.getDataDirectory())
+        print daqInfo.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
 
 #######################################################################
 # Run command.
diff --git a/src/python/dm/daq_web_service/cli/uploadCli.py b/src/python/dm/daq_web_service/cli/uploadCli.py
index dca19450..0b62bb03 100755
--- a/src/python/dm/daq_web_service/cli/uploadCli.py
+++ b/src/python/dm/daq_web_service/cli/uploadCli.py
@@ -36,8 +36,8 @@ Description:
         self.checkArgs()
         api = ExperimentRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
         daqInfo = self.splitArgsIntoDict()
-        experiment = api.upload(self.getExperimentName(), self.getDataDirectory(), daqInfo=daqInfo)
-        print experiment.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
+        uploadInfo = api.upload(self.getExperimentName(), self.getDataDirectory(), daqInfo=daqInfo)
+        print uploadInfo.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
 
 #######################################################################
 # Run command.
-- 
GitLab