Handle an attached volume without volume_image_metadata

There is a case where volume_image_metadata attribute does not exist.
It looks like it happens for example when a volume was created before
the volume_image_metadata feature was implemented.

Change-Id: I0b8e6b2e540a1782b9edd9921490a9371d31afc7
Closes-Bug: #1916891
This commit is contained in:
Akihiro Motoki 2021-02-26 03:44:15 +09:00
parent 3fe0802eaa
commit b841952906
1 changed files with 10 additions and 3 deletions

View File

@ -41,12 +41,19 @@ class OverviewTab(tabs.Tab):
try:
volume = api.cinder.volume_get(
self.request, volume_id=instance.volumes[0].volumeId)
instance.image = {
'id': volume.volume_image_metadata['image_id'],
'name': volume.volume_image_metadata['image_name']}
except Exception:
exceptions.handle(self.request,
_('Failed to get attached volume.'))
try:
instance.image = {
'id': volume.volume_image_metadata['image_id'],
'name': volume.volume_image_metadata['image_name'],
}
except (AttributeError, KeyError):
# AttributeError is raised when volume_image_metadata does not
# exist. KeyError is raised when volume_image_metadata exists
# but image_id or image_name is not included.
instance.image = None
return {"instance": instance}