Merge "LaunchConfiguration replace on changed Metadata"

This commit is contained in:
Jenkins 2014-08-06 22:54:58 +00:00 committed by Gerrit Code Review
commit 912044e205
2 changed files with 38 additions and 0 deletions

View File

@ -824,6 +824,10 @@ class LaunchConfiguration(resource.Resource):
),
}
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
if 'Metadata' in tmpl_diff:
raise resource.UpdateReplace(self.name)
def FnGetRefId(self):
return unicode(self.physical_resource_name())

View File

@ -46,6 +46,7 @@ ig_template = '''
"JobServerConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Metadata": {"foo": "bar"},
"Properties": {
"ImageId" : "foo",
"InstanceType" : "m1.large",
@ -327,3 +328,36 @@ class InstanceGroupTest(HeatTestCase):
rsrc.delete()
self.m.VerifyAll()
def test_update_config_metadata(self):
t = template_format.parse(ig_template)
properties = t['Resources']['JobServerGroup']['Properties']
properties['Size'] = '2'
stack = utils.parse_stack(t)
self._stub_create(2)
self.m.ReplayAll()
rsrc = self.create_resource(t, stack, 'JobServerConfig')
self.create_resource(t, stack, 'JobServerGroup')
props = copy.copy(rsrc.properties.data)
metadata = copy.copy(rsrc.metadata_get())
update_snippet = rsrc_defn.ResourceDefinition(rsrc.name,
rsrc.type(),
props,
metadata)
# Change nothing in the first update
scheduler.TaskRunner(rsrc.update, update_snippet)()
self.assertEqual('bar', metadata['foo'])
metadata['foo'] = 'wibble'
update_snippet = rsrc_defn.ResourceDefinition(rsrc.name,
rsrc.type(),
props,
metadata)
# Changing metadata in the second update triggers UpdateReplace
updater = scheduler.TaskRunner(rsrc.update, update_snippet)
self.assertRaises(resource.UpdateReplace, updater)
self.m.VerifyAll()