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