Newer
Older
#!/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 dm.common.objects.experimentType import ExperimentType
from dsRestApi import DsRestApi
class ExperimentDsApi(DsRestApi):
def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
DsRestApi.__init__(self, username, password, host, port, protocol)
@DsRestApi.execute
def getExperimentTypes(self):
url = '%s/experimentTypes' % (self.getContextRoot())
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, ExperimentType)
@DsRestApi.execute
def getExperiments(self):
url = '%s/experiments' % (self.getContextRoot())
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, Experiment)
@DsRestApi.execute
def getExperimentsByStation(self, stationName):
url = '%s/experimentsByStation/%s' % (self.getContextRoot(), stationName)
if not stationName:
raise InvalidRequest('Experiment station name must be provided.')
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, Experiment)
@DsRestApi.execute
def getExperimentByName(self, name):
url = '%s/experimentsByName/%s' % (self.getContextRoot(), name)
if name is None or not len(name):
raise InvalidRequest('Experiment name must be provided.')
responseDict = self.sendSessionRequest(url=url, method='GET')
return Experiment(responseDict)
@DsRestApi.execute
def getExperimentById(self, id):
url = '%s/experimentsById/%s' % (self.getContextRoot(), id)
if id is None:
raise InvalidRequest('Experiment id must be provided.')
responseDict = self.sendSessionRequest(url=url, method='GET')
return Experiment(responseDict)
@DsRestApi.execute
def startExperiment(self, name):
url = '%s/experiments/start' % (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='PUT')
return Experiment(responseDict)
@DsRestApi.execute
def updateExperiment(self, name):
url = '%s/experiments/update' % (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='PUT')
return Experiment(responseDict)
@DsRestApi.execute
def stopExperiment(self, name):
url = '%s/experiments/stop' % (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='PUT')
return Experiment(responseDict)
@DsRestApi.execute
def addExperiment(self, name, stationName, typeName, description, startDate, endDate):
url = '%s/experiments' % (self.getContextRoot())
raise InvalidRequest('Experiment name must be provided.')
url += '?name=%s' % Encoder.encode(name)
if not stationName:
raise InvalidRequest('Experiment station name must be provided.')
url += '&stationName=%s' % Encoder.encode(stationName)
if not typeName:
raise InvalidRequest('Experiment type must be provided.')
url += '&typeName=%s' % Encoder.encode(typeName)
if description is not None:
url += '&description=%s' % Encoder.encode(description)
Barbara B. Frosik
committed
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)
#######################################################################
# Testing.
if __name__ == '__main__':
api = ExperimentDsApi('sveseli', 'sveseli', 'zagreb.svdev.net', 33336, 'http')
print api.startExperiment('experiment1')