From 511a10a8e207617268ed08c874e03d86fd367ca2 Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Sun, 21 Feb 2016 04:19:15 +0000 Subject: [PATCH] fix for change directory bug --- .../dm/common/processing/plugins/fileTransferPlugin.py | 5 ++--- .../common/processing/plugins/gridftpFileTransferPlugin.py | 2 +- .../dm/common/processing/plugins/rsyncFileTransferPlugin.py | 3 +-- .../plugins/rsyncWithChecksumAndDeleteFileTransferPlugin.py | 4 +--- src/python/dm/common/utility/dmSubprocess.py | 4 ++-- .../daq_web_service/service/impl/dmFileSystemEventHandler.py | 4 ++-- 6 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/python/dm/common/processing/plugins/fileTransferPlugin.py b/src/python/dm/common/processing/plugins/fileTransferPlugin.py index e1f20e5a..80df827e 100755 --- a/src/python/dm/common/processing/plugins/fileTransferPlugin.py +++ b/src/python/dm/common/processing/plugins/fileTransferPlugin.py @@ -35,7 +35,6 @@ class FileTransferPlugin(FileProcessor): def getSrcUrl(self, filePath, dataDirectory): # Use relative path with respect to data directory as a source - os.chdir(dataDirectory) srcUrl = os.path.relpath(filePath, dataDirectory) return srcUrl @@ -55,7 +54,7 @@ class FileTransferPlugin(FileProcessor): def setDest(self, dest): self.dest = dest - def start(self, src=None, dest=None, fileInfo={}): + def start(self, src=None, dest=None, fileInfo={}, cwd=None): # Use preconfigured source if provided source is None fileSrc = src if src is None: @@ -76,7 +75,7 @@ class FileTransferPlugin(FileProcessor): fileDest = self.replaceTemplates(fileDest, fileInfo) if not fileSrc or not fileDest: raise InvalidRequest('Both source and destination must be non-empty strings.') - self.subprocess = DmSubprocess.getSubprocess(self.getFullCommand(fileSrc, fileDest)) + self.subprocess = DmSubprocess.getSubprocess(self.getFullCommand(fileSrc, fileDest), cwd=cwd) return self.subprocess.run() def wait(self): diff --git a/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py b/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py index c9c3f324..b07cc504 100755 --- a/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py +++ b/src/python/dm/common/processing/plugins/gridftpFileTransferPlugin.py @@ -107,7 +107,7 @@ class GridftpFileTransferPlugin(FileTransferPlugin): # Transfer file self.logger.debug('Starting transfer: %s -> %s' % (srcUrl, destUrl)) - self.start(srcUrl, destUrl, fileInfo) + self.start(src=srcUrl, dest=destUrl, fileInfo=fileInfo, cwd=dataDirectory) # Get remote checksum if self.remoteMd5Sum: diff --git a/src/python/dm/common/processing/plugins/rsyncFileTransferPlugin.py b/src/python/dm/common/processing/plugins/rsyncFileTransferPlugin.py index 4535418c..5f50169d 100755 --- a/src/python/dm/common/processing/plugins/rsyncFileTransferPlugin.py +++ b/src/python/dm/common/processing/plugins/rsyncFileTransferPlugin.py @@ -54,7 +54,6 @@ class RsyncFileTransferPlugin(FileTransferPlugin): storageDirectory = fileInfo.get('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) # Calculate checksum @@ -66,7 +65,7 @@ class RsyncFileTransferPlugin(FileTransferPlugin): # Transfer file self.logger.debug('Starting transfer: %s' % fileInfo) - self.start(srcUrl, destUrl, fileInfo) + self.start(src=srcUrl, dest=destUrl, fileInfo=fileInfo, cwd=dataDirectory) # Get remote checksum if self.remoteMd5Sum: diff --git a/src/python/dm/common/processing/plugins/rsyncWithChecksumAndDeleteFileTransferPlugin.py b/src/python/dm/common/processing/plugins/rsyncWithChecksumAndDeleteFileTransferPlugin.py index 55cfef1b..855d8f39 100755 --- a/src/python/dm/common/processing/plugins/rsyncWithChecksumAndDeleteFileTransferPlugin.py +++ b/src/python/dm/common/processing/plugins/rsyncWithChecksumAndDeleteFileTransferPlugin.py @@ -26,7 +26,6 @@ class RsyncWithChecksumAndDeleteFileTransferPlugin(FileTransferPlugin): storageDirectory = fileInfo.get('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) # Calculate checksum @@ -35,8 +34,7 @@ class RsyncWithChecksumAndDeleteFileTransferPlugin(FileTransferPlugin): self.logger.debug('File info before transfer: %s' % fileInfo) # Transfer file - self.start(srcUrl, destUrl, fileInfo) - + self.start(src=srcUrl, dest=destUrl, fileInfo=fileInfo, cwd=dataDirectory) # Get remote checksum fileInfo2 = {} fileInfo2['experimentFilePath'] = experimentFilePath diff --git a/src/python/dm/common/utility/dmSubprocess.py b/src/python/dm/common/utility/dmSubprocess.py index 5a4d3986..7d4e5d93 100755 --- a/src/python/dm/common/utility/dmSubprocess.py +++ b/src/python/dm/common/utility/dmSubprocess.py @@ -17,11 +17,11 @@ class DmSubprocess(subprocess.Popen): # Get subprocess instance. @classmethod - def getSubprocess(cls, command): + def getSubprocess(cls, command, cwd=None): close_fds = True if platform.system() != 'Windows': close_fds = False - p = DmSubprocess(command, close_fds=close_fds) + p = DmSubprocess(command, close_fds=close_fds, cwd=cwd) return p # Execute command diff --git a/src/python/dm/daq_web_service/service/impl/dmFileSystemEventHandler.py b/src/python/dm/daq_web_service/service/impl/dmFileSystemEventHandler.py index dc9f033a..f0dfa13b 100755 --- a/src/python/dm/daq_web_service/service/impl/dmFileSystemEventHandler.py +++ b/src/python/dm/daq_web_service/service/impl/dmFileSystemEventHandler.py @@ -43,8 +43,8 @@ class DmFileSystemEventHandler(FileSystemEventHandler): def processEvent(self, event): if event.is_directory: try: - files = glob.glob(os.path.join(event.src_path,'*.*')) - self.logger.debug('Processing directory event: %s , src path: %s , latest files: %s' % (event.__dict__, event.src_path, files)) + files = glob.glob(os.path.join(event.src_path,'*')) + self.logger.debug('Processing directory event: %s , src path: %s' % (event.__dict__, event.src_path)) if len(files) > 0: filePath = max(files, key=os.path.getctime) self.logger.debug('Latest file: %s' % (filePath)) -- GitLab