Merge "Convergence: Allow creating stacks of empty templates"

This commit is contained in:
Jenkins 2015-07-15 09:07:44 +00:00 committed by Gerrit Code Review
commit 02253843ac
2 changed files with 23 additions and 9 deletions

View File

@ -991,15 +991,19 @@ class Stack(collections.Mapping):
self.convergence_dependencies.graph().edges()]} self.convergence_dependencies.graph().edges()]}
self.store() self.store()
for rsrc_id, is_update in self.convergence_dependencies.leaves(): leaves = set(self.convergence_dependencies.leaves())
LOG.info(_LI("Triggering resource %(rsrc_id)s " if not any(leaves):
"for %(is_update)s update"), self.mark_complete(self.current_traversal)
{'rsrc_id': rsrc_id, 'is_update': is_update}) else:
input_data = {'input_data': {}, for rsrc_id, is_update in self.convergence_dependencies.leaves():
'adopt_stack_data': self.adopt_stack_data} LOG.info(_LI("Triggering resource %(rsrc_id)s "
self.worker_client.check_resource(self.context, rsrc_id, "for %(is_update)s update"),
self.current_traversal, {'rsrc_id': rsrc_id, 'is_update': is_update})
input_data, is_update) input_data = {'input_data': {},
'adopt_stack_data': self.adopt_stack_data}
self.worker_client.check_resource(self.context, rsrc_id,
self.current_traversal,
input_data, is_update)
def _get_best_existing_rsrc_db(self, rsrc_name): def _get_best_existing_rsrc_db(self, rsrc_name):
candidate = None candidate = None

View File

@ -189,6 +189,16 @@ class StackConvergenceCreateUpdateDeleteTest(common.HeatTestCase):
super(StackConvergenceCreateUpdateDeleteTest, self).setUp() super(StackConvergenceCreateUpdateDeleteTest, self).setUp()
cfg.CONF.set_override('convergence_engine', True) cfg.CONF.set_override('convergence_engine', True)
@mock.patch.object(parser.Stack, 'mark_complete')
def test_converge_empty_template(self, mock_mc, mock_cr):
empty_tmpl = templatem.Template.create_empty_template()
stack = parser.Stack(utils.dummy_context(), 'empty_tmpl_stack',
empty_tmpl, convergence=True)
stack.store()
stack.converge_stack(template=stack.t, action=stack.CREATE)
self.assertFalse(mock_cr.called)
mock_mc.assert_called_once_with(stack.current_traversal)
def test_conv_wordpress_single_instance_stack_create(self, mock_cr): def test_conv_wordpress_single_instance_stack_create(self, mock_cr):
stack = tools.get_stack('test_stack', utils.dummy_context(), stack = tools.get_stack('test_stack', utils.dummy_context(),
convergence=True) convergence=True)