Merge "Convergence: Update stack attributes."

This commit is contained in:
Jenkins 2015-07-01 13:23:19 +00:00 committed by Gerrit Code Review
commit 08637b5e1c
3 changed files with 18 additions and 4 deletions

View File

@ -783,7 +783,8 @@ class EngineService(service.Service):
# Once all the validations are done
# if convergence is enabled, take the convergence path
if current_kwargs['convergence']:
current_stack.converge_stack(template=tmpl)
current_stack.converge_stack(template=tmpl,
new_stack=updated_stack)
else:
event = eventlet.event.Event()
th = self.thread_group_mgr.start_with_lock(cnxt, current_stack,

View File

@ -936,7 +936,7 @@ class Stack(collections.Mapping):
updater()
@profiler.trace('Stack.converge_stack', hide_args=False)
def converge_stack(self, template, action=UPDATE):
def converge_stack(self, template, action=UPDATE, new_stack=None):
"""
Updates the stack and triggers convergence for resources
"""
@ -948,6 +948,18 @@ class Stack(collections.Mapping):
previous_traversal = self.current_traversal
self.current_traversal = uuidutils.generate_uuid()
self.updated_time = datetime.datetime.utcnow()
if new_stack is not None:
self.disable_rollback = new_stack.disable_rollback
self.timeout_mins = new_stack.timeout_mins
self._set_param_stackid()
self.tags = new_stack.tags
if new_stack.tags:
stack_tag_object.StackTagList.set(self.context, self.id,
new_stack.tags)
else:
stack_tag_object.StackTagList.delete(self.context, self.id)
self.store()
# TODO(later): lifecycle_plugin_utils.do_pre_ops

View File

@ -1292,6 +1292,7 @@ class StackConvergenceServiceCreateUpdateTest(common.HeatTestCase):
old_stack = tools.get_stack(stack_name, self.ctx,
template=tools.string_template_five,
convergence=True)
old_stack.timeout_mins = 1
sid = old_stack.store()
s = stack_object.Stack.get_by_id(self.ctx, sid)
@ -1311,7 +1312,7 @@ class StackConvergenceServiceCreateUpdateTest(common.HeatTestCase):
user_creds_id=old_stack.user_creds_id,
stack_user_project_id=old_stack.stack_user_project_id,
timeout_mins=60,
disable_rollback=True,
disable_rollback=False,
parent_resource=None,
strict_validate=True,
tenant_id=old_stack.tenant_id,
@ -1326,7 +1327,7 @@ class StackConvergenceServiceCreateUpdateTest(common.HeatTestCase):
self.m.ReplayAll()
api_args = {'timeout_mins': 60}
api_args = {'timeout_mins': 60, 'disable_rollback': False}
result = self.man.update_stack(self.ctx, old_stack.identifier(),
template, params, None, api_args)
self.assertEqual(old_stack.convergence, True)