summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2021-01-16 15:10:13 +0100
committerChristian Poessinger <christian@poessinger.com>2021-01-16 15:31:23 +0100
commit86d49dbd7167c261fc6072694db7ee38206f1d94 (patch)
treecf7743df4a6af26ebcf31b5ade22dfb1b5010722
parent497f1866e71fadce33f9f19119f91a3c18263a70 (diff)
downloadvyos-1x-86d49dbd7167c261fc6072694db7ee38206f1d94.tar.gz
vyos-1x-86d49dbd7167c261fc6072694db7ee38206f1d94.zip
vyos.configdict: node_changed() now accepts key mangling parameter
(cherry picked from commit 452a9c504f472dcaee8c93947a889dab4f8259ce)
-rw-r--r--python/vyos/configdict.py4
-rwxr-xr-xsrc/conf_mode/interfaces-bridge.py2
-rwxr-xr-xsrc/conf_mode/interfaces-wireguard.py2
-rwxr-xr-xsrc/conf_mode/policy-local-route.py2
4 files changed, 5 insertions, 5 deletions
diff --git a/python/vyos/configdict.py b/python/vyos/configdict.py
index e5e758a8b..4f9d3739d 100644
--- a/python/vyos/configdict.py
+++ b/python/vyos/configdict.py
@@ -126,14 +126,14 @@ def leaf_node_changed(conf, path):
return None
-def node_changed(conf, path):
+def node_changed(conf, path, key_mangling=None):
"""
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 = 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()
diff --git a/src/conf_mode/interfaces-bridge.py b/src/conf_mode/interfaces-bridge.py
index 7af3e3d7c..5b0046a72 100755
--- a/src/conf_mode/interfaces-bridge.py
+++ b/src/conf_mode/interfaces-bridge.py
@@ -74,7 +74,7 @@ def get_config(config=None):
bridge = get_interface_dict(conf, base)
# determine which members have been removed
- tmp = node_changed(conf, ['member', 'interface'])
+ tmp = node_changed(conf, ['member', 'interface'], key_mangling=('-', '_'))
if tmp:
if 'member' in bridge:
bridge['member'].update({'interface_remove': tmp })
diff --git a/src/conf_mode/interfaces-wireguard.py b/src/conf_mode/interfaces-wireguard.py
index 7cfc76aa0..3e6320f02 100755
--- a/src/conf_mode/interfaces-wireguard.py
+++ b/src/conf_mode/interfaces-wireguard.py
@@ -58,7 +58,7 @@ def get_config(config=None):
# Determine which Wireguard peer has been removed.
# Peers can only be removed with their public key!
dict = {}
- tmp = node_changed(conf, ['peer'])
+ tmp = node_changed(conf, ['peer'], key_mangling=('-', '_'))
for peer in (tmp or []):
pubkey = leaf_node_changed(conf, ['peer', peer, 'pubkey'])
if pubkey:
diff --git a/src/conf_mode/policy-local-route.py b/src/conf_mode/policy-local-route.py
index c4024dce4..013f22665 100755
--- a/src/conf_mode/policy-local-route.py
+++ b/src/conf_mode/policy-local-route.py
@@ -40,7 +40,7 @@ def get_config(config=None):
# delete policy local-route
dict = {}
- tmp = node_changed(conf, ['policy', 'local-route', 'rule'])
+ tmp = node_changed(conf, ['policy', 'local-route', 'rule'], key_mangling=('-', '_'))
if tmp:
for rule in (tmp or []):
src = leaf_node_changed(conf, ['policy', 'local-route', 'rule', rule, 'source'])