Add a test for environment change in failed update
Add a functional test which verifies that adding a new resource during an update, with a new custom resource type mapping in the environment, allows for recovery when the update fails. Change-Id: I7e52703b7f45c79a3a1434200d1e49988e78f333 Related-Bug: 1508096
This commit is contained in:
@@ -501,3 +501,35 @@ resources:
|
||||
existing=True)
|
||||
self.assertEqual({u'aresource': u'OS::Heat::TestResource'},
|
||||
self.list_resources(stack_identifier))
|
||||
|
||||
def test_stack_update_with_new_env(self):
|
||||
"""Update handles new resource types in the environment.
|
||||
|
||||
If a resource type appears during an update and the update fails,
|
||||
retrying the update is able to find the type properly in the
|
||||
environment.
|
||||
"""
|
||||
stack_identifier = self.stack_create(
|
||||
template=test_template_one_resource)
|
||||
|
||||
# Update with a new resource and make the update fails
|
||||
template = _change_rsrc_properties(test_template_one_resource,
|
||||
['test1'], {'fail': True})
|
||||
template['resources']['test2'] = {'type': 'My::TestResource'}
|
||||
template['resources']['test1']['depends_on'] = 'test2'
|
||||
env = {'resource_registry':
|
||||
{'My::TestResource': 'OS::Heat::TestResource'}}
|
||||
self.update_stack(stack_identifier,
|
||||
template=template,
|
||||
environment=env,
|
||||
expected_status='UPDATE_FAILED')
|
||||
|
||||
# Fixing the template should fix the stack
|
||||
template = _change_rsrc_properties(template,
|
||||
['test1'], {'fail': False})
|
||||
self.update_stack(stack_identifier,
|
||||
template=template,
|
||||
environment=env)
|
||||
self.assertEqual({'test1': 'OS::Heat::TestResource',
|
||||
'test2': 'My::TestResource'},
|
||||
self.list_resources(stack_identifier))
|
||||
|
||||
Reference in New Issue
Block a user