]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Pass Tags into scheduler_hints
authorAngus Salkeld <asalkeld@redhat.com>
Thu, 5 Jul 2012 11:18:26 +0000 (21:18 +1000)
committerAngus Salkeld <asalkeld@redhat.com>
Thu, 5 Jul 2012 11:18:26 +0000 (21:18 +1000)
Change-Id: Idad6090c7baf0db943c999585dfe3bf33fc9492e
Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
heat/engine/instance.py
heat/tests/test_resources.py
heat/tests/test_stacks.py
templates/HAProxy_Single_Instance.template

index 9b904c4b31531bdb2658eff8cf308b8bf4e8e74a..8d840a79d836ab7444de32211f2f986188a6306e 100644 (file)
@@ -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)
index 2b0c2cebbb27302a3fef54eebd463c1b2b7cacad..45cfc6e5015fd2a6bcdcb0f2b577e6006c4a194f 100644 (file)
@@ -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()
 
index c234303d4cf529cac6f1c2208c6333511b2cc82a..72d27d94716c9d86be09a5ae3ce8cc3ad32f0502 100644 (file)
@@ -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
index 25f640037914d75db6a5564fb53886dbd2cf4006..47f6d8efbc9e70ddf19f3dd77d35ba52f5779097 100644 (file)
@@ -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 ",