Remove unknown parameters in patched update
When updating a stack with the existing flag, we keep the parameters
from the old template to be used against the new version. Sometimes
parameters will get remove and won't make sense anymore, and keeping
them would break update with a 'Parameter was not defined' error. This
filters out such parameters so that the updates succeed.
Change-Id: I6f2aa77da28d271dd001a137bb574b5470292f15
Closes-Bug: #1558610
diff --git a/functional/test_template_resource.py b/functional/test_template_resource.py
index 9a3e833..ebfd73e 100644
--- a/functional/test_template_resource.py
+++ b/functional/test_template_resource.py
@@ -935,3 +935,69 @@
stack_identifier,
self.main_template_update,
files={'resource.yaml': self.nested_templ_update})
+
+
+class TemplateResourceRemovedParamTest(functional_base.FunctionalTestsBase):
+
+ main_template = '''
+heat_template_version: 2013-05-23
+parameters:
+ value1:
+ type: string
+ default: foo
+resources:
+ my_resource:
+ type: resource.yaml
+ properties:
+ value1: {get_param: value1}
+'''
+ nested_templ = '''
+heat_template_version: 2013-05-23
+parameters:
+ value1:
+ type: string
+ default: foo
+resources:
+ test:
+ type: OS::Heat::TestResource
+ properties:
+ value: {get_param: value1}
+'''
+ main_template_update = '''
+heat_template_version: 2013-05-23
+resources:
+ my_resource:
+ type: resource.yaml
+'''
+ nested_templ_update = '''
+heat_template_version: 2013-05-23
+parameters:
+ value1:
+ type: string
+ default: foo
+ value2:
+ type: string
+ default: bar
+resources:
+ test:
+ type: OS::Heat::TestResource
+ properties:
+ value:
+ str_replace:
+ template: VAL1-VAL2
+ params:
+ VAL1: {get_param: value1}
+ VAL2: {get_param: value2}
+'''
+
+ def test_update(self):
+ stack_identifier = self.stack_create(
+ template=self.main_template,
+ environment={'parameters': {'value1': 'spam'}},
+ files={'resource.yaml': self.nested_templ})
+
+ self.update_stack(
+ stack_identifier,
+ self.main_template_update,
+ environment={'parameter_defaults': {'value2': 'egg'}},
+ files={'resource.yaml': self.nested_templ_update}, existing=True)