diff --git a/src/python/dm/ds_web_service/api/fileRestApi.py b/src/python/dm/ds_web_service/api/fileRestApi.py index 6d365118a4bfdeaa719b8f86bae6292da0685c03..6d0c5d96683d53ea32e434ea8f61bb4f2815597e 100755 --- a/src/python/dm/ds_web_service/api/fileRestApi.py +++ b/src/python/dm/ds_web_service/api/fileRestApi.py @@ -55,21 +55,23 @@ class FileRestApi(DsRestApi): self.logger.info('Authorizing download for user %s (experiment: %s)' % (username, experimentName)) responseDict = self.sendSessionRequest(url=url, method='POST') experiment = Experiment(responseDict) - storageDirectory = experiment.get('storageDirectory') - storageHost = experiment.get('storageHost') - src = '%s@%s:%s' % (username, storageHost, storageDirectory) - if experimentFilePath: - src = '%s/%s' % (src, experimentFilePath) - dest = destDirectory - - # Download - fileTransfer = RsyncFileTransfer(src=src, dest=dest) - self.logger.info('Executing file download on behalf of %s (experiment: %s)' % (username, experimentName)) - fileTransfer.execute() - # Finalize download - self.logger.info('Deleting download authorization for user %s (experiment: %s)' % (username, experimentName)) - self.sendSessionRequest(url=url, method='DELETE') + # Download + try: + storageDirectory = experiment.get('storageDirectory') + storageHost = experiment.get('storageHost') + src = '%s@%s:%s' % (username, storageHost, storageDirectory) + if experimentFilePath: + src = '%s/%s' % (src, experimentFilePath) + dest = destDirectory + + fileTransfer = RsyncFileTransfer(src=src, dest=dest) + self.logger.info('Executing file download on behalf of %s (experiment: %s)' % (username, experimentName)) + fileTransfer.execute() + finally: + # Finalize download + self.logger.info('Deleting download authorization for user %s (experiment: %s)' % (username, experimentName)) + self.sendSessionRequest(url=url, method='DELETE') ####################################################################### # Testing.