From 673e5a7af03b3dba1518daecad7a8df843a42b04 Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Fri, 26 Jun 2015 20:08:44 +0000 Subject: [PATCH] added cataloggin plugin --- .../service/impl/mongoDbFileCatalogPlugin.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 src/python/dm/ds_web_service/service/impl/mongoDbFileCatalogPlugin.py diff --git a/src/python/dm/ds_web_service/service/impl/mongoDbFileCatalogPlugin.py b/src/python/dm/ds_web_service/service/impl/mongoDbFileCatalogPlugin.py new file mode 100755 index 00000000..e5c889d0 --- /dev/null +++ b/src/python/dm/ds_web_service/service/impl/mongoDbFileCatalogPlugin.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +import os +import time +from dm.common.utility.loggingManager import LoggingManager +from dm.common.utility.timeUtility import TimeUtility +from dm.common.processing.plugins.fileProcessor import FileProcessor +from dm.common.mongodb.api.fileMongoDbApi import FileMongoDbApi + +class MongoDbFileCatalogPlugin(FileProcessor): + + def __init__(self): + FileProcessor.__init__(self) + self.fileMongoDbApi = FileMongoDbApi() + self.logger = LoggingManager.getInstance().getLogger(self.__class__.__name__) + + def processFile(self, fileInfo): + experimentFilePath = fileInfo.get('experimentFilePath') + experiment = fileInfo.get('experiment') + experimentName = experiment.get('name') + self.logger.debug('Processing file %s for experiment %s' % (fileInfo, experimentName)) + + experimentStorageDirectory = experiment.get('storageDirectory') + storageHost = experiment.get('storageHost') + storageFilePath = os.path.join(experimentStorageDirectory, experimentFilePath) + fileProcessingTime = time.time() + fileProcessingTimeStamp = TimeUtility.formatLocalTimeStamp(fileProcessingTime) + + # Prepare catalogging entry + fileInfo2 = {} + fileInfo2['name'] = os.path.basename(experimentFilePath) + fileInfo2['experimentStorageDirectory'] = experimentStorageDirectory + fileInfo2['storageHost'] = storageHost + fileInfo2['storageFilePath'] = storageFilePath + fileInfo2['experimentFilePath'] = experimentFilePath + fileInfo2['experimentName'] = experimentName + fileInfo2['fileProcessingTime'] = fileProcessingTime + fileInfo2['fileProcessingTimeStamp'] = fileProcessingTimeStamp + fileInfo2.update(fileInfo.get('daqInfo', {})) + self.fileMongoDbApi.updateOrAddExperimentFile(fileInfo2) + + +####################################################################### +# Testing. +if __name__ == '__main__': + pass -- GitLab