#!/usr/bin/env python from dm.ds_web_service.api.experimentRestApi import ExperimentRestApi from dm.common.exceptions.invalidRequest import InvalidRequest from dsWebServiceSessionCli import DsWebServiceSessionCli class AddExperimentCli(DsWebServiceSessionCli): def __init__(self): DsWebServiceSessionCli.__init__(self) self.addOption('', '--experiment', dest='experimentName', help='Experiment name.') self.addOption('', '--type-id', dest='typeId', help='Experiment type id.') self.addOption('', '--description', dest='description', help='Experiment description.') self.addOption('', '--start-date', dest='startDate', help='Experiment start date in format DD-MMM-YY.') self.addOption('', '--end-date', dest='endDate', help='Experiment end date in format DD-MMM-YY.') def checkArgs(self): if self.options.experimentName is None: raise InvalidRequest('Experiment name must be provided.') if self.options.typeId is None: raise InvalidRequest('Experiment type id must be provided.') def getExperimentName(self): return self.options.experimentName def getTypeId(self): return self.options.typeId 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 --experiment=EXPERIMENTNAME --type-id=TYPEID [--description=DESCRIPTION] [--start-date=STARTDATE] [--end-date=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.getExperimentName(), self.getTypeId(), self.getDescription(), self.getStartDate(), self.getEndDate()) print experiment.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat()) ####################################################################### # Run command. if __name__ == '__main__': cli = AddExperimentCli() cli.run()