From 60f9572e4e04e2d670dec853ad6d6a15d05bd5d7 Mon Sep 17 00:00:00 2001 From: "Barbara B. Frosik" <bfrosik@aps.anl.gov> Date: Mon, 14 Sep 2015 19:51:05 +0000 Subject: [PATCH] modified storage service python code to include start/end dates when adding experiment --- sbin/create_dm_db.sh | 1 + .../dm/ds_web_service/api/experimentRestApi.py | 6 +++++- .../dm/ds_web_service/cli/addExperimentCli.py | 12 ++++++++++-- .../service/experimentSessionController.py | 8 +++++++- .../impl/experimentSessionControllerImpl.py | 14 +++++++------- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/sbin/create_dm_db.sh b/sbin/create_dm_db.sh index e2bd07b2..319b532f 100755 --- a/sbin/create_dm_db.sh +++ b/sbin/create_dm_db.sh @@ -221,3 +221,4 @@ $PG_CONTROL_SCRIPT restart echo "Database $DM_DB_NAME created successfully" echo + diff --git a/src/python/dm/ds_web_service/api/experimentRestApi.py b/src/python/dm/ds_web_service/api/experimentRestApi.py index b2438352..155a679e 100755 --- a/src/python/dm/ds_web_service/api/experimentRestApi.py +++ b/src/python/dm/ds_web_service/api/experimentRestApi.py @@ -61,7 +61,7 @@ class ExperimentRestApi(DsRestApi): return Experiment(responseDict) @DsRestApi.execute - def addExperiment(self, name, experimentTypeId, description): + def addExperiment(self, name, experimentTypeId, description, startDate, endDate): url = '%s/experiments' % (self.getContextRoot()) if name is None or not len(name): raise InvalidRequest('Experiment name must be provided.') @@ -71,6 +71,10 @@ class ExperimentRestApi(DsRestApi): url += '&experimentTypeId=%s' % experimentTypeId if description is not None: url += '&description=%s' % Encoder.encode(description) + if startDate is not None: + url += '&startDate=%s' % Encoder.encode(startDate) + if endDate is not None: + url += '&endDate=%s' % Encoder.encode(endDate) responseDict = self.sendSessionRequest(url=url, method='POST') return Experiment(responseDict) diff --git a/src/python/dm/ds_web_service/cli/addExperimentCli.py b/src/python/dm/ds_web_service/cli/addExperimentCli.py index 0b4cf9e0..d1bc84ca 100755 --- a/src/python/dm/ds_web_service/cli/addExperimentCli.py +++ b/src/python/dm/ds_web_service/cli/addExperimentCli.py @@ -10,6 +10,8 @@ class AddExperimentCli(DsWebServiceSessionCli): self.addOption('', '--name', dest='name', help='Experiment name.') self.addOption('', '--type-id', dest='typeId', help='Experiment type id.') self.addOption('', '--description', dest='description', help='Experiment description.') + self.addOption('', '--startDate', dest='startDate', help='Experiment start date in format (15-AUG-15).') + self.addOption('', '--endDate', dest='endDate', help='Experiment end date in format (15-AUG-15).') def checkArgs(self): if self.options.name is None: @@ -27,17 +29,23 @@ class AddExperimentCli(DsWebServiceSessionCli): def getDescription(self): return self.options.description + def getStartDate(self): + return self.options.startDate + + def getEndDate(self): + return self.options.endDate + def runCommand(self): self.parseArgs(usage=""" dm-add-experiment --name=NAME --type-id=TYPEID - [--description=DESCRIPTION] + [--description=DESCRIPTION] [--startDate=STARTDATE] [--endDate=ENDDATE] Description: Add new experiment to the DM database. """) self.checkArgs() api = ExperimentRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol()) - experiment = api.addExperiment(self.getName(), self.getTypeId(), self.getDescription()) + experiment = api.addExperiment(self.getName(), self.getTypeId(), self.getDescription(), self.getStartDate(), self.getEndDate()) print experiment.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat()) ####################################################################### diff --git a/src/python/dm/ds_web_service/service/experimentSessionController.py b/src/python/dm/ds_web_service/service/experimentSessionController.py index 2fbf98ac..a1d664ab 100755 --- a/src/python/dm/ds_web_service/service/experimentSessionController.py +++ b/src/python/dm/ds_web_service/service/experimentSessionController.py @@ -57,7 +57,13 @@ class ExperimentSessionController(DmSessionController): description = kwargs.get('description') if description is not None: description = Encoder.decode(description) - response = self.experimentSessionControllerImpl.addExperiment(name, experimentTypeId, description).getFullJsonRep() + startDate = kwargs.get('startDate') + if startDate is not None: + startDate = Encoder.decode(startDate) + endDate = kwargs.get('endDate') + if endDate is not None: + endDate = Encoder.decode(endDate) + response = self.experimentSessionControllerImpl.addExperiment(name, experimentTypeId, description, startDate, endDate).getFullJsonRep() self.logger.debug('Returning: %s' % response) return response diff --git a/src/python/dm/ds_web_service/service/impl/experimentSessionControllerImpl.py b/src/python/dm/ds_web_service/service/impl/experimentSessionControllerImpl.py index 4ec9b5c5..d814ccc2 100755 --- a/src/python/dm/ds_web_service/service/impl/experimentSessionControllerImpl.py +++ b/src/python/dm/ds_web_service/service/impl/experimentSessionControllerImpl.py @@ -37,22 +37,22 @@ class ExperimentSessionControllerImpl(DmObjectManager): ExperimentManager.getInstance().updateExperimentWithStorageDataDirectory(experiment) return experiment - def addExperiment(self, name, experimentTypeId, description): - experiment = self.experimentDbApi.addExperiment(name, experimentTypeId, description) + def addExperiment(self, name, experimentTypeId, description, startDate, endDate): + experiment = self.experimentDbApi.addExperiment(name, experimentTypeId, description, startDate, endDate) return experiment def startExperiment(self, name): experiment = self.experimentDbApi.getExperimentWithUsers(name) - if experiment.get('startDate') is None: - experiment2 = self.experimentDbApi.setExperimentStartDateToNow(name) - experiment['startDate'] = experiment2['startDate'] + #if experiment.get('startDate') is None: + # experiment2 = self.experimentDbApi.setExperimentStartDateToNow(name) + # experiment['startDate'] = experiment2['startDate'] ExperimentManager.getInstance().createExperimentDataDirectory(experiment) return experiment def stopExperiment(self, name): experiment = self.experimentDbApi.getExperimentByName(name) - if experiment.get('endDate') is None: - experiment = self.experimentDbApi.setExperimentEndDateToNow(name) + #if experiment.get('endDate') is None: + # experiment = self.experimentDbApi.setExperimentEndDateToNow(name) ExperimentManager.getInstance().updateExperimentWithStorageDataDirectory(experiment) return experiment -- GitLab