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:32:38 +0100 | 
| commit | 149f704a172fb14f16d0ba00ef237b972539492f (patch) | |
| tree | 1ff3095e60ddbf5c3bcddb376b40f5fad4a9fd26 | |
| parent | 78f4a0776feef885f277939c498a3efbbebe2071 (diff) | |
| download | vyos-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.py | 6 | 
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): | 
