Merge "Handle case where the Nova AZ extension is disabled"

This commit is contained in:
Jenkins 2016-08-18 06:23:48 +00:00 committed by Gerrit Code Review
commit 0a8d40d909
2 changed files with 16 additions and 4 deletions

View File

@ -382,13 +382,12 @@ class Instance(resource.Resource, sh.SchedulerHintsMixin):
if availability_zone is None:
try:
server = self.client().servers.get(self.resource_id)
availability_zone = getattr(server,
'OS-EXT-AZ:availability_zone')
except Exception as e:
self.client_plugin().ignore_not_found(e)
return
return availability_zone
# Default to None if Nova's
# OS-EXT-AZ:availability_zone extension is disabled
return getattr(server, 'OS-EXT-AZ:availability_zone', None)
def _resolve_attribute(self, name):
res = None

View File

@ -399,6 +399,19 @@ class InstancesTest(common.HeatTestCase):
self.assertEqual(expected_az, actual_az)
self.m.VerifyAll()
def test_instance_create_resolve_az_attribute_nova_az_ext_disabled(self):
return_server = self.fc.servers.list()[1]
delattr(return_server, 'OS-EXT-AZ:availability_zone')
instance = self._setup_test_instance(return_server,
'create_resolve_az_attribute')
self.patchobject(self.fc.servers, 'get',
return_value=return_server)
self.m.ReplayAll()
scheduler.TaskRunner(instance.create)()
self.assertIsNone(instance._availability_zone())
self.m.VerifyAll()
def test_instance_create_image_name_err(self):
stack_name = 'test_instance_create_image_name_err_stack'
(tmpl, stack) = self._setup_test_stack(stack_name)