diff options
author | Zuul <zuul@review.openstack.org> | 2018-10-09 01:58:59 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2018-10-09 01:58:59 +0000 |
commit | bd22754328bcc1b087c4bd67c948ad87135ee249 (patch) | |
tree | 5fcbc548966d08b34e122c11a1d5cb4e439d47fd | |
parent | 6609ace385f1348e27bfe1a23ed656784477d953 (diff) | |
parent | 15621daea410f70b9d10bbf0bae5748269526931 (diff) | |
download | heat-bd22754328bcc1b087c4bd67c948ad87135ee249.tar.gz |
Merge "Update resource definitions after legacy in-place update" into stable/rocky
-rw-r--r-- | heat/engine/update.py | 2 | ||||
-rw-r--r-- | heat/tests/openstack/heat/test_value.py | 6 | ||||
-rw-r--r-- | heat_integrationtests/functional/test_create_update.py | 36 |
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') |