Skip to content
Snippets Groups Projects
Commit 511a10a8 authored by sveseli's avatar sveseli
Browse files

fix for change directory bug

parent aae8cf2d
No related branches found
No related tags found
No related merge requests found
......@@ -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):
......
......@@ -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:
......
......@@ -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:
......
......@@ -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
......
......@@ -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
......
......@@ -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))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment