From eb9ea224bfc73825ef2b71fb9d1ef10ac5ff469b Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Mon, 8 Feb 2016 06:55:33 +0000 Subject: [PATCH] fixes for base transfer plugin when configured destination directory is local --- .../processing/plugins/fileTransferPlugin.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/python/dm/common/processing/plugins/fileTransferPlugin.py b/src/python/dm/common/processing/plugins/fileTransferPlugin.py index 1cae8d35..e1f20e5a 100755 --- a/src/python/dm/common/processing/plugins/fileTransferPlugin.py +++ b/src/python/dm/common/processing/plugins/fileTransferPlugin.py @@ -3,6 +3,7 @@ import os from dm.common.utility.loggingManager import LoggingManager from dm.common.utility.dmSubprocess import DmSubprocess +from dm.common.utility.osUtility import OsUtility from dm.common.exceptions.invalidArgument import InvalidArgument from dm.common.exceptions.invalidRequest import InvalidRequest from fileProcessor import FileProcessor @@ -39,7 +40,10 @@ class FileTransferPlugin(FileProcessor): return srcUrl def getDestUrl(self, filePath, dataDirectory, storageHost, storageDirectory): - destUrl = '%s:%s' % (storageHost, storageDirectory) + if self.dest: + destUrl = '%s' % (self.dest) + else: + destUrl = '%s:%s' % (storageHost, storageDirectory) return destUrl def getFullCommand(self, src, dest): @@ -60,6 +64,14 @@ class FileTransferPlugin(FileProcessor): if dest is None: fileDest = self.dest + # If destination is local, attempt to create it + if self.dest is not None and self.dest.find(':') < 0: + destDir = self.replaceTemplates(self.dest, fileInfo) + try: + OsUtility.createDir(destDir) + except Exception, ex: + self.logger.warn('Transfer may fail due to failure to create destination directory %s: %s' % (destDir, str(ex))) + fileSrc = self.replaceTemplates(fileSrc, fileInfo) fileDest = self.replaceTemplates(fileDest, fileInfo) if not fileSrc or not fileDest: -- GitLab