From 15e0532428fffa46c3da7b1e2e58a7b47fc7a430 Mon Sep 17 00:00:00 2001 From: Steve Baker Date: Mon, 11 Feb 2013 14:31:09 +1300 Subject: [PATCH] Implement NetworkInterfaces instance property. This accepts a list of strings, where each string will be a Ref to either a OS::Quantum::Port or a (yet to be implemented) AWS::EC2::NetworkInterface. This fixes bug 1096013 Change-Id: Ic8aecf8d59395edcf111b3a778e79762af0e50d4 --- heat/engine/resources/instance.py | 11 ++++++++++- heat/tests/test_engine_service.py | 2 +- heat/tests/test_instance.py | 6 +++--- heat/tests/test_loadbalancer.py | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/heat/engine/resources/instance.py b/heat/engine/resources/instance.py index ef38f2b3..7145fbc4 100644 --- a/heat/engine/resources/instance.py +++ b/heat/engine/resources/instance.py @@ -89,6 +89,7 @@ class Instance(resource.Resource): 'SecurityGroups': {'Type': 'List'}, 'SecurityGroupIds': {'Type': 'List', 'Implemented': False}, + 'NetworkInterfaces': {'Type': 'List'}, 'SourceDestCheck': {'Type': 'Boolean', 'Implemented': False}, 'SubnetId': {'Type': 'String', @@ -258,6 +259,13 @@ class Instance(resource.Resource): else: scheduler_hints = None + nics = [] + if self.properties['NetworkInterfaces']: + for nic in self.properties['NetworkInterfaces']: + nics.append({'port-id': nic}) + else: + nics = None + server_userdata = self._build_userdata(userdata) server = None try: @@ -269,7 +277,8 @@ class Instance(resource.Resource): security_groups=security_groups, userdata=server_userdata, meta=tags, - scheduler_hints=scheduler_hints) + scheduler_hints=scheduler_hints, + nics=nics) 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 45ca0632..a9fcb861 100644 --- a/heat/tests/test_engine_service.py +++ b/heat/tests/test_engine_service.py @@ -76,7 +76,7 @@ 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).AndReturn(fc.servers.list()[-1]) + meta=None, nics=None).AndReturn(fc.servers.list()[-1]) return fc diff --git a/heat/tests/test_instance.py b/heat/tests/test_instance.py index 2a59558d..8c168e78 100644 --- a/heat/tests/test_instance.py +++ b/heat/tests/test_instance.py @@ -72,7 +72,7 @@ class instancesTest(unittest.TestCase): name='%s.%s' % (stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, - meta=None).AndReturn(self.fc.servers.list()[1]) + meta=None, nics=None).AndReturn(self.fc.servers.list()[1]) self.m.ReplayAll() self.assertEqual(instance.create(), None) @@ -112,7 +112,7 @@ class instancesTest(unittest.TestCase): name='%s.%s' % (stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, - meta=None).AndReturn(self.fc.servers.list()[1]) + meta=None, nics=None).AndReturn(self.fc.servers.list()[1]) self.m.ReplayAll() self.assertEqual(instance.create(), None) @@ -173,7 +173,7 @@ class instancesTest(unittest.TestCase): name='%s.%s' % (stack_name, instance.name), security_groups=None, userdata=server_userdata, scheduler_hints=None, - meta=None).AndReturn(self.fc.servers.list()[1]) + meta=None, nics=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 9676287f..82b689c8 100644 --- a/heat/tests/test_loadbalancer.py +++ b/heat/tests/test_loadbalancer.py @@ -88,7 +88,7 @@ class LoadBalancerTest(unittest.TestCase): instance.Instance.nova().MultipleTimes().AndReturn(self.fc) self.fc.servers.create( flavor=2, image=745, key_name='test', - meta=None, name=u'test_stack.LoadBalancer.LB_instance', + 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]) #stack.Stack.create_with_template(mox.IgnoreArg()).AndReturn(None) -- 2.45.2