summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2022-02-22 10:29:32 +0100
committerChristian Poessinger <christian@poessinger.com>2022-02-22 10:32:38 +0100
commit149f704a172fb14f16d0ba00ef237b972539492f (patch)
tree1ff3095e60ddbf5c3bcddb376b40f5fad4a9fd26
parent78f4a0776feef885f277939c498a3efbbebe2071 (diff)
downloadvyos-1x-149f704a172fb14f16d0ba00ef237b972539492f.tar.gz
vyos-1x-149f704a172fb14f16d0ba00ef237b972539492f.zip
vyos.configdict: T4263: leaf_node_changed() must also honor valueLess CLI nodes
If a valueLess node is added or removed from the CLI, a call to leaf_node_changed() will not detect it. If node is valueLess, on change old or new (depending on addition or deletion) will be {} and is treated as None. Add handler for this special case where old or new is an instance of a dictionary but empty.
-rw-r--r--python/vyos/configdict.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/python/vyos/configdict.py b/python/vyos/configdict.py
index f2ec93520..aea22c0c9 100644
--- a/python/vyos/configdict.py
+++ b/python/vyos/configdict.py
@@ -117,6 +117,12 @@ def leaf_node_changed(conf, path):
D.set_level(conf.get_level())
(new, old) = D.get_value_diff(path)
if new != old:
+ if isinstance(old, dict):
+ # valueLess nodes return {} if node is deleted
+ return True
+ if old is None and isinstance(new, dict):
+ # valueLess nodes return {} if node was added
+ return True
if old is None:
return []
if isinstance(old, str):