diff --git a/heat/engine/function.py b/heat/engine/function.py index 70378f9733..0855f2dfdc 100644 --- a/heat/engine/function.py +++ b/heat/engine/function.py @@ -127,8 +127,8 @@ class Function(object): def resolve(snippet): - while isinstance(snippet, Function): - snippet = snippet.result() + if isinstance(snippet, Function): + return snippet.result() if isinstance(snippet, collections.Mapping): return dict((k, resolve(v)) for k, v in snippet.items()) diff --git a/heat/engine/resources/openstack/heat/resource_group.py b/heat/engine/resources/openstack/heat/resource_group.py index fb5567df42..c2eba81c00 100644 --- a/heat/engine/resources/openstack/heat/resource_group.py +++ b/heat/engine/resources/openstack/heat/resource_group.py @@ -464,9 +464,9 @@ class ResourceGroup(stack_resource.StackResource): # assigned. Pass in a custom resolver to the properties to not # error when a parameter does not have a user entered value. def ignore_param_resolve(snippet): - while isinstance(snippet, function.Function): + if isinstance(snippet, function.Function): try: - snippet = snippet.result() + return snippet.result() except exception.UserParameterMissing: return None