StackResource set requires_deferred_auth=True

The dynamic evaluation of requires_deferred_auth will not work
as the nested stack has not been created when requires_deferred_auth
is evaluated.

In some cases subclasses of StackResource could implement dynamic
evaluation but for now it is safer to assume any template with a
nested stack needs requires_deferred_auth=True

Change-Id: I4ca3804ede5c7aa2167931279e5bed84480ac454
Closes-Bug: #1229412
This commit is contained in:
Steve Baker 2013-09-24 10:33:57 +12:00
parent cf38339328
commit 44d759db8a
2 changed files with 5 additions and 17 deletions

View File

@ -34,6 +34,11 @@ class StackResource(resource.Resource):
as a resource in a parent stack.
'''
# Assume True as this is evaluated before the stack is created
# so there is no way to know for sure without subclass-specific
# template parsing.
requires_deferred_auth = True
def __init__(self, name, json_snippet, stack):
super(StackResource, self).__init__(name, json_snippet, stack)
self._nested = None
@ -43,10 +48,6 @@ class StackResource(resource.Resource):
else:
self.recursion_depth = 0
@property
def requires_deferred_auth(self):
return self.nested().requires_deferred_auth()
def _outputs_to_attribs(self, json_snippet):
if not self.attributes and 'Outputs' in json_snippet:
self.attributes_schema = (

View File

@ -384,16 +384,3 @@ class StackResourceTest(HeatTestCase):
self.m.VerifyAll()
# Restore state_set to let clean up proceed
self.stack.state_set = st_set
@utils.stack_delete_after
def test_requires_deferred_auth(self):
self.parent_resource.create_with_template(self.templ,
{"KeyName": "key"})
stack = self.parent_resource.nested()
self.assertFalse(self.parent_resource.requires_deferred_auth)
# make the resource in the nested stack require deferred auth
stack['WebServer'].requires_deferred_auth = True
self.assertTrue(self.parent_resource.requires_deferred_auth)