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