LaunchConfiguration replace on changed Metadata
This makes AWS::AutoScaling::LaunchConfiguration raise an UpdateReplace if its template Metadata is changed on a stack update. Any changes to LaunchConfiguration should result in the resource being replaced, since this is how those changes propagate to the scaling group. This fixes a regression which has likely existed since update_allowed_keys was removed: I78494aba07b6badeca8e95f1875ca8e4b9b0290c Change-Id: I3a53422ed862777dffb9cac28088fbfe8dd417fa Closes-Bug: #1287953
This commit is contained in:
parent
586395b132
commit
404bcbdacc
|
@ -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())
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue