Merge "Add functional test for conditions during updates"
diff --git a/functional/test_create_update.py b/functional/test_create_update.py
index ae81463..4407138 100644
--- a/functional/test_create_update.py
+++ b/functional/test_create_update.py
@@ -17,7 +17,7 @@
from heat_integrationtests.functional import functional_base
test_template_one_resource = {
- 'heat_template_version': '2013-05-23',
+ 'heat_template_version': 'pike',
'description': 'Test template to create one instance.',
'resources': {
'test1': {
@@ -36,7 +36,7 @@
}
test_template_two_resource = {
- 'heat_template_version': '2013-05-23',
+ 'heat_template_version': 'pike',
'description': 'Test template to create two instance.',
'resources': {
'test1': {
@@ -673,3 +673,30 @@
template=template,
expected_status='UPDATE_FAILED')
self._stack_delete(stack_identifier)
+
+ def test_stack_update_with_conditions(self):
+ """Update manages new conditions added.
+
+ When a new resource is added during updates, the stacks handles the new
+ conditions correctly, and doesn't fail to load them while the update is
+ still in progress.
+ """
+ stack_identifier = self.stack_create(
+ template=test_template_one_resource)
+
+ updated_template = copy.deepcopy(test_template_two_resource)
+ updated_template['conditions'] = {'cond1': True}
+ updated_template['resources']['test3'] = {
+ 'type': 'OS::Heat::TestResource',
+ 'properties': {
+ 'value': {'if': ['cond1', 'val3', 'val4']}
+ }
+ }
+ test2_props = updated_template['resources']['test2']['properties']
+ test2_props['action_wait_secs'] = {'create': 30}
+
+ self.update_stack(stack_identifier,
+ template=updated_template,
+ expected_status='UPDATE_IN_PROGRESS')
+
+ self.assertIn('test3', self.list_resources(stack_identifier))