summaryrefslogtreecommitdiff
path: root/heat/tests/engine/service/test_stack_update.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-02-24 16:35:58 +0000
committerGerrit Code Review <review@openstack.org>2016-02-24 16:35:59 +0000
commit571393a63b0a3cd207417f067bdbd77d68ac180f (patch)
tree50abed9b554672abe107e7debcf957c3ab66c8cf /heat/tests/engine/service/test_stack_update.py
parent75e945a8514e2ee577e6f2910d3d13422b55854b (diff)
parent98262c10d8ce0e69e3a4cf53b3d3eca191d26b41 (diff)
downloadheat-571393a63b0a3cd207417f067bdbd77d68ac180f.tar.gz
Merge "Immutable parameters"
Diffstat (limited to 'heat/tests/engine/service/test_stack_update.py')
-rw-r--r--heat/tests/engine/service/test_stack_update.py106
1 files changed, 106 insertions, 0 deletions
diff --git a/heat/tests/engine/service/test_stack_update.py b/heat/tests/engine/service/test_stack_update.py
index 22974258c..070e08f66 100644
--- a/heat/tests/engine/service/test_stack_update.py
+++ b/heat/tests/engine/service/test_stack_update.py
@@ -706,6 +706,112 @@ class ServiceStackUpdateTest(common.HeatTestCase):
self.assertIn("PATCH update to non-COMPLETE stack",
six.text_type(ex.exc_info[1]))
+ def test_update_immutable_parameter_disallowed(self):
+
+ template = '''
+heat_template_version: 2014-10-16
+parameters:
+ param1:
+ type: string
+ immutable: true
+ default: foo
+'''
+
+ self.ctx = utils.dummy_context(password=None)
+ stack_name = 'test_update_immutable_parameters'
+ params = {}
+ old_stack = tools.get_stack(stack_name, self.ctx,
+ template=template)
+ sid = old_stack.store()
+ old_stack.set_stack_user_project_id('1234')
+ s = stack_object.Stack.get_by_id(self.ctx, sid)
+
+ # prepare mocks
+ self.patchobject(self.man, '_get_stack', return_value=s)
+ self.patchobject(stack, 'Stack', return_value=old_stack)
+ self.patchobject(stack.Stack, 'load', return_value=old_stack)
+ self.patchobject(templatem, 'Template', return_value=old_stack.t)
+ self.patchobject(environment, 'Environment',
+ return_value=old_stack.env)
+
+ params = {'param1': 'bar'}
+ exc = self.assertRaises(dispatcher.ExpectedException,
+ self.man.update_stack,
+ self.ctx, old_stack.identifier(),
+ templatem.Template(template), params,
+ None, {})
+ self.assertEqual(exception.ImmutableParameterModified, exc.exc_info[0])
+ self.assertEqual('The following parameters are immutable and may not '
+ 'be updated: param1', exc.exc_info[1].message)
+
+ def test_update_mutable_parameter_allowed(self):
+
+ template = '''
+heat_template_version: 2014-10-16
+parameters:
+ param1:
+ type: string
+ immutable: false
+ default: foo
+'''
+
+ self.ctx = utils.dummy_context(password=None)
+ stack_name = 'test_update_immutable_parameters'
+ params = {}
+ old_stack = tools.get_stack(stack_name, self.ctx,
+ template=template)
+ sid = old_stack.store()
+ old_stack.set_stack_user_project_id('1234')
+ s = stack_object.Stack.get_by_id(self.ctx, sid)
+
+ # prepare mocks
+ self.patchobject(self.man, '_get_stack', return_value=s)
+ self.patchobject(stack, 'Stack', return_value=old_stack)
+ self.patchobject(stack.Stack, 'load', return_value=old_stack)
+ self.patchobject(templatem, 'Template', return_value=old_stack.t)
+ self.patchobject(environment, 'Environment',
+ return_value=old_stack.env)
+
+ params = {'param1': 'bar'}
+ result = self.man.update_stack(self.ctx, old_stack.identifier(),
+ templatem.Template(template), params,
+ None, {})
+ self.assertEqual(s.id, result['stack_id'])
+
+ def test_update_immutable_parameter_same_value(self):
+
+ template = '''
+heat_template_version: 2014-10-16
+parameters:
+ param1:
+ type: string
+ immutable: true
+ default: foo
+'''
+
+ self.ctx = utils.dummy_context(password=None)
+ stack_name = 'test_update_immutable_parameters'
+ params = {}
+ old_stack = tools.get_stack(stack_name, self.ctx,
+ template=template)
+ sid = old_stack.store()
+ old_stack.set_stack_user_project_id('1234')
+ s = stack_object.Stack.get_by_id(self.ctx, sid)
+
+ # prepare mocks
+ self.patchobject(self.man, '_get_stack', return_value=s)
+ self.patchobject(stack, 'Stack', return_value=old_stack)
+ self.patchobject(stack.Stack, 'load', return_value=old_stack)
+ self.patchobject(templatem, 'Template', return_value=old_stack.t)
+ self.patchobject(environment, 'Environment',
+ return_value=old_stack.env)
+
+ params = {'param1': 'foo'}
+ result = self.man.update_stack(self.ctx, old_stack.identifier(),
+ templatem.Template(template), params,
+ None, {})
+ self.assertEqual(s.id, result['stack_id'])
+
class ServiceStackUpdatePreviewTest(common.HeatTestCase):