From 721a8e774c329eb5ca8adfb6eb25ff9cb54fa59d Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Tue, 14 Apr 2015 13:22:20 +0000 Subject: [PATCH] add support for storage directory/host --- .../service/impl/storageManager.py | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/python/dm/ds_web_service/service/impl/storageManager.py b/src/python/dm/ds_web_service/service/impl/storageManager.py index e12565f3..ce22e750 100755 --- a/src/python/dm/ds_web_service/service/impl/storageManager.py +++ b/src/python/dm/ds_web_service/service/impl/storageManager.py @@ -2,10 +2,12 @@ import threading import time +import os from dm.common.utility.loggingManager import LoggingManager from dm.common.utility.configurationManager import ConfigurationManager from dm.common.utility.singleton import Singleton +from dm.common.utility.osUtility import OsUtility class StorageManager(Singleton): @@ -38,15 +40,35 @@ class StorageManager(Singleton): self.logger.debug('Got config items: %s' % configItems) self.storageDirectory = cm.getConfigOption(StorageManager.CONFIG_SECTION_NAME, StorageManager.STORAGE_DIRECTORY_KEY) + def __getExperimentStorageDataDirectory(self, experiment): + experimentTypeName = experiment.get('experimentType').get('rootDataPath') + experimentName = experiment.get('name') + storageDirectory = '%s/%s/%s' % (self.storageDirectory, experimentTypeName, experimentName) + storageDirectory = storageDirectory.replace('//', '/') + return storageDirectory + + def updateExperimentWithStorageDataDirectory(self, experiment): + self.lock.acquire() + try: + storageDirectory = self.__getExperimentStorageDataDirectory(experiment) + if os.path.exists(storageDirectory): + experiment['storageDirectory'] = storageDirectory + experiment['storageHost'] = ConfigurationManager.getInstance().getHost() + return storageDirectory + finally: + self.lock.release() + def createExperimentDataDirectory(self, experiment): self.lock.acquire() try: - experimentTypeName = experiment.get('experimentType').get('rootDataPath') experimentName = experiment.get('name') - dataDirectory = '%s/%s/%s' % (self.storageDirectory, experimentTypeName, experimentName) - dataDirectory = dataDirectory.replace('//', '/') - self.logger.debug('Creating data directory for experiment %s: %s' % (experimentName, dataDirectory)) - experiment['dataDirectory'] = dataDirectory + storageDirectory = self.__getExperimentStorageDataDirectory(experiment) + if os.path.exists(storageDirectory): + self.logger.debug('Data directory %s for experiment %s already exists' % (storageDirectory, experimentName)) + else: + self.logger.debug('Creating data directory for experiment %s: %s' % (experimentName, storageDirectory)) + OsUtility.createDir(storageDirectory) + experiment['storageDirectory'] = storageDirectory finally: self.lock.release() -- GitLab