]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Always resolve properties against the current stack
authorZane Bitter <zbitter@redhat.com>
Mon, 26 Aug 2013 19:11:58 +0000 (21:11 +0200)
committerZane Bitter <zbitter@redhat.com>
Mon, 26 Aug 2013 19:11:58 +0000 (21:11 +0200)
During an update, resources can get moved around between stacks. Ensure
that the properties are always resolved against whatever the current stack
is, without needing to replace self.properties.

Change-Id: I09f984cdf4478ca7dda2b0a0f1aa5a63dd2c19bc

heat/engine/resource.py

index e242840b7985b2a36adaf524085007cd80dd54d4..302693ff18c06c4471e2c95c238c679742f63be0 100644 (file)
@@ -138,7 +138,7 @@ class Resource(object):
         self.t = stack.resolve_static_data(json_snippet)
         self.properties = Properties(self.properties_schema,
                                      self.t.get('Properties', {}),
-                                     self.stack.resolve_runtime_data,
+                                     self._resolve_runtime_data,
                                      self.name)
         self.attributes = Attributes(self.name,
                                      self.attributes_schema,
@@ -184,6 +184,9 @@ class Resource(object):
     def type(self):
         return self.t['Type']
 
+    def _resolve_runtime_data(self, snippet):
+        return self.stack.resolve_runtime_data(snippet)
+
     def has_interface(self, resource_type):
         """Check to see if this resource is either mapped to resource_type
         or is a "resource_type".
@@ -209,7 +212,7 @@ class Resource(object):
             template = self.t
         else:
             template = self.t.get(section, default)
-        return self.stack.resolve_runtime_data(template)
+        return self._resolve_runtime_data(template)
 
     def update_template_diff(self, after, before):
         '''
@@ -386,7 +389,7 @@ class Resource(object):
         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._resolve_runtime_data,
                                      self.name)
         return self._do_action(action, self.properties.validate)
 
@@ -411,7 +414,7 @@ class Resource(object):
             self.state_set(action, self.IN_PROGRESS)
             properties = Properties(self.properties_schema,
                                     after.get('Properties', {}),
-                                    self.stack.resolve_runtime_data,
+                                    self._resolve_runtime_data,
                                     self.name)
             properties.validate()
             tmpl_diff = self.update_template_diff(after, before)