Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • DM/dm-docs
  • hammonds/dm-docs
  • hparraga/dm-docs
3 results
Show changes
Showing
with 842 additions and 0 deletions
__version__ = "Development Snapshot"
#!/usr/bin/env python
from dm.common.api.dmRestApi import DmRestApi
from dm.common.utility.configurationManager import ConfigurationManager
class CatRestApi(DmRestApi):
""" Base CAT DM REST api class. """
def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
if host == None:
host = ConfigurationManager.getInstance().getCatWebServiceHost()
if port == None:
port = ConfigurationManager.getInstance().getCatWebServicePort()
DmRestApi.__init__(self, username, password, host, port, protocol)
#######################################################################
# Testing.
if __name__ == '__main__':
pass
#!/usr/bin/env python
from dm.common.utility.loggingManager import LoggingManager
from dm.common.utility.configurationManager import ConfigurationManager
class CatRestApiFactory:
CONFIG_SECTION_NAME = 'CatRestApiFactory'
USERNAME_KEY = 'username'
PASSWORD_FILE_KEY = 'passwordfile'
HOST_KEY = 'host'
PORT_KEY = 'port'
PROTOCOL_KEY = 'protocol'
__logger = None
__username = None
__password = None
__host = None
__port = None
__protocol = None
@classmethod
def getLogger(cls):
if cls.__logger is None:
cls.__logger = LoggingManager.getInstance().getLogger(cls.__name__)
return cls.__logger
@classmethod
def __getConfiguration(cls):
if cls.__username is None:
cls.__username = ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.USERNAME_KEY)
cls.__password = open(ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.PASSWORD_FILE_KEY)).read().strip()
cls.__host = ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.HOST_KEY)
cls.__port = ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.PORT_KEY)
cls.__protocol = ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.PROTOCOL_KEY)
return (cls.__username, cls.__password, cls.__host, cls.__port, cls.__protocol)
@classmethod
def getFileRestApi(cls):
from userRestApi import FileRestApi
(username, password, host, port, protocol) = cls.__getConfiguration()
api = FileRestApi(username, password, host, port, protocol)
return api
####################################################################
# Testing
if __name__ == '__main__':
pass
#!/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)
#!/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.fileMetadata import FileMetadata
from catRestApi import CatRestApi
class FileRestApi(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 addExperimentFile(self, fileInfo):
experimentName = fileInfo.get('experimentName')
if not experimentName:
raise InvalidRequest('File metadata must contain experimentName key.')
experimentFilePath = fileInfo.get('experimentFilePath')
if not experimentFilePath:
raise InvalidRequest('File metadata must contain experimentFilePath key.')
url = '%s/filesByExperimentAndPath/%s/%s' % (self.getContextRoot(), experimentName, Encoder.encode(experimentFilePath))
url += '?fileInfo=%s' % (Encoder.encode(json.dumps(fileInfo)))
responseData = self.sendSessionRequest(url=url, method='POST')
return FileMetadata(responseData)
@CatRestApi.execute
def updateExperimentFile(self, fileInfo):
experimentName = fileInfo.get('experimentName')
if not experimentName:
raise InvalidRequest('File metadata must contain experimentName key.')
experimentFilePath = fileInfo.get('experimentFilePath')
if not experimentFilePath:
raise InvalidRequest('File metadata must contain experimentFilePath key.')
url = '%s/filesByExperimentAndPath/%s/%s' % (self.getContextRoot(), experimentName, Encoder.encode(experimentFilePath))
url += '?fileInfo=%s' % (Encoder.encode(json.dumps(fileInfo)))
responseData = self.sendSessionRequest(url=url, method='PUT')
return FileMetadata(responseData)
@CatRestApi.execute
def updateExperimentFileById(self, fileInfo):
experimentName = fileInfo.get('experimentName')
if not experimentName:
raise InvalidRequest('File metadata must contain experimentName key.')
id = fileInfo.get('id')
if not id:
raise InvalidRequest('File metadata must contain id key.')
url = '%s/filesByExperimentAndId/%s/%s' % (self.getContextRoot(), experimentName, id)
url += '?fileInfo=%s' % (Encoder.encode(json.dumps(fileInfo)))
responseData = self.sendSessionRequest(url=url, method='PUT')
return FileMetadata(responseData)
@CatRestApi.execute
def getExperimentFiles(self, experimentName, queryDict={}):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
url = '%s/filesByExperiment/%s' % (self.getContextRoot(), experimentName)
url += '?queryDict=%s' % (Encoder.encode(json.dumps(queryDict)))
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, FileMetadata)
@CatRestApi.execute
def getExperimentFileById(self, experimentName, id):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not id:
raise InvalidRequest('Invalid file id provided.')
url = '%s/filesByExperimentAndId/%s/%s' % (self.getContextRoot(), experimentName, id)
responseData = self.sendSessionRequest(url=url, method='GET')
return FileMetadata(responseData)
@CatRestApi.execute
def getExperimentFile(self, experimentName, experimentFilePath):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not experimentFilePath:
raise InvalidRequest('Invalid experiment file path provided.')
url = '%s/filesByExperimentAndPath/%s/%s' % (self.getContextRoot(), experimentName, Encoder.encode(experimentFilePath))
responseData = self.sendSessionRequest(url=url, method='GET')
return FileMetadata(responseData)
#######################################################################
# Testing.
if __name__ == '__main__':
api = FileRestApi()
import time
t = long(time.time())
fileInfo = {
'experimentFilePath' : 'sv-%s' % t,
'experimentName' : 'exp1',
'power' : 12,
'powerUnits' : 'kW',
'force' : 15,
'forceUnits' : 'N',
'cKey' : {'a' : 1, 'b' : 'B', 'c' : 2.2},
}
fileMetadata = api.addFileByName(fileInfo)
print '\nADDED FILE:\n', fileMetadata
fileInfo['updateKey'] = 'here is desc'
fileMetadata = api.updateFileByName(fileInfo)
print '\nUPDATED FILE:\n', fileMetadata
fileInfo['updateKey2'] = 'new desc'
fileInfo['id'] = fileMetadata.get('id')
fileMetadata = api.updateFileById(fileInfo)
print '\nUPDATED FILE:\n', fileMetadata
queryDict = { 'experimentName' : 'exp2' }
print '\nQUERY FILES:\n', api.getFiles(queryDict=queryDict)
__version__ = "Development Snapshot"
#!/usr/bin/env python
from dm.cat_web_service.api.datasetRestApi import DatasetRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class AddExperimentDatasetCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--dataset', dest='datasetName', help='Dataset name.')
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
if self.options.datasetName is None:
raise InvalidRequest('Dataset name must be provided.')
def getExperimentName(self):
return self.options.experimentName
def getDatasetName(self):
return self.options.datasetName
def runCommand(self):
self.parseArgs(usage="""
dm-add-experiment-dataset --dataset=DATASETNAME --experiment=EXPERIMENTNAME
[key1:value1, key2:value2, ...]
Description:
Adds experiment dataset to the metadata catalog. All provided key/value
pairs are interpreted as dataset metadata.
""")
self.checkArgs()
api = DatasetRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
datasetInfo = self.splitArgsIntoDict()
datasetInfo['experimentName'] = self.getExperimentName()
datasetInfo['datasetName'] = self.getDatasetName()
datasetMetadata = api.addExperimentDataset(datasetInfo)
print datasetMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = AddExperimentDatasetCli()
cli.run()
#!/usr/bin/env python
from dm.cat_web_service.api.fileRestApi import FileRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class AddExperimentFileCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--file', dest='experimentFilePath', help='Experiment file path.')
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
if self.options.experimentFilePath is None:
raise InvalidRequest('Experiment file path must be provided.')
def getExperimentName(self):
return self.options.experimentName
def getExperimentFilePath(self):
return self.options.experimentFilePath
def runCommand(self):
self.parseArgs(usage="""
dm-add-experiment-file --file=EXPERIMENTFILEPATH --experiment=EXPERIMENTNAME
[key1:value1, key2:value2, ...]
Description:
Adds experiment file to the metadata catalog. All provided key/value pairs
are interpreted as file metadata.
""")
self.checkArgs()
api = FileRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
fileInfo = self.splitArgsIntoDict()
fileInfo['experimentName'] = self.getExperimentName()
fileInfo['experimentFilePath'] = self.getExperimentFilePath()
fileMetadata = api.addExperimentFile(fileInfo)
print fileMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = AddExperimentFileCli()
cli.run()
#!/usr/bin/env python
from dm.common.cli.dmRestCli import DmRestCli
from dm.common.utility.configurationManager import ConfigurationManager
class CatWebServiceCli(DmRestCli):
""" DM CAT web service cli class. """
def __init__(self, validArgCount=0):
DmRestCli.__init__(self, validArgCount)
def getDefaultServiceHost(self):
return ConfigurationManager.getInstance().getCatWebServiceHost()
def getDefaultServicePort(self):
return ConfigurationManager.getInstance().getCatWebServicePort()
#!/usr/bin/env python
from dm.common.cli.dmRestSessionCli import DmRestSessionCli
from dm.common.utility.osUtility import OsUtility
from dm.common.utility.configurationManager import ConfigurationManager
class CatWebServiceSessionCli(DmRestSessionCli):
""" DM CAT web service session cli class. """
DEFAULT_SESSION_CACHE_FILE = OsUtility.getUserHomeDir() + '/.dm/.cat.session.cache'
def __init__(self, validArgCount=0):
DmRestSessionCli.__init__(self, validArgCount)
ConfigurationManager.getInstance().setSessionCacheFile(CatWebServiceSessionCli.DEFAULT_SESSION_CACHE_FILE)
def getDefaultServiceHost(self):
return ConfigurationManager.getInstance().getCatWebServiceHost()
def getDefaultServicePort(self):
return ConfigurationManager.getInstance().getCatWebServicePort()
#!/usr/bin/env python
from dm.cat_web_service.api.datasetRestApi import DatasetRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class GetDatasetsCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
def checkArgs(self):
pass
def runCommand(self):
self.parseArgs(usage="""
dm-get-datasets
[key1:value1, key2:value2, ...]
Description:
Retrieve datasets from the metadata catalog. Only those datasets that
match provided key/value metadata pairs will be returned. If no specific
metadata key/values are requested, all experiment datasets will be
returned.
""")
self.checkArgs()
api = DatasetRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
queryDict = self.splitArgsIntoDict()
datasetMetadataList = api.getDatasets(queryDict)
for datasetMetadata in datasetMetadataList:
print datasetMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = GetDatasetsCli()
cli.run()
#!/usr/bin/env python
from dm.cat_web_service.api.datasetRestApi import DatasetRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class GetExperimentDatasetCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--dataset', dest='datasetName', help='Dataset name.')
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
if self.options.datasetName is None:
raise InvalidRequest('Dataset name must be provided.')
def getExperimentName(self):
return self.options.experimentName
def getDatasetName(self):
return self.options.datasetName
def runCommand(self):
self.parseArgs(usage="""
dm-get-experiment-dataset --dataset=DATASETNAME --experiment=EXPERIMENTNAME
Description:
Retrieve experiment dataset metadata from the catalog.
""")
self.checkArgs()
api = DatasetRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
datasetMetadata = api.getExperimentDataset(self.getExperimentName(), self.getDatasetName())
print datasetMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = GetExperimentDatasetCli()
cli.run()
#!/usr/bin/env python
from dm.cat_web_service.api.datasetRestApi import DatasetRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class GetExperimentDatasetFilesCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--dataset', dest='datasetName', help='Dataset name.')
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
if self.options.datasetName is None:
raise InvalidRequest('Dataset name must be provided.')
def getExperimentName(self):
return self.options.experimentName
def getDatasetName(self):
return self.options.datasetName
def runCommand(self):
self.parseArgs(usage="""
dm-get-experiment-dataset-files --dataset=DATASETNAME
--experiment=EXPERIMENTNAME
Description:
Retrieve experiment dataset files from the catalog.
""")
self.checkArgs()
api = DatasetRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
fileMetadataList = api.getExperimentDatasetFiles(self.getExperimentName(), self.getDatasetName())
for fileMetadata in fileMetadataList:
print fileMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = GetExperimentDatasetFilesCli()
cli.run()
#!/usr/bin/env python
from dm.cat_web_service.api.datasetRestApi import DatasetRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class GetExperimentDatasetsCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
def getExperimentName(self):
return self.options.experimentName
def runCommand(self):
self.parseArgs(usage="""
dm-get-experiment-datasets --experiment=EXPERIMENTNAME
[key1:value1, key2:value2, ...]
Description:
Retrieve experiment datasets from the metadata catalog. Only those
datasets that match provided key/value metadata pairs will be returned.
If no specific metadata key/values are requested, all experiment datasets
will be returned.
""")
self.checkArgs()
api = DatasetRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
queryDict = self.splitArgsIntoDict()
datasetMetadataList = api.getExperimentDatasets(self.getExperimentName(), queryDict)
for datasetMetadata in datasetMetadataList:
print datasetMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = GetExperimentDatasetsCli()
cli.run()
#!/usr/bin/env python
from dm.cat_web_service.api.fileRestApi import FileRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class GetExperimentFileCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--file', dest='experimentFilePath', help='Experiment file path.')
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
if self.options.experimentFilePath is None:
raise InvalidRequest('Experiment file path must be provided.')
def getExperimentName(self):
return self.options.experimentName
def getExperimentFilePath(self):
return self.options.experimentFilePath
def runCommand(self):
self.parseArgs(usage="""
dm-get-experiment-file --file=EXPERIMENTFILEPATH --experiment=EXPERIMENTNAME
Description:
Retrieve experiment file metadata from the catalog.
""")
self.checkArgs()
api = FileRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
fileMetadata = api.getExperimentFile(self.getExperimentName(), self.getExperimentFilePath())
print fileMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = GetExperimentFileCli()
cli.run()
#!/usr/bin/env python
from dm.cat_web_service.api.fileRestApi import FileRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class GetExperimentFilesCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
def getExperimentName(self):
return self.options.experimentName
def runCommand(self):
self.parseArgs(usage="""
dm-get-experiment-files --experiment=EXPERIMENTNAME
[key1:value1, key2:value2, ...]
Description:
Retrieve experiment files from the metadata catalog. Only those files that
match provided key/value metadata pairs will be returned. If no specific
metadata key/values are requested, all experiment files will be returned.
""")
self.checkArgs()
api = FileRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
queryDict = self.splitArgsIntoDict()
fileMetadataList = api.getExperimentFiles(self.getExperimentName(), queryDict)
for fileMetadata in fileMetadataList:
print fileMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = GetExperimentFilesCli()
cli.run()
#!/usr/bin/env python
from dm.cat_web_service.api.datasetRestApi import DatasetRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class UpdateExperimentDatasetCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--dataset', dest='datasetName', help='Dataset name.')
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
if self.options.datasetName is None:
raise InvalidRequest('Dataset name must be provided.')
def getExperimentName(self):
return self.options.experimentName
def getDatasetName(self):
return self.options.datasetName
def runCommand(self):
self.parseArgs(usage="""
dm-update-experiment-dataset --dataset=DATASETNAME
--experiment=EXPERIMENTNAME
[key1:value1, key2:value2, ...]
Description:
Updates experiment dataset in the metadata catalog. All provided key/value
pairs are interpreted as dataset metadata, and will be merged with existing
metadata, overwriting values for existing keys, and adding values for
new keys.
""")
self.checkArgs()
api = DatasetRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
datasetInfo = self.splitArgsIntoDict()
datasetInfo['experimentName'] = self.getExperimentName()
datasetInfo['datasetName'] = self.getDatasetName()
datasetMetadata = api.updateExperimentDataset(datasetInfo)
print datasetMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = UpdateExperimentDatasetCli()
cli.run()
#!/usr/bin/env python
from dm.cat_web_service.api.fileRestApi import FileRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class UpdateExperimentFileCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--file', dest='experimentFilePath', help='Experiment file path.')
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
if self.options.experimentFilePath is None:
raise InvalidRequest('Experiment file path must be provided.')
def getExperimentName(self):
return self.options.experimentName
def getExperimentFilePath(self):
return self.options.experimentFilePath
def runCommand(self):
self.parseArgs(usage="""
dm-update-experiment-file --file=EXPERIMENTFILEPATH --experiment=EXPERIMENTNAME
[key1:value1, key2:value2, ...]
Description:
Updates experiment file in the metadata catalog. All provided key/value
pairs are interpreted as file metadata, and will be merged with existing
metadata, overwriting values for existing keys, and adding values for
new keys.
""")
self.checkArgs()
api = FileRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
fileInfo = self.splitArgsIntoDict()
fileInfo['experimentName'] = self.getExperimentName()
fileInfo['experimentFilePath'] = self.getExperimentFilePath()
fileMetadata = api.updateExperimentFile(fileInfo)
print fileMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = UpdateExperimentFileCli()
cli.run()
__version__ = "Development Snapshot"
#!/usr/bin/env python
#
# DM CAT Web Service
#
from dm.common.service.dmRestWebServiceBase import DmRestWebServiceBase
from dm.common.utility.dmModuleManager import DmModuleManager
from dm.common.utility.configurationManager import ConfigurationManager
from catWebServiceRouteMapper import CatWebServiceRouteMapper
class CatWebService(DmRestWebServiceBase):
def __init__(self):
DmRestWebServiceBase.__init__(self, CatWebServiceRouteMapper)
def initDmModules(self):
self.logger.debug('Initializing dm modules')
# Add modules that will be started.
moduleManager = DmModuleManager.getInstance()
self.logger.debug('Initialized dm modules')
def getDefaultServerHost(self):
return ConfigurationManager.getInstance().getServiceHost()
def getDefaultServerPort(self):
return ConfigurationManager.getInstance().getServicePort()
####################################################################
# Run service
if __name__ == '__main__':
ConfigurationManager.getInstance().setServiceName('cat-web-service')
service = CatWebService();
service.run()