55a785afcc
The 'is_different' utility function was relying on the sequence of dictionary keys when determining whether the objects are different or not, which is incorrect, since Python does not guarantee the order of keys in regular dictionaries. This was causing the function to report false inequalities after the Heat Stack is pushed, thus causing murano to re-push the stack even if it was not modified in between. The calls of the 'is_different' method were replaced with simple equality check which are guaranteed to return appropriate result. The only known limitation of such approach is its inability to check for circular references. However this is not the case for Murano-generate Heat snippets, since all the variables in MuranoPL are immutable and it's impossible to create a circular-referencing snippet with MuranoPL. Thus it is safe to completely remove 'is_different' method and all related code. The same patch also introduces a simple check which verifies that the HeatStack.update_template() method introduces an actual change into the template, or does not cause a subsequent push() call otherwise. Change-Id: Ia71b44ed62f39d9c89630c5a5c21b79c7c17ea9d Closes-bug: #1594451 |
||
---|---|---|
.. | ||
principal_objects | ||
__init__.py | ||
attribute_store.py | ||
constants.py | ||
context_manager.py | ||
dsl_exception.py | ||
dsl_types.py | ||
dsl.py | ||
exceptions.py | ||
executor.py | ||
expressions.py | ||
helpers.py | ||
lhs_expression.py | ||
macros.py | ||
meta.py | ||
murano_method.py | ||
murano_object.py | ||
murano_package.py | ||
murano_property.py | ||
murano_type.py | ||
namespace_resolver.py | ||
object_store.py | ||
package_loader.py | ||
reflection.py | ||
serializer.py | ||
session_local_storage.py | ||
type_scheme.py | ||
typespec.py | ||
virtual_exceptions.py | ||
yaql_expression.py | ||
yaql_functions.py | ||
yaql_integration.py |