From: Angus Salkeld Date: Thu, 5 Jul 2012 11:18:26 +0000 (+1000) Subject: Pass Tags into scheduler_hints X-Git-Tag: 2014.1~1639^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=f71dc82e140b7f7ce58469230eb8fe0b804f71ac;p=openstack-build%2Fheat-build.git Pass Tags into scheduler_hints Change-Id: Idad6090c7baf0db943c999585dfe3bf33fc9492e Signed-off-by: Angus Salkeld --- diff --git a/heat/engine/instance.py b/heat/engine/instance.py index 9b904c4b..8d840a79 100644 --- a/heat/engine/instance.py +++ b/heat/engine/instance.py @@ -59,6 +59,11 @@ class Restarter(resources.Resource): class Instance(resources.Resource): # AWS does not require KeyName and InstanceType but we seem to + tags_schema = {'Key': {'Type': 'String', + 'Required': True}, + 'Value': {'Type': 'String', + 'Required': True}} + properties_schema = {'ImageId': {'Type': 'String', 'Required': True}, 'InstanceType': {'Type': 'String', @@ -87,7 +92,7 @@ class Instance(resources.Resource): 'SubnetId': {'Type': 'String', 'Implemented': False}, 'Tags': {'Type': 'List', - 'Implemented': False}, + 'Schema': tags_schema}, 'Tenancy': {'Type': 'String', 'AllowedValues': ['dedicated', 'default'], 'Implemented': False}, @@ -218,12 +223,21 @@ class Instance(resources.Resource): if o.name == flavor: flavor_id = o.id + scheduler_hints = {} + prop_tags = self.properties['Tags'] + if prop_tags: + for tm in prop_tags: + scheduler_hints[tm['Key']] = tm['Value'] + else: + scheduler_hints = None + server_userdata = self._build_userdata(userdata) server = self.nova().servers.create(name=self.name, image=image_id, flavor=flavor_id, key_name=key_name, security_groups=security_groups, - userdata=server_userdata) + userdata=server_userdata, + scheduler_hints=scheduler_hints) while server.status == 'BUILD': server.get() eventlet.sleep(1) diff --git a/heat/tests/test_resources.py b/heat/tests/test_resources.py index 2b0c2ceb..45cfc6e5 100644 --- a/heat/tests/test_resources.py +++ b/heat/tests/test_resources.py @@ -62,7 +62,7 @@ class instancesTest(unittest.TestCase): self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create(image=1, flavor=1, key_name='test', name='test_resource_name', security_groups=None, - userdata=server_userdata).\ + userdata=server_userdata, scheduler_hints=None).\ AndReturn(self.fc.servers.list()[1]) self.m.ReplayAll() @@ -108,7 +108,7 @@ class instancesTest(unittest.TestCase): self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create(image=1, flavor=1, key_name='test', name='test_resource_name', security_groups=None, - userdata=server_userdata).\ + userdata=server_userdata, scheduler_hints=None).\ AndReturn(self.fc.servers.list()[1]) self.m.ReplayAll() diff --git a/heat/tests/test_stacks.py b/heat/tests/test_stacks.py index c234303d..72d27d94 100644 --- a/heat/tests/test_stacks.py +++ b/heat/tests/test_stacks.py @@ -63,7 +63,7 @@ class stacksTest(unittest.TestCase): self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create(image=744, flavor=3, key_name='test', name='WebServer', security_groups=None, - userdata=server_userdata).\ + userdata=server_userdata, scheduler_hints=None).\ AndReturn(self.fc.servers.list()[-1]) return stack diff --git a/templates/HAProxy_Single_Instance.template b/templates/HAProxy_Single_Instance.template index 25f64003..47f6d8ef 100644 --- a/templates/HAProxy_Single_Instance.template +++ b/templates/HAProxy_Single_Instance.template @@ -75,6 +75,8 @@ "ImageId": "F16-x86_64-cfntools", "InstanceType": { "Ref": "InstanceType" }, "KeyName": { "Ref": "KeyName" }, + "Tags": [ {"Key": "Part", "Value": "long"}, + {"Key": "ready", "Value": "short"} ], "UserData": { "Fn::Base64": { "Fn::Join": ["", [ "#!/bin/bash -v\n", "/opt/aws/bin/cfn-init -s ",