summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2026-06-23 14:46:04 +0100
committerGitHub <noreply@github.com>2026-06-23 14:46:04 +0100
commit94f4ac3e938ac8aa11f2e4375ae3e9bd01963e8b (patch)
tree96f502278fe2725ae4ab77acf8132c47f628e3ff /python
parent3edf114bed538733388252da0d23b49002273558 (diff)
parent5b654e5b2847cb87e7ac0366fbd4954673be1943 (diff)
downloadvyos-1x-94f4ac3e938ac8aa11f2e4375ae3e9bd01963e8b.tar.gz
vyos-1x-94f4ac3e938ac8aa11f2e4375ae3e9bd01963e8b.zip
Merge pull request #5252 from natali-rs1985/T8913
vpp: T8913: Skip bond teardown for non-structural config changes
Diffstat (limited to 'python')
-rw-r--r--python/vyos/ifconfig/vpp/bond.py18
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)