From ea8bda21c15bf9ac1a58326ba9350c0ad3b82be0 Mon Sep 17 00:00:00 2001 From: Jeff Peeler Date: Fri, 15 Feb 2013 10:57:46 -0500 Subject: [PATCH] Make AvailabilityZone parameter available to nova create Looks for the AvailabilityZone property in the instance's resource section. For example: "Resources" : { "Properties": { "AvailabilityZone" : "nova", ... Fixes bug #1096006 Change-Id: I3333b5f909b27e53f6985713de58dd30efc1a80a Signed-off-by: Jeff Peeler --- heat/engine/resources/instance.py | 7 ++++--- heat/tests/test_engine_service.py | 4 +++- heat/tests/test_instance.py | 11 ++++++----- heat/tests/test_loadbalancer.py | 3 ++- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/heat/engine/resources/instance.py b/heat/engine/resources/instance.py index c44f5128..1b626bcb 100644 --- a/heat/engine/resources/instance.py +++ b/heat/engine/resources/instance.py @@ -72,8 +72,7 @@ class Instance(resource.Resource): 'Required': True}, 'KeyName': {'Type': 'String', 'Required': True}, - 'AvailabilityZone': {'Type': 'String', - 'Default': 'nova'}, + 'AvailabilityZone': {'Type': 'String'}, 'DisableApiTermination': {'Type': 'String', 'Implemented': False}, 'KernelId': {'Type': 'String', @@ -225,6 +224,7 @@ class Instance(resource.Resource): userdata = self.properties['UserData'] or '' flavor = self.properties['InstanceType'] key_name = self.properties['KeyName'] + availability_zone = self.properties['AvailabilityZone'] keypairs = [k.name for k in self.nova().keypairs.list()] if key_name not in keypairs: @@ -279,7 +279,8 @@ class Instance(resource.Resource): userdata=server_userdata, meta=tags, scheduler_hints=scheduler_hints, - nics=nics) + nics=nics, + availability_zone=availability_zone) finally: # Avoid a race condition where the thread could be cancelled # before the ID is stored diff --git a/heat/tests/test_engine_service.py b/heat/tests/test_engine_service.py index a9fcb861..35816ea5 100644 --- a/heat/tests/test_engine_service.py +++ b/heat/tests/test_engine_service.py @@ -76,7 +76,9 @@ def setup_mocks(mocks, stack): fc.servers.create(image=744, flavor=3, key_name='test', name='%s.WebServer' % stack.name, security_groups=None, userdata=server_userdata, scheduler_hints=None, - meta=None, nics=None).AndReturn(fc.servers.list()[-1]) + meta=None, nics=None, + availability_zone=None).AndReturn( + fc.servers.list()[-1]) return fc diff --git a/heat/tests/test_instance.py b/heat/tests/test_instance.py index 8c168e78..734478ed 100644 --- a/heat/tests/test_instance.py +++ b/heat/tests/test_instance.py @@ -72,7 +72,8 @@ class instancesTest(unittest.TestCase): name='%s.%s' % (stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, - meta=None, nics=None).AndReturn(self.fc.servers.list()[1]) + meta=None, nics=None, availability_zone=None).AndReturn( + self.fc.servers.list()[1]) self.m.ReplayAll() self.assertEqual(instance.create(), None) @@ -112,7 +113,8 @@ class instancesTest(unittest.TestCase): name='%s.%s' % (stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, - meta=None, nics=None).AndReturn(self.fc.servers.list()[1]) + meta=None, nics=None, availability_zone=None).AndReturn( + self.fc.servers.list()[1]) self.m.ReplayAll() self.assertEqual(instance.create(), None) @@ -131,8 +133,6 @@ class instancesTest(unittest.TestCase): self.assertEqual(instance.state, instance.DELETE_COMPLETE) self.m.VerifyAll() - AZ = instance.FnGetAtt('AvailabilityZone') - self.assertEqual(AZ, 'nova') private_ip = instance.FnGetAtt('PublicIp') self.assertEqual(private_ip, '4.5.6.7') private_ip = instance.FnGetAtt('PrivateIp') @@ -173,7 +173,8 @@ class instancesTest(unittest.TestCase): name='%s.%s' % (stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, - meta=None, nics=None).AndReturn(self.fc.servers.list()[1]) + meta=None, nics=None, availability_zone=None).AndReturn( + self.fc.servers.list()[1]) self.m.ReplayAll() self.assertEqual(instance.create(), None) diff --git a/heat/tests/test_loadbalancer.py b/heat/tests/test_loadbalancer.py index 82b689c8..cfce3028 100644 --- a/heat/tests/test_loadbalancer.py +++ b/heat/tests/test_loadbalancer.py @@ -90,7 +90,8 @@ class LoadBalancerTest(unittest.TestCase): flavor=2, image=745, key_name='test', meta=None, nics=None, name=u'test_stack.LoadBalancer.LB_instance', scheduler_hints=None, userdata=mox.IgnoreArg(), - security_groups=None).AndReturn(self.fc.servers.list()[1]) + security_groups=None, availability_zone=None).AndReturn( + self.fc.servers.list()[1]) #stack.Stack.create_with_template(mox.IgnoreArg()).AndReturn(None) Metadata.__set__(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(None) -- 2.45.2