diff options
author | Christian Poessinger <christian@poessinger.com> | 2022-02-22 10:29:32 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2022-02-22 10:35:46 +0100 |
commit | ddda1163e4a9ee5c91d678b196ebd37863f1520e (patch) | |
tree | 1f87e8c5dbe0901a575b29f806bd544aeeb14abe /python/vyos | |
parent | c3470d902d0083f3034e103771602650420553bc (diff) | |
download | vyos-1x-ddda1163e4a9ee5c91d678b196ebd37863f1520e.tar.gz vyos-1x-ddda1163e4a9ee5c91d678b196ebd37863f1520e.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.
(cherry picked from commit 149f704a172fb14f16d0ba00ef237b972539492f)
Diffstat (limited to 'python/vyos')
-rw-r--r-- | python/vyos/configdict.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/python/vyos/configdict.py b/python/vyos/configdict.py index b18db1fb8..1f245f3d2 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): |