From 419b4de2633496439d946dd3fa338dd9645c3261 Mon Sep 17 00:00:00 2001
From: Sinisa Veseli <sveseli@aps.anl.gov>
Date: Mon, 29 Jun 2015 21:05:57 +0000
Subject: [PATCH] add gridftp plugin class

---
 .../processing/plugins/fileTransferPlugin.py  | 16 +++++++++---
 .../plugins/gridftpFileTransferPlugin.py      | 26 +++++++++++++++++++
 2 files changed, 38 insertions(+), 4 deletions(-)
 create mode 100755 src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py

diff --git a/src/python/dm/common/processing/plugins/fileTransferPlugin.py b/src/python/dm/common/processing/plugins/fileTransferPlugin.py
index 635a7e5b..196377f8 100755
--- a/src/python/dm/common/processing/plugins/fileTransferPlugin.py
+++ b/src/python/dm/common/processing/plugins/fileTransferPlugin.py
@@ -26,12 +26,20 @@ class FileTransferPlugin(FileProcessor):
 
         storageHost = experiment.get('storageHost')
         storageDirectory = experiment.get('storageDirectory')
-        dest = '%s:%s' % (storageHost, storageDirectory)
+        destUrl = self.getDestUrl(storageHost, storageDirectory)
         # Use relative path with respect to data directory as a source
         os.chdir(dataDirectory)
-        src = os.path.relpath(filePath, dataDirectory)
-        self.start(src, dest)
-
+        srcUrl = self.getSrcUrl(filePath, dataDirectory)
+        self.start(srcUrl, destUrl)
+
+    def getSrcUrl(self, filePath, dataDirectory):
+        srcUrl = os.path.relpath(filePath, dataDirectory)
+        return srcUrl
+    
+    def getDestUrl(self, storageHost, storageDirectory):
+        destUrl = '%s:%s' % (storageHost, storageDirectory)
+        return destUrl
+    
     def getFullCommand(self, src, dest):
         return '%s %s %s' % (self.command, src, dest)
 
diff --git a/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py b/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py
new file mode 100755
index 00000000..0258d7b9
--- /dev/null
+++ b/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+
+from fileTransferPlugin import FileTransferPlugin
+class GridftpFileTransferPlugin(FileTransferPlugin):
+
+    COMMAND = 'globus-url-copy -v'
+
+    def __init__(self, src=None, dest=None):
+        FileTransferPlugin.__init__(self, self.COMMAND, src, dest)
+
+    def getSrcUrl(self, filePath, dataDirectory):
+        srcUrl = 'file://%s' % filePath
+        return srcUrl
+    
+    def getDestUrl(self, storageHost, storageDirectory):
+        destUrl = 'sshftp://%s:%s' % (storageHost, storageDirectory)
+        return destUrl
+
+#######################################################################
+# Testing.
+if __name__ == '__main__':
+    ft = GridftpFileTransferPlugin('/tmp/xyz', '/tmp/xyz2')
+    ft.start()
+    print 'StdOut: ', ft.getStdOut()
+    print 'StdErr: ', ft.getStdErr()
+    print 'Exit Status: ', ft.getExitStatus()
-- 
GitLab