deb-murano/murano/dsl
Alexander Tivelkov 55a785afcc Fixed a bug when Heat Stack Update was called without template changes
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
2016-06-20 20:19:21 +03:00
..
principal_objects Use more generic "type" name instead of "murano_class" 2016-02-26 17:25:25 +03:00
__init__.py Rename muranoapi to murano 2014-05-27 15:14:44 +04:00
attribute_store.py Use more generic "type" name instead of "murano_class" 2016-02-26 17:25:25 +03:00
constants.py Extension methods were introduced to MuranoPL 2016-03-03 15:01:30 +00:00
context_manager.py Use more generic "type" name instead of "murano_class" 2016-02-26 17:25:25 +03:00
dsl_exception.py Py3 compatibility fixes 2016-03-03 13:02:45 +00:00
dsl_types.py Support for *args/**kwargs was added to the MuranoPL 2016-04-26 14:46:06 +00:00
dsl.py Added property to associate environment with OS region 2016-03-03 18:25:47 +03:00
exceptions.py Support of MuranoPL extended metadata was added 2016-03-03 12:32:19 +00:00
executor.py Merge "Support for *args/**kwargs was added to the MuranoPL" 2016-05-17 13:46:26 +00:00
expressions.py Merge "Python3: Replace dict.iteritems with six.iteritems" 2016-01-15 15:17:40 +00:00
helpers.py Fixed a bug when Heat Stack Update was called without template changes 2016-06-20 20:19:21 +03:00
lhs_expression.py Extension methods were introduced to MuranoPL 2016-03-03 15:01:30 +00:00
macros.py Extension methods were introduced to MuranoPL 2016-03-03 15:01:30 +00:00
meta.py Extension methods were introduced to MuranoPL 2016-03-03 15:01:30 +00:00
murano_method.py Support for *args/**kwargs was added to the MuranoPL 2016-04-26 14:46:06 +00:00
murano_object.py Extension methods were introduced to MuranoPL 2016-03-03 15:01:30 +00:00
murano_package.py Delay load of package Meta 2016-03-15 02:07:38 +03:00
murano_property.py Support for *args/**kwargs was added to the MuranoPL 2016-04-26 14:46:06 +00:00
murano_type.py Handling of ephemeral methods was fixed 2016-03-28 16:29:16 +03:00
namespace_resolver.py Support of MuranoPL extended metadata was added 2016-03-03 12:32:19 +00:00
object_store.py Destroy orphan objects 2016-03-31 17:22:10 +03:00
package_loader.py Package versioning 2015-09-03 12:06:42 +00:00
reflection.py Support of MuranoPL extended metadata was added 2016-03-03 12:32:19 +00:00
serializer.py Destroy orphan objects 2016-03-31 17:22:10 +03:00
session_local_storage.py Major refactoring of how OS clients are created and managed 2016-02-20 17:59:11 +03:00
type_scheme.py Removes ability to alter defaults for child objects 2016-03-18 16:54:47 +03:00
typespec.py Support for *args/**kwargs was added to the MuranoPL 2016-04-26 14:46:06 +00:00
virtual_exceptions.py Replace unicode with six.text_type 2015-12-28 05:07:08 -08:00
yaql_expression.py Use precompiled regex for yaql expression detection 2016-02-28 19:59:49 +03:00
yaql_functions.py Extension methods were introduced to MuranoPL 2016-03-03 15:01:30 +00:00
yaql_integration.py Support for *args/**kwargs was added to the MuranoPL 2016-04-26 14:46:06 +00:00