From 3f5fcea513e19a9547a9aa1169dbdbe1950bc7dd Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Fri, 4 Dec 2015 22:08:56 +0000 Subject: [PATCH] better error handling in case transfer fails for any reason --- .../dm/ds_web_service/api/fileRestApi.py | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/python/dm/ds_web_service/api/fileRestApi.py b/src/python/dm/ds_web_service/api/fileRestApi.py index 6d365118..6d0c5d96 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. -- GitLab