summaryrefslogtreecommitdiff
path: root/src/conf_mode/interface-bonding.py
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-09-04 21:50:04 +0200
committerChristian Poessinger <christian@poessinger.com>2019-09-04 22:03:10 +0200
commit64d58eda4c1ebaa9d346d65d606d2a75694467ee (patch)
tree4f4c9b9720da401863c664a87e68ceda6a645377 /src/conf_mode/interface-bonding.py
parentff34756f534bfc0f09a5ab6db0d36e1bf43546a8 (diff)
downloadvyos-1x-64d58eda4c1ebaa9d346d65d606d2a75694467ee.tar.gz
vyos-1x-64d58eda4c1ebaa9d346d65d606d2a75694467ee.zip
Python/configdict: add list_diff function to compare two lists
A list containing only unique elements not part of the other list is returned. This is usefull to check e.g. which IP addresses need to be removed from the OS.
Diffstat (limited to 'src/conf_mode/interface-bonding.py')
-rwxr-xr-xsrc/conf_mode/interface-bonding.py11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/conf_mode/interface-bonding.py b/src/conf_mode/interface-bonding.py
index 03d28954d..ba4577900 100755
--- a/src/conf_mode/interface-bonding.py
+++ b/src/conf_mode/interface-bonding.py
@@ -23,6 +23,7 @@ from sys import exit
from netifaces import interfaces
from vyos.ifconfig import BondIf, EthernetIf
+from vyos.configdict import list_diff
from vyos.config import Config
from vyos import ConfigError
@@ -55,9 +56,6 @@ default_config_data = {
'vif_remove': []
}
-def diff(first, second):
- second = set(second)
- return [item for item in first if item not in second]
def get_bond_mode(mode):
if mode == 'round-robin':
@@ -77,6 +75,7 @@ def get_bond_mode(mode):
else:
raise ConfigError('invalid bond mode "{}"'.format(mode))
+
def get_ethertype(ethertype_val):
if ethertype_val == '0x88A8':
return '802.1ad'
@@ -321,7 +320,7 @@ def get_config():
# address is no longer valid and needs to be removed from the bond
eff_addr = conf.return_effective_values('address')
act_addr = conf.return_values('address')
- bond['address_remove'] = diff(eff_addr, act_addr)
+ bond['address_remove'] = list_diff(eff_addr, act_addr)
# Primary device interface
if conf.exists('primary'):
@@ -333,7 +332,7 @@ def get_config():
# interface is no longer present and needs to be removed
eff_intf = conf.list_effective_nodes('vif-s')
act_intf = conf.list_nodes('vif-s')
- bond['vif_s_remove'] = diff(eff_intf, act_intf)
+ bond['vif_s_remove'] = list_diff(eff_intf, act_intf)
if conf.exists('vif-s'):
for vif_s in conf.list_nodes('vif-s'):
@@ -347,7 +346,7 @@ def get_config():
# vif interface is no longer present and needs to be removed
eff_intf = conf.list_effective_nodes('vif')
act_intf = conf.list_nodes('vif')
- bond['vif_remove'] = diff(eff_intf, act_intf)
+ bond['vif_remove'] = list_diff(eff_intf, act_intf)
if conf.exists('vif'):
for vif in conf.list_nodes('vif'):