Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/usr/bin/env python
import os
import urllib
import json
from dm.common.utility.encoder import Encoder
from dm.common.exceptions.dmException import DmException
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.objects.datasetMetadata import DatasetMetadata
from dm.common.objects.fileMetadata import FileMetadata
from catRestApi import CatRestApi
class DatasetRestApi(CatRestApi):
def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
CatRestApi.__init__(self, username, password, host, port, protocol)
@CatRestApi.execute
def addExperimentDataset(self, datasetInfo):
experimentName = datasetInfo.get('experimentName')
if not experimentName:
raise InvalidRequest('Dataset metadata must contain experimentName key.')
datasetName = datasetInfo.get('datasetName')
if not datasetName:
raise InvalidRequest('Dataset metadata must contain datasetName key.')
url = '%s/datasetsByExperiment/%s/%s' % (self.getContextRoot(), experimentName, datasetName)
url += '?datasetInfo=%s' % (Encoder.encode(json.dumps(datasetInfo)))
responseData = self.sendSessionRequest(url=url, method='POST')
return DatasetMetadata(responseData)
@CatRestApi.execute
def updateExperimentDataset(self, datasetInfo):
experimentName = datasetInfo.get('experimentName')
if not experimentName:
raise InvalidRequest('Dataset metadata must contain experimentName key.')
datasetName = datasetInfo.get('datasetName')
if not datasetName:
raise InvalidRequest('Dataset metadata must contain datasetName key.')
url = '%s/datasetsByExperiment/%s/%s' % (self.getContextRoot(), experimentName, datasetName)
url += '?datasetInfo=%s' % (Encoder.encode(json.dumps(datasetInfo)))
responseData = self.sendSessionRequest(url=url, method='PUT')
return DatasetMetadata(responseData)
@CatRestApi.execute
def updateDatasetById(self, datasetInfo):
id = datasetInfo.get('id')
if not id:
raise InvalidRequest('Dataset metadata must contain id key.')
url = '%s/datasets/%s' % (self.getContextRoot(), id)
url += '?datasetInfo=%s' % (Encoder.encode(json.dumps(datasetInfo)))
responseData = self.sendSessionRequest(url=url, method='PUT')
return DatasetMetadata(responseData)
@CatRestApi.execute
def getDatasets(self, queryDict={}):
url = '%s/datasets' % (self.getContextRoot())
url += '?queryDict=%s' % (Encoder.encode(json.dumps(queryDict)))
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, DatasetMetadata)
@CatRestApi.execute
def getExperimentDatasets(self, experimentName, queryDict={}):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
url = '%s/datasetsByExperiment/%s' % (self.getContextRoot(), experimentName)
url += '?queryDict=%s' % (Encoder.encode(json.dumps(queryDict)))
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, DatasetMetadata)
@CatRestApi.execute
def getDatasetById(self, id):
if not id:
raise InvalidRequest('Invalid dataset id provided.')
url = '%s/datasets/%s' % (self.getContextRoot(), id)
responseData = self.sendSessionRequest(url=url, method='GET')
return DatasetMetadata(responseData)
@CatRestApi.execute
def getExperimentDataset(self, experimentName, datasetName):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not datasetName:
raise InvalidRequest('Invalid dataset name provided.')
url = '%s/datasetsByExperiment/%s/%s' % (self.getContextRoot(), experimentName, datasetName)
responseData = self.sendSessionRequest(url=url, method='GET')
return DatasetMetadata(responseData)
@CatRestApi.execute
def getExperimentDatasetFiles(self, experimentName, datasetName):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not datasetName:
raise InvalidRequest('Invalid dataset name provided.')
url = '%s/filesByExperimentDataset/%s/%s' % (self.getContextRoot(), experimentName, datasetName)
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, FileMetadata)
#######################################################################
# Testing.
if __name__ == '__main__':
api = DatasetRestApi()
print api.getDatasets()
print api.getDatasetById('556de0059e058b0ef4c4413b')
print api.getDatasetByName('xyz-001')
import time
t = long(time.time())
datasetInfo = {
'datasetName' : 'sv-%s' % t,
'experimentName' : 'exp1',
'power' : 12,
'powerUnits' : 'kW',
'force' : 15,
'forceUnits' : 'N',
'cKey' : {'a' : 1, 'b' : 'B', 'c' : 2.2},
}
datasetMetadata = api.addDatasetByName(datasetInfo)
print '\nADDED DATASET:\n', datasetMetadata
datasetInfo['updateKey'] = 'here is desc'
datasetMetadata = api.updateDatasetByName(datasetInfo)
print '\nUPDATED DATASET:\n', datasetMetadata
datasetInfo['updateKey2'] = 'new desc'
datasetInfo['id'] = datasetMetadata.get('id')
datasetMetadata = api.updateDatasetById(datasetInfo)
print '\nUPDATED DATASET:\n', datasetMetadata
queryDict = { 'experimentName' : 'exp2' }
print '\nQUERY DATASETS:\n', api.getDatasets(queryDict=queryDict)