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