Skip to content

Commit

Permalink
Fixes issue with exceptions getting eaten in image/s3.py if there is …
Browse files Browse the repository at this point in the history
…a failure during register. The variables referenced with locals() were actually out of scope.
  • Loading branch information
vishvananda authored and Tarmac committed Aug 16, 2011
2 parents d9d9c8c + c4f6df5 commit a6a6f81
Showing 1 changed file with 14 additions and 12 deletions.
26 changes: 14 additions & 12 deletions nova/image/s3.py
Expand Up @@ -193,6 +193,8 @@ def _s3_create(self, context, metadata):

def delayed_create():
"""This handles the fetching and decrypting of the part files."""
log_vars = {'image_location': image_location,
'image_path': image_path}
metadata['properties']['image_state'] = 'downloading'
self.service.update(context, image_id, metadata)

Expand All @@ -213,11 +215,11 @@ def delayed_create():
shutil.copyfileobj(part, combined)

except Exception:
LOG.error(_("Failed to download %(image_location)s "
"to %(image_path)s"), locals())
LOG.exception(_("Failed to download %(image_location)s "
"to %(image_path)s"), log_vars)
metadata['properties']['image_state'] = 'failed_download'
self.service.update(context, image_id, metadata)
raise
return

metadata['properties']['image_state'] = 'decrypting'
self.service.update(context, image_id, metadata)
Expand All @@ -237,23 +239,23 @@ def delayed_create():
encrypted_iv, cloud_pk,
dec_filename)
except Exception:
LOG.error(_("Failed to decrypt %(image_location)s "
"to %(image_path)s"), locals())
LOG.exception(_("Failed to decrypt %(image_location)s "
"to %(image_path)s"), log_vars)
metadata['properties']['image_state'] = 'failed_decrypt'
self.service.update(context, image_id, metadata)
raise
return

metadata['properties']['image_state'] = 'untarring'
self.service.update(context, image_id, metadata)

try:
unz_filename = self._untarzip_image(image_path, dec_filename)
except Exception:
LOG.error(_("Failed to untar %(image_location)s "
"to %(image_path)s"), locals())
LOG.exception(_("Failed to untar %(image_location)s "
"to %(image_path)s"), log_vars)
metadata['properties']['image_state'] = 'failed_untar'
self.service.update(context, image_id, metadata)
raise
return

metadata['properties']['image_state'] = 'uploading'
self.service.update(context, image_id, metadata)
Expand All @@ -262,11 +264,11 @@ def delayed_create():
self.service.update(context, image_id,
metadata, image_file)
except Exception:
LOG.error(_("Failed to upload %(image_location)s "
"to %(image_path)s"), locals())
LOG.exception(_("Failed to upload %(image_location)s "
"to %(image_path)s"), log_vars)
metadata['properties']['image_state'] = 'failed_upload'
self.service.update(context, image_id, metadata)
raise
return

metadata['properties']['image_state'] = 'available'
metadata['status'] = 'active'
Expand Down

0 comments on commit a6a6f81

Please sign in to comment.