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',
'SubnetId': {'Type': 'String',
'Implemented': False},
'Tags': {'Type': 'List',
- 'Implemented': False},
+ 'Schema': tags_schema},
'Tenancy': {'Type': 'String',
'AllowedValues': ['dedicated', 'default'],
'Implemented': False},
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)
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()
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()
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
"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 ",