]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Move resolved template comparison to stack update
authorSteve Baker <sbaker@redhat.com>
Wed, 12 Dec 2012 01:48:17 +0000 (14:48 +1300)
committerSteve Baker <sbaker@redhat.com>
Wed, 12 Dec 2012 03:02:40 +0000 (16:02 +1300)
This partially reverts the following commit
https://review.openstack.org/#/c/17563/3

Resource comparison is now done as per Zane's last comment in that review.

Change-Id: I1663d262b79603ab86bc5bdb4f2ee75e87c0075e

heat/engine/parser.py
heat/engine/resource.py

index 8abb9cc953024644bc239b66baece8952c017b46..de415d2153db6d1f6a29527d7e1b891d9695caaa 100644 (file)
@@ -309,7 +309,9 @@ class Stack(object):
                 # Currently all resource have a default handle_update method
                 # which returns "requires replacement" (res.UPDATE_REPLACE)
                 for res in newstack:
-                    if self[res.name] != res:
+                    if self.resolve_runtime_data(
+                        self[res.name].t) != self.resolve_runtime_data(res.t):
+
                         # Can fail if underlying resource class does not
                         # implement update logic or update requires replacement
                         retval = self[res.name].update(res.parsed_template())
index fad416eb9076894414c5bb53a862244562aabb00..c71602bec575aea87840e81476fbaa40107bcad8 100644 (file)
@@ -139,8 +139,7 @@ class Resource(object):
         # equal if their names and parsed_templates are the same
         if isinstance(other, Resource):
             return (self.name == other.name) and (
-                self.parsed_template() == self.parsed_template(
-                    template=other.t))
+                self.parsed_template() == other.parsed_template())
         return NotImplemented
 
     def __ne__(self, other):
@@ -158,14 +157,14 @@ class Resource(object):
         return identifier.ResourceIdentifier(resource_name=self.name,
                                              **self.stack.identifier())
 
-    def parsed_template(self, section=None, default={}, template=None):
+    def parsed_template(self, section=None, default={}):
         '''
         Return the parsed template data for the resource. May be limited to
         only one section of the data, in which case a default value may also
         be supplied.
         '''
         if section is None:
-            template = template or self.t
+            template = self.t
         else:
             template = self.t.get(section, default)
         return self.stack.resolve_runtime_data(template)