ensure exports are correctly calculated during an inventory calculation
diff --git a/reclass/core.py b/reclass/core.py
index b3620b6..afdcf40 100644
--- a/reclass/core.py
+++ b/reclass/core.py
@@ -150,6 +150,9 @@
new_yaml = yaml.dump(new.as_dict(), default_flow_style=True, Dumper=ExplicitDumper)
if old_yaml != new_yaml:
self._storage.put_exports(new)
+ return True
+ else:
+ return False
def nodeinfo(self, nodename):
original_exports = Parameters(self._storage.get_exports())
@@ -161,12 +164,19 @@
def inventory(self):
original_exports = Parameters(self._storage.get_exports())
- exports = copy.deepcopy(original_exports)
original_exports.render_simple()
+ exports = Parameters()
entities = {}
for n in self._storage.enumerate_nodes():
entities[n] = self._nodeinfo(n, exports)
- self._update_exports(original_exports, exports)
+ changed = self._update_exports(original_exports, exports)
+ if changed:
+ # use brute force: if the exports have changed rerun
+ # the inventory cacluation
+ #exports = Parameters(exports.as_dict())
+ entities = {}
+ for n in self._storage.enumerate_nodes():
+ entities[n] = self._nodeinfo(n, exports)
nodes = {}
applications = {}
diff --git a/reclass/datatypes/parameters.py b/reclass/datatypes/parameters.py
index 0ec29e6..c0b6e59 100644
--- a/reclass/datatypes/parameters.py
+++ b/reclass/datatypes/parameters.py
@@ -96,11 +96,12 @@
if cur is None:
return new
- values = cur
if isinstance(cur, (dict, list)):
values = ValueList(Value(cur))
elif isinstance(cur, Value):
values = ValueList(cur)
+ else:
+ values = ValueList(Value(cur))
if isinstance(new, (dict, list)):
new = Value(new)