summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-09-19 22:20:46 +0200
committerChristian Poessinger <christian@poessinger.com>2019-09-19 22:22:24 +0200
commit6e21be23be126af259f07bb23e4893470b5cb2fb (patch)
treece1068bd1cff18932c38d26dd0a4eeebab54e8d8
parent0387cae19c28d1d5b8ccf45596841ba44a2eefc9 (diff)
downloadvyos-1x-6e21be23be126af259f07bb23e4893470b5cb2fb.tar.gz
vyos-1x-6e21be23be126af259f07bb23e4893470b5cb2fb.zip
Python/ifconfig: T1666: re-activate physical interfaces on bond deletion
When a bond member gets deleted, all members are placed in A/D state even when they are enabled in the CLI.
-rw-r--r--python/vyos/ifconfig.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/python/vyos/ifconfig.py b/python/vyos/ifconfig.py
index 0793fad39..750a7cc70 100644
--- a/python/vyos/ifconfig.py
+++ b/python/vyos/ifconfig.py
@@ -1057,6 +1057,36 @@ class BondIf(EthernetIf):
def __init__(self, ifname):
super().__init__(ifname, type='bond')
+ def remove(self):
+ """
+ Remove interface from operating system. Removing the interface
+ deconfigures all assigned IP addresses and clear possible DHCP(v6)
+ client processes.
+ Example:
+ >>> from vyos.ifconfig import Interface
+ >>> i = Interface('eth0')
+ >>> i.remove()
+ """
+ # when a bond member gets deleted, all members are placed in A/D state
+ # even when they are enabled inside CLI. This will make the config
+ # and system look async.
+ slave_list = []
+ for s in self.get_slaves():
+ slave = {
+ 'ifname' : s,
+ 'state': Interface(s).state
+ }
+ slave_list.append(slave)
+
+ # remove bond master which places members in disabled state
+ super().remove()
+
+ # replicate previous interface state before bond destruction back to
+ # physical interface
+ for slave in slave_list:
+ i = Interface(slave['ifname'])
+ i.state = slave['state']
+
@property
def xmit_hash_policy(self):
"""