]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
heat engine : Re-resolve resource static data before create
authorSteven Hardy <shardy@redhat.com>
Tue, 26 Feb 2013 14:17:00 +0000 (14:17 +0000)
committerSteven Hardy <shardy@redhat.com>
Wed, 27 Feb 2013 16:17:30 +0000 (16:17 +0000)
Re-resolve the template static data before creating the resource,
or we resolve the wrong value for the AWS::StackId pseudo parameter
which is updated after the parser.Stack gets stored.

ref bug 1131666

Change-Id: I68e87366d379356fd7f2685367300abe5594d6f6

heat/engine/resource.py

index 0623df377efb5af9964cb730735bf96b27beedd6..9b5dd911f206ab3555abc0c81a01b3ae1321ccd9 100644 (file)
@@ -127,6 +127,7 @@ class Resource(object):
         self.stack = stack
         self.context = stack.context
         self.name = name
+        self.json_snippet = json_snippet
         self.t = stack.resolve_static_data(json_snippet)
         self.properties = Properties(self.properties_schema,
                                      self.t.get('Properties', {}),
@@ -282,6 +283,15 @@ class Resource(object):
 
         logger.info('creating %s' % str(self))
 
+        # Re-resolve the template, since if the resource Ref's
+        # the AWS::StackId pseudo parameter, it will change after
+        # the parser.Stack is stored (which is after the resources
+        # are __init__'d, but before they are create()'d)
+        self.t = self.stack.resolve_static_data(self.json_snippet)
+        self.properties = Properties(self.properties_schema,
+                                     self.t.get('Properties', {}),
+                                     self.stack.resolve_runtime_data,
+                                     self.name)
         try:
             err = self.properties.validate()
             if err: