Merge "Fix resource-list with nested_depth in convergence"

This commit is contained in:
Jenkins 2016-11-08 07:52:57 +00:00 committed by Gerrit Code Review
commit 77939dc9cb
2 changed files with 11 additions and 12 deletions

View File

@ -310,7 +310,7 @@ class Stack(collections.Mapping):
return self._resources
def _find_filtered_resources(self, filters):
def _find_filtered_resources(self, filters=None):
template_cache = {self.t.id: self.t}
if filters:
resources = resource_objects.Resource.get_all_by_stack(
@ -328,12 +328,13 @@ class Stack(collections.Mapping):
for res in self._find_filtered_resources(filters):
yield res
for res in six.itervalues(self.resources):
resources = self._find_filtered_resources()
for res in resources:
if not res.has_nested() or nested_depth == 0:
continue
nested_stack = res.nested()
if not nested_stack:
if nested_stack is None:
continue
for nested_res in nested_stack.iter_resources(nested_depth - 1,
filters):

View File

@ -327,8 +327,9 @@ class StackTest(common.HeatTestCase):
yield 'Y'
yield 'Z'
self.stack['A'].nested = mock.MagicMock()
self.stack['A'].nested.return_value.iter_resources = mock.MagicMock(
mock_nested = self.patchobject(generic_rsrc.StackResourceType,
'nested')
mock_nested.return_value.iter_resources = mock.MagicMock(
side_effect=get_more)
resource_generator = self.stack.iter_resources()
@ -395,12 +396,9 @@ class StackTest(common.HeatTestCase):
def get_more(nested_depth=0, filters=None):
if filters:
yield 'X'
self.stack['A'].nested = mock.Mock()
self.stack['B'].nested = mock.Mock()
self.stack['A'].nested.return_value.iter_resources = mock.Mock(
side_effect=get_more)
self.stack['B'].nested.return_value.iter_resources = mock.Mock(
mock_nested = self.patchobject(generic_rsrc.StackResourceType,
'nested')
mock_nested.return_value.iter_resources = mock.MagicMock(
side_effect=get_more)
all_resources = list(self.stack.iter_resources(
@ -410,8 +408,8 @@ class StackTest(common.HeatTestCase):
# Verify, the db query is called with expected filter
mock_db_call.assert_has_calls([
mock.call(self.ctx, self.stack.id),
mock.call(self.ctx, self.stack.id, dict(name=['A'])),
mock.call(self.ctx, self.stack.id),
])
# Returns three resources (1 first level + 2 second level)