Skip to content
Snippets Groups Projects
Forked from DM / dm-docs
261 commits behind, 260 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
addExperimentCli.py 1.73 KiB
#!/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('', '--name', dest='name', help='Experiment name.')
        self.addOption('', '--type-id', dest='typeId', help='Experiment type id.')
        self.addOption('', '--description', dest='description', help='Experiment description.')

    def checkArgs(self):
        if self.options.name is None:
            raise InvalidRequest('Experiment name must be provided.')
        if self.options.typeId is None:
            raise InvalidRequest('Experiment type id must be provided.')


    def getName(self):
        return self.options.name

    def getTypeId(self):
        return self.options.typeId

    def getDescription(self):
        return self.options.description

    def runCommand(self):
        self.parseArgs(usage="""
    dm-add-experiment --name=NAME --type-id=TYPEID
        [--description=DESCRIPTION]

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())
        print experiment.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())

#######################################################################
# Run command.
if __name__ == '__main__':
    cli = AddExperimentCli()
    cli.run()