From dc9bf74239627b5dd5183f0138e215aca8e653b8 Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Fri, 6 May 2016 19:06:43 +0000 Subject: [PATCH] reworked catalogging to use collection on a per experiment basis; removed generic apis for retrieving files --- bin/dm-get-files | 18 -------- .../dm/cat_web_service/api/fileRestApi.py | 29 ++++++------- .../cli/getExperimentFileCli.py | 42 ------------------- .../dm/cat_web_service/cli/getFilesCli.py | 36 ---------------- 4 files changed, 12 insertions(+), 113 deletions(-) delete mode 100755 bin/dm-get-files delete mode 100755 src/python/dm/cat_web_service/cli/getExperimentFileCli.py delete mode 100755 src/python/dm/cat_web_service/cli/getFilesCli.py diff --git a/bin/dm-get-files b/bin/dm-get-files deleted file mode 100755 index a429f8fb..00000000 --- a/bin/dm-get-files +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -# Run command - -if [ -z $DM_ROOT_DIR ]; then - cd `dirname $0` && myDir=`pwd` - setupFile=$myDir/../setup.sh - if [ ! -f $setupFile ]; then - echo "Cannot find setup file: $setupFile" - exit 1 - fi - source $setupFile > /dev/null -fi -source dm_command_setup.sh - -eval "$DM_ROOT_DIR/src/python/dm/cat_web_service/cli/getFilesCli.py $DM_COMMAND_ARGS" - - diff --git a/src/python/dm/cat_web_service/api/fileRestApi.py b/src/python/dm/cat_web_service/api/fileRestApi.py index f0cbe42a..75ec147f 100755 --- a/src/python/dm/cat_web_service/api/fileRestApi.py +++ b/src/python/dm/cat_web_service/api/fileRestApi.py @@ -23,7 +23,7 @@ class FileRestApi(CatRestApi): experimentFilePath = fileInfo.get('experimentFilePath') if not experimentFilePath: raise InvalidRequest('File metadata must contain experimentFilePath key.') - url = '%s/filesByExperiment/%s/%s' % (self.getContextRoot(), experimentName, Encoder.encode(experimentFilePath)) + 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) @@ -36,28 +36,24 @@ class FileRestApi(CatRestApi): experimentFilePath = fileInfo.get('experimentFilePath') if not experimentFilePath: raise InvalidRequest('File metadata must contain experimentFilePath key.') - url = '%s/filesByExperiment/%s/%s' % (self.getContextRoot(), experimentName, Encoder.encode(experimentFilePath)) + 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 updateFileById(self, fileInfo): + 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/files/%s' % (self.getContextRoot(), id) + 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 getFiles(self, queryDict={}): - url = '%s/files' % (self.getContextRoot()) - url += '?queryDict=%s' % (Encoder.encode(json.dumps(queryDict))) - responseData = self.sendSessionRequest(url=url, method='GET') - return self.toDmObjectList(responseData, FileMetadata) - @CatRestApi.execute def getExperimentFiles(self, experimentName, queryDict={}): if not experimentName: @@ -68,10 +64,12 @@ class FileRestApi(CatRestApi): return self.toDmObjectList(responseData, FileMetadata) @CatRestApi.execute - def getFileById(self, id): + 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/files/%s' % (self.getContextRoot(), id) + url = '%s/filesByExperimentAndId/%s/%s' % (self.getContextRoot(), experimentName, id) responseData = self.sendSessionRequest(url=url, method='GET') return FileMetadata(responseData) @@ -81,7 +79,7 @@ class FileRestApi(CatRestApi): raise InvalidRequest('Invalid experiment name provided.') if not experimentFilePath: raise InvalidRequest('Invalid experiment file path provided.') - url = '%s/filesByExperiment/%s/%s' % (self.getContextRoot(), experimentName, Encoder.encode(experimentFilePath)) + url = '%s/filesByExperimentAndPath/%s/%s' % (self.getContextRoot(), experimentName, Encoder.encode(experimentFilePath)) responseData = self.sendSessionRequest(url=url, method='GET') return FileMetadata(responseData) @@ -90,9 +88,6 @@ class FileRestApi(CatRestApi): if __name__ == '__main__': api = FileRestApi() - print api.getFiles() - print api.getFileById('556de0059e058b0ef4c4413b') - print api.getFileByName('xyz-001') import time t = long(time.time()) diff --git a/src/python/dm/cat_web_service/cli/getExperimentFileCli.py b/src/python/dm/cat_web_service/cli/getExperimentFileCli.py deleted file mode 100755 index 63c30a58..00000000 --- a/src/python/dm/cat_web_service/cli/getExperimentFileCli.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/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() - diff --git a/src/python/dm/cat_web_service/cli/getFilesCli.py b/src/python/dm/cat_web_service/cli/getFilesCli.py deleted file mode 100755 index e5e5a027..00000000 --- a/src/python/dm/cat_web_service/cli/getFilesCli.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/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 GetFilesCli(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-files - [key1:value1, key2:value2, ...] - -Description: - Retrieve 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.getFiles(queryDict) - for fileMetadata in fileMetadataList: - print fileMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat()) - -####################################################################### -# Run command. -if __name__ == '__main__': - cli = GetFilesCli() - cli.run() - -- GitLab