diff --git a/src/python/dm/common/processing/plugins/fileTransferPlugin.py b/src/python/dm/common/processing/plugins/fileTransferPlugin.py index 1cae8d3544d1a168158994276851e7d76fed4d12..e1f20e5a968a3f74ee6eb0950bda4398fad426f6 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: