diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/ifconfig/vpp/bond.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/python/vyos/ifconfig/vpp/bond.py b/python/vyos/ifconfig/vpp/bond.py index b3bcce449..cece5560d 100644 --- a/python/vyos/ifconfig/vpp/bond.py +++ b/python/vyos/ifconfig/vpp/bond.py @@ -17,6 +17,7 @@ from vyos.ifconfig import Interface from vyos.ifconfig.vpp.interface import VPPInterface +from vyos.utils.dict import dict_search class VPPBondInterface(Interface, VPPInterface): @@ -135,13 +136,24 @@ class VPPBondInterface(Interface, VPPInterface): # Delete bonding interface self.delete_bond() + self.index = None + def update(self, config): # Add bond interface - self.add_bond() + if self.index is None: + self.add_bond() + + # Delete removed members + members = self.get_members() + config_members = dict_search('member.interface', config, default=[]) + for member in members: + if member not in config_members: + self.detach_member(interface=member) # Add members to bond - for member in config.get('member', {}).get('interface', []): - self.add_member(interface=member) + for member in config_members: + if member not in members: + self.add_member(interface=member) # Apply VPP-specific interface settings VPPInterface.update(self, config) |
