Skip to content
Snippets Groups Projects
Forked from DM / dm-docs
261 commits behind, 178 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
experimentRestApi.py 2.28 KiB
#!/usr/bin/env python

import os
import urllib

from dm.common.utility.encoder import Encoder
from dm.common.exceptions.dmException import DmException
from dm.common.objects.experiment import Experiment
from daqRestApi import DaqRestApi

class ExperimentRestApi(DaqRestApi):
    
    def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
        DaqRestApi.__init__(self, username, password, host, port, protocol)

    @DaqRestApi.execute
    def startDaq(self, name, dataDirectory):
        url = '%s/experiments/startDaq' % (self.getContextRoot())
        if name is None or not len(name):
            raise InvalidRequest('Experiment name must be provided.')
        url += '?name=%s' % Encoder.encode(name)
        if dataDirectory is None or not len(dataDirectory):
            raise InvalidRequest('Experiment data directory must be provided.')
        url += '&dataDirectory=%s' % Encoder.encode(dataDirectory)
        responseDict = self.sendSessionRequest(url=url, method='POST')
        return Experiment(responseDict)

    @DaqRestApi.execute
    def stopDaq(self, name):
        url = '%s/experiments/stopDaq' % (self.getContextRoot())
        if name is None or not len(name):
            raise InvalidRequest('Experiment name must be provided.')
        url += '?name=%s' % Encoder.encode(name)
        responseDict = self.sendSessionRequest(url=url, method='POST')
        return Experiment(responseDict)

    @DaqRestApi.execute
    def startUpload(self, name, dataDirectory):
        url = '%s/experiments/startUpload' % (self.getContextRoot())
        if name is None or not len(name):
            raise InvalidRequest('Experiment name must be provided.')
        url += '?name=%s' % Encoder.encode(name)
        if dataDirectory is None or not len(dataDirectory):
            raise InvalidRequest('Experiment data directory must be provided.')
        url += '&dataDirectory=%s' % Encoder.encode(dataDirectory)
        responseDict = self.sendSessionRequest(url=url, method='POST')
        return Experiment(responseDict)

#######################################################################
# Testing.

if __name__ == '__main__':
    api = ExperimentRestApi('sveseli', 'sveseli', 'zagreb.svdev.net', 33336, 'http')
    print api.startDaq('experiment1', '/tmp/data/experiment1')