diff --git a/src/python/dm/common/processing/plugins/fileTransferPlugin.py b/src/python/dm/common/processing/plugins/fileTransferPlugin.py index e1f20e5a968a3f74ee6eb0950bda4398fad426f6..80df827e985f2bb187a06d43dd5872b261fdf767 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 c9c3f32486e6195210d134e9cf208299e0116f22..b07cc50413a43766784c924c12f67b6161a20dbd 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 4535418caa7c3ddae0fea5360e6694dca8de4ec2..5f50169dc873281933be03f75dcc84e2ca574511 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 55cfef1b72aa2725e4d06bf1d2a60621498083e9..855d8f39e90f6ba6eb787d59c1d764ef0a520984 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 5a4d39860ef735b3f805d3dcb809303e9d2ed73f..7d4e5d93405f477d4bb7995dace5b1c16b024d0e 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 dc9f033a5b8c2c9d0dfb4ebda3ef26ac74451692..f0dfa13b1cc39c1616c85c3e9bd13ab5d838de85 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))