From 085602bd456fc1cece88c16b174f41ff311cb643 Mon Sep 17 00:00:00 2001
From: Sinisa Veseli <sveseli@aps.anl.gov>
Date: Thu, 12 Nov 2015 22:52:26 +0000
Subject: [PATCH] fixed gridftp plugin bug with relative directory

---
 src/python/dm/__init__.py                                  | 2 +-
 .../dm/common/processing/plugins/fileTransferPlugin.py     | 4 ++--
 .../common/processing/plugins/gridftpFileTransferPlugin.py | 7 +++++--
 .../impl/rsyncWithChecksumAndDeleteFileTransferPlugin.py   | 2 +-
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/python/dm/__init__.py b/src/python/dm/__init__.py
index 5010cdf4..85013a64 100644
--- a/src/python/dm/__init__.py
+++ b/src/python/dm/__init__.py
@@ -1 +1 @@
-__version__ = "0.6 (2015.11.06)"
+__version__ = "0.6 (2015.11.09)"
diff --git a/src/python/dm/common/processing/plugins/fileTransferPlugin.py b/src/python/dm/common/processing/plugins/fileTransferPlugin.py
index 0c230983..6c3d928c 100755
--- a/src/python/dm/common/processing/plugins/fileTransferPlugin.py
+++ b/src/python/dm/common/processing/plugins/fileTransferPlugin.py
@@ -26,7 +26,7 @@ class FileTransferPlugin(FileProcessor):
 
         storageHost = experiment.get('storageHost')
         storageDirectory = experiment.get('storageDirectory')
-        destUrl = self.getDestUrl(storageHost, storageDirectory)
+        destUrl = self.getDestUrl(filePath, dataDirectory, storageHost, storageDirectory)
         srcUrl = self.getSrcUrl(filePath, dataDirectory)
         self.start(srcUrl, destUrl)
 
@@ -36,7 +36,7 @@ class FileTransferPlugin(FileProcessor):
         srcUrl = os.path.relpath(filePath, dataDirectory)
         return srcUrl
     
-    def getDestUrl(self, storageHost, storageDirectory):
+    def getDestUrl(self, filePath, dataDirectory, storageHost, storageDirectory):
         destUrl = '%s:%s' % (storageHost, storageDirectory)
         return destUrl
     
diff --git a/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py b/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py
index 6999ccdf..cfb3b5f4 100755
--- a/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py
+++ b/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py
@@ -1,5 +1,6 @@
 #!/usr/bin/env python
 
+import os
 from fileTransferPlugin import FileTransferPlugin
 
 class GridftpFileTransferPlugin(FileTransferPlugin):
@@ -16,8 +17,10 @@ class GridftpFileTransferPlugin(FileTransferPlugin):
             srcUrl = '%s/%s' % (self.src,filePath)
         return srcUrl
     
-    def getDestUrl(self, storageHost, storageDirectory):
-        destUrl = 'sshftp://%s/%s/' % (storageHost, storageDirectory)
+    def getDestUrl(self, filePath, dataDirectory, storageHost, storageDirectory):
+        dirName = os.path.dirname(os.path.relpath(filePath, dataDirectory)).strip()
+        fileName = os.path.basename(filePath)
+        destUrl = 'sshftp://%s/%s/%s/%s' % (storageHost, storageDirectory, dirName, fileName)
         return destUrl
 
 #######################################################################
diff --git a/src/python/dm/daq_web_service/service/impl/rsyncWithChecksumAndDeleteFileTransferPlugin.py b/src/python/dm/daq_web_service/service/impl/rsyncWithChecksumAndDeleteFileTransferPlugin.py
index 2db93d4a..f397d566 100755
--- a/src/python/dm/daq_web_service/service/impl/rsyncWithChecksumAndDeleteFileTransferPlugin.py
+++ b/src/python/dm/daq_web_service/service/impl/rsyncWithChecksumAndDeleteFileTransferPlugin.py
@@ -25,7 +25,7 @@ class RsyncWithChecksumAndDeleteFileTransferPlugin(FileTransferPlugin):
         experimentFilePath = fileInfo.get('experimentFilePath')
         storageHost = experiment.get('storageHost')
         storageDirectory = experiment.get('storageDirectory')
-        destUrl = self.getDestUrl(storageHost, storageDirectory)
+        destUrl = self.getDestUrl(filePath, dataDirectory, storageHost, storageDirectory)
         # Use relative path with respect to data directory as a source
         os.chdir(dataDirectory)
         srcUrl = self.getSrcUrl(filePath, dataDirectory)
-- 
GitLab