Allow resource groups of 0 resources
Change-Id: I16fb23afe1ef3fd91a4f5d8aa2bd7fea04ffc21e Closes-Bug: 1339292
This commit is contained in:
parent
f96cecfa4b
commit
efc195c80d
|
@ -89,7 +89,7 @@ class ResourceGroup(stack_resource.StackResource):
|
|||
_('The number of instances to create.'),
|
||||
default=1,
|
||||
constraints=[
|
||||
constraints.Range(min=1),
|
||||
constraints.Range(min=0),
|
||||
],
|
||||
update_allowed=True
|
||||
),
|
||||
|
@ -145,13 +145,14 @@ class ResourceGroup(stack_resource.StackResource):
|
|||
|
||||
def handle_create(self):
|
||||
count = self.properties[self.COUNT]
|
||||
return self.create_with_template(self._assemble_nested(count),
|
||||
{},
|
||||
self.stack.timeout_mins)
|
||||
if count > 0:
|
||||
return self.create_with_template(self._assemble_nested(count),
|
||||
{},
|
||||
self.stack.timeout_mins)
|
||||
|
||||
def handle_update(self, new_snippet, tmpl_diff, prop_diff):
|
||||
count = prop_diff.get(self.COUNT)
|
||||
if count:
|
||||
if count is not None:
|
||||
return self.update_with_template(self._assemble_nested(count),
|
||||
{},
|
||||
self.stack.timeout_mins)
|
||||
|
|
|
@ -195,6 +195,8 @@ class StackResource(resource.Resource):
|
|||
return stack_creator
|
||||
|
||||
def check_create_complete(self, stack_creator):
|
||||
if stack_creator is None:
|
||||
return True
|
||||
done = stack_creator.step()
|
||||
if done:
|
||||
if self._nested.state != (self._nested.CREATE,
|
||||
|
|
|
@ -303,6 +303,12 @@ class ResourceGroupTest(common.HeatTestCase):
|
|||
resgrp = resource_group.ResourceGroup('test', snip, stack)
|
||||
self.assertIsNone(resgrp.validate())
|
||||
|
||||
def test_zero_resources(self):
|
||||
noresources = copy.deepcopy(template)
|
||||
noresources['resources']['group1']['properties']['count'] = 0
|
||||
resg = self._create_dummy_stack(noresources, expect_count=0)
|
||||
self.assertEqual((resg.CREATE, resg.COMPLETE), resg.state)
|
||||
|
||||
def test_delete(self):
|
||||
"""Test basic delete."""
|
||||
resg = self._create_dummy_stack()
|
||||
|
@ -395,12 +401,15 @@ class ResourceGroupTest(common.HeatTestCase):
|
|||
self.assertRaises(exception.InvalidTemplateAttribute, resg.FnGetAtt,
|
||||
'resource.2')
|
||||
|
||||
def _create_dummy_stack(self, template_data=template):
|
||||
def _create_dummy_stack(self, template_data=template, expect_count=2):
|
||||
stack = utils.parse_stack(template_data)
|
||||
resg = stack['group1']
|
||||
scheduler.TaskRunner(resg.create)()
|
||||
self.stack = resg.nested()
|
||||
self.assertEqual(2, len(resg.nested()))
|
||||
if expect_count > 0:
|
||||
self.assertEqual(expect_count, len(resg.nested()))
|
||||
else:
|
||||
self.assertIsNone(resg.nested())
|
||||
self.assertEqual((resg.CREATE, resg.COMPLETE), resg.state)
|
||||
return resg
|
||||
|
||||
|
|
Loading…
Reference in New Issue