summaryrefslogtreecommitdiff
path: root/python/vyos
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-07-21 22:08:22 +0200
committerChristian Poessinger <christian@poessinger.com>2020-07-25 15:36:44 +0200
commit3ee6030b98f8afdbc3a606ce458e11323e59b23c (patch)
tree51dc07c0ba371c4b075c3271773139bcd7e82772 /python/vyos
parent92dd96726dd638593ab0794ab9b66cfb33b2ac67 (diff)
downloadvyos-1x-3ee6030b98f8afdbc3a606ce458e11323e59b23c.tar.gz
vyos-1x-3ee6030b98f8afdbc3a606ce458e11323e59b23c.zip
vyos.configdict: T2653: add new reusable helper node_changed()
This can be used to see if a tagNode has been changed. It will return a list of changed nodes.
Diffstat (limited to 'python/vyos')
-rw-r--r--python/vyos/configdict.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/python/vyos/configdict.py b/python/vyos/configdict.py
index 4fca426cd..7f05a15ed 100644
--- a/python/vyos/configdict.py
+++ b/python/vyos/configdict.py
@@ -133,17 +133,16 @@ def T2665_default_dict_cleanup(dict):
return dict
-def leaf_node_changed(conf, key):
+def leaf_node_changed(conf, path):
"""
Check if a leaf node was altered. If it has been altered - values has been
changed, or it was added/removed, we will return the old value. If nothing
has been changed, None is returned
"""
from vyos.configdiff import get_config_diff
-
D = get_config_diff(conf, key_mangling=('-', '_'))
D.set_level(conf.get_level())
- (new, old) = D.get_value_diff(key)
+ (new, old) = D.get_value_diff(path)
if new != old:
if isinstance(old, str):
return old
@@ -156,6 +155,19 @@ def leaf_node_changed(conf, key):
return None
+def node_changed(conf, path):
+ """
+ Check if a leaf node was altered. If it has been altered - values has been
+ changed, or it was added/removed, we will return the old value. If nothing
+ has been changed, None is returned
+ """
+ from vyos.configdiff import get_config_diff, Diff
+ D = get_config_diff(conf, key_mangling=('-', '_'))
+ D.set_level(conf.get_level())
+ # get_child_nodes() will return dict_keys(), mangle this into a list with PEP448
+ keys = D.get_child_nodes_diff(path, expand_nodes=Diff.DELETE)['delete'].keys()
+ return list(keys)
+
def get_interface_dict(config, base, ifname):
"""
Common utility function to retrieve and mandgle the interfaces available