diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-07-21 22:08:22 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-07-25 15:36:44 +0200 |
commit | 3ee6030b98f8afdbc3a606ce458e11323e59b23c (patch) | |
tree | 51dc07c0ba371c4b075c3271773139bcd7e82772 /python/vyos | |
parent | 92dd96726dd638593ab0794ab9b66cfb33b2ac67 (diff) | |
download | vyos-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.py | 18 |
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 |