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
(cherry picked from commit
40cf447d28a5c9842f3546c4e7fe4efa682293cf)
'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,
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']}