Avoid lazy-loading instance.id when cross_az_attach=False
The instance is no longer created in the API so the id attribute won't be set, which means when checking the instance AZ against the volume AZ, if they don't match we can't put the instance.id in the error message. We shouldn't have been putting the instance primary key in the error message anyway. This fixes the bug by using the instance.uuid which is set in this object in _provision_instances. Change-Id: I396b767815b666706fec980ded482fa4746d2efc Closes-Bug: #1693654
This commit is contained in:
parent
0cd67d23bd
commit
40cf447d28
nova
@ -189,6 +189,9 @@ class CinderApiTestCase(test.NoDBTestCase):
|
||||
'attach_status': 'detached',
|
||||
'availability_zone': 'zone2'}
|
||||
instance = fake_instance_obj(self.ctx)
|
||||
# Simulate _provision_instances in the compute API; the instance is not
|
||||
# created in the API so the instance will not have an id attribute set.
|
||||
delattr(instance, 'id')
|
||||
|
||||
self.assertRaises(exception.InvalidVolume,
|
||||
self.api.check_availability_zone,
|
||||
|
@ -288,7 +288,7 @@ class API(object):
|
||||
msg = _("Instance %(instance)s and volume %(vol)s are not in "
|
||||
"the same availability_zone. Instance is in "
|
||||
"%(ins_zone)s. Volume is in %(vol_zone)s") % {
|
||||
"instance": instance['id'],
|
||||
"instance": instance.uuid,
|
||||
"vol": volume['id'],
|
||||
'ins_zone': instance_az,
|
||||
'vol_zone': volume['availability_zone']}
|
||||
|
Loading…
x
Reference in New Issue
Block a user