diff --git a/src/python/dm/daq_web_service/service/experimentRouteDescriptor.py b/src/python/dm/daq_web_service/service/experimentRouteDescriptor.py index 84d18d509ee3bcc4f6beac72750a75dc6c1b4792..7fc1ae82498dc43ba177451b8db12956d5e21557 100755 --- a/src/python/dm/daq_web_service/service/experimentRouteDescriptor.py +++ b/src/python/dm/daq_web_service/service/experimentRouteDescriptor.py @@ -22,7 +22,7 @@ class ExperimentRouteDescriptor: # Start experiment daq { 'name' : 'startDaq', - 'path' : '%s/experiments/startDaq' % contextRoot, + 'path' : '%s/experimentsByName/:(experimentName)/startDaq/:(dataDirectory)' % contextRoot, 'controller' : experimentSessionController, 'action' : 'startDaq', 'method' : ['POST'] @@ -31,16 +31,25 @@ class ExperimentRouteDescriptor: # Stop experiment daq { 'name' : 'stopDaq', - 'path' : '%s/experiments/stopDaq' % contextRoot, + 'path' : '%s/experimentsByName/:(experimentName)/stopDaq/:(dataDirectory)' % contextRoot, 'controller' : experimentSessionController, 'action' : 'stopDaq', 'method' : ['POST'] }, + # Get daq info + { + 'name' : 'getDaqInfo', + 'path' : '%s/experimentDaqs/:(id)' % contextRoot, + 'controller' : experimentSessionController, + 'action' : 'getDaqInfo', + 'method' : ['GET'] + }, + # Upload experiment data { 'name' : 'upload', - 'path' : '%s/experiments/upload' % contextRoot, + 'path' : '%s/experimentsByName/:(experimentName)/upload/:(dataDirectory)' % contextRoot, 'controller' : experimentSessionController, 'action' : 'upload', 'method' : ['POST'] @@ -49,7 +58,7 @@ class ExperimentRouteDescriptor: # Get upload info { 'name' : 'getUploadInfo', - 'path' : '%s/experiments/upload/:(id)' % contextRoot, + 'path' : '%s/experimentUploads/:(id)' % contextRoot, 'controller' : experimentSessionController, 'action' : 'getUploadInfo', 'method' : ['GET'] diff --git a/src/python/dm/daq_web_service/service/experimentSessionController.py b/src/python/dm/daq_web_service/service/experimentSessionController.py index 6878b62ebc45ce9fe6f37aa432d1d63612403d53..ec8c578b8427e22db8f8edfb50ea231dedfc45cf 100755 --- a/src/python/dm/daq_web_service/service/experimentSessionController.py +++ b/src/python/dm/daq_web_service/service/experimentSessionController.py @@ -19,12 +19,10 @@ class ExperimentSessionController(DmSessionController): @cherrypy.expose @DmSessionController.require(DmSessionController.isAdministrator()) @DmSessionController.execute - def startDaq(self, **kwargs): - experimentName = kwargs.get('experimentName') + def startDaq(self, experimentName, dataDirectory, **kwargs): if not experimentName: raise InvalidRequest('Missing experiment name.') experimentName = Encoder.decode(experimentName) - dataDirectory = kwargs.get('dataDirectory') if not dataDirectory: raise InvalidRequest('Missing data directory.') dataDirectory = Encoder.decode(dataDirectory) @@ -32,9 +30,6 @@ class ExperimentSessionController(DmSessionController): encodedDaqInfo = kwargs.get('daqInfo') if encodedDaqInfo is not None: daqInfo = json.loads(Encoder.decode(encodedDaqInfo)) - else: - daqInfo['experimentName'] = experimentName - daqInfo['dataDirectory'] = dataDirectory response = self.experimentSessionControllerImpl.startDaq(experimentName, dataDirectory, daqInfo).getFullJsonRep() self.logger.debug('Returning: %s' % response) return response @@ -42,29 +37,40 @@ class ExperimentSessionController(DmSessionController): @cherrypy.expose @DmSessionController.require(DmSessionController.isAdministrator()) @DmSessionController.execute - def stopDaq(self, **kwargs): - experimentName = kwargs.get('experimentName') + def stopDaq(self, experimentName, dataDirectory, **kwargs): if not experimentName: raise InvalidRequest('Missing experiment name.') experimentName = Encoder.decode(experimentName) - response = self.experimentSessionControllerImpl.stopDaq(experimentName).getFullJsonRep() + if not dataDirectory: + raise InvalidRequest('Missing data directory.') + dataDirectory = Encoder.decode(dataDirectory) + response = self.experimentSessionControllerImpl.stopDaq(experimentName, dataDirectory).getFullJsonRep() self.logger.debug('Returning: %s' % response) return response @cherrypy.expose @DmSessionController.require(DmSessionController.isAdministrator()) @DmSessionController.execute - def upload(self, **kwargs): - encodedDaqInfo = kwargs.get('daqInfo') - if not encodedDaqInfo: - raise InvalidRequest('Invalid DAQ info provided.') - daqInfo = json.loads(Encoder.decode(encodedDaqInfo)) + def getDaqInfo(self, id, **kwargs): + response = self.experimentSessionControllerImpl.getDaqInfo(id).getFullJsonRep() + self.logger.debug('Returning: %s' % response) + return response - if not daqInfo.has_key('experimentName'): - raise InvalidRequest('Experiment name is missing.') - if not daqInfo.has_key('dataDirectory'): - raise InvalidRequest('Data directory is missing.') - response = self.experimentSessionControllerImpl.upload(daqInfo).getFullJsonRep() + @cherrypy.expose + @DmSessionController.require(DmSessionController.isAdministrator()) + @DmSessionController.execute + def upload(self, experimentName, dataDirectory, **kwargs): + if not experimentName: + raise InvalidRequest('Missing experiment name.') + experimentName = Encoder.decode(experimentName) + if not dataDirectory: + raise InvalidRequest('Missing data directory.') + dataDirectory = Encoder.decode(dataDirectory) + daqInfo = {} + encodedDaqInfo = kwargs.get('daqInfo') + if encodedDaqInfo: + daqInfo = json.loads(Encoder.decode(encodedDaqInfo)) + response = self.experimentSessionControllerImpl.upload(experimentName, dataDirectory, daqInfo).getFullJsonRep() self.logger.debug('Returning: %s' % response) return response