summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-10-09 01:58:59 +0000
committerGerrit Code Review <review@openstack.org>2018-10-09 01:58:59 +0000
commitbd22754328bcc1b087c4bd67c948ad87135ee249 (patch)
tree5fcbc548966d08b34e122c11a1d5cb4e439d47fd
parent6609ace385f1348e27bfe1a23ed656784477d953 (diff)
parent15621daea410f70b9d10bbf0bae5748269526931 (diff)
downloadheat-bd22754328bcc1b087c4bd67c948ad87135ee249.tar.gz
Merge "Update resource definitions after legacy in-place update" into stable/rocky
-rw-r--r--heat/engine/update.py2
-rw-r--r--heat/tests/openstack/heat/test_value.py6
-rw-r--r--heat_integrationtests/functional/test_create_update.py36
3 files changed, 41 insertions, 3 deletions
diff --git a/heat/engine/update.py b/heat/engine/update.py
index 3bd96cc3a..cd8baba62 100644
--- a/heat/engine/update.py
+++ b/heat/engine/update.py
@@ -184,6 +184,8 @@ class StackUpdate(object):
res_name)
self.previous_stack.t.add_resource(new_res.t)
self.previous_stack.t.store(self.previous_stack.context)
+ self.existing_stack.t.add_resource(new_res.t)
+ self.existing_stack.t.store(self.existing_stack.context)
LOG.info("Resource %(res_name)s for stack "
"%(stack_name)s updated",
diff --git a/heat/tests/openstack/heat/test_value.py b/heat/tests/openstack/heat/test_value.py
index 2f75c8d22..0ce0a500e 100644
--- a/heat/tests/openstack/heat/test_value.py
+++ b/heat/tests/openstack/heat/test_value.py
@@ -226,7 +226,7 @@ class TestValueUpdate(TestValue):
param2=True, param_type2="boolean")),
]
- def test_value(self):
+ def test_value_update(self):
ts1, tl1 = self.get_strict_and_loose_templates(self.param_type1)
ts2, tl2 = self.get_strict_and_loose_templates(self.param_type2)
@@ -244,7 +244,7 @@ class TestValueUpdate(TestValue):
else:
# starting with param2, updating to param1
p2, p1, e2, e1 = self.param1, self.param2, env1, env2
- stack = self.create_stack(t_initial, env=e1)
+ stack = self.create_stack(copy.deepcopy(t_initial), env=e1)
self.assertEqual(p1, stack['my_value2'].FnGetAtt('value'))
res1_id = stack['my_value'].id
res2_id = stack['my_value2'].id
@@ -252,7 +252,7 @@ class TestValueUpdate(TestValue):
updated_stack = parser.Stack(
stack.context, 'updated_stack',
- template.Template(t_updated, env=e2))
+ template.Template(copy.deepcopy(t_updated), env=e2))
updated_stack.validate()
stack.update(updated_stack)
self.assertEqual(p2, stack['my_value2'].FnGetAtt('value'))
diff --git a/heat_integrationtests/functional/test_create_update.py b/heat_integrationtests/functional/test_create_update.py
index 500579731..b5793685f 100644
--- a/heat_integrationtests/functional/test_create_update.py
+++ b/heat_integrationtests/functional/test_create_update.py
@@ -730,3 +730,39 @@ resources:
}
}
self._test_conditional(test3)
+
+ def test_inplace_update_old_ref_deleted_failed_stack(self):
+ template = '''
+heat_template_version: rocky
+resources:
+ test1:
+ type: OS::Heat::TestResource
+ properties:
+ value: test
+ test2:
+ type: OS::Heat::TestResource
+ properties:
+ value: {get_attr: [test1, output]}
+ test3:
+ type: OS::Heat::TestResource
+ properties:
+ value: test3
+ fail: false
+ action_wait_secs:
+ update: 5
+'''
+ stack_identifier = self.stack_create(
+ template=template)
+
+ _template = template.replace('test1:',
+ 'test-1:').replace('fail: false',
+ 'fail: true')
+ updated_template = _template.replace(
+ '{get_attr: [test1',
+ '{get_attr: [test-1').replace('value: test3',
+ 'value: test-3')
+ self.update_stack(stack_identifier,
+ template=updated_template,
+ expected_status='UPDATE_FAILED')
+ self.update_stack(stack_identifier, template=template,
+ expected_status='UPDATE_COMPLETE')