diff options
| author | Nataliia Solomko <natalirs1985@gmail.com> | 2026-06-03 12:50:07 +0300 |
|---|---|---|
| committer | Nataliia Solomko <natalirs1985@gmail.com> | 2026-06-05 11:25:25 +0300 |
| commit | 5b654e5b2847cb87e7ac0366fbd4954673be1943 (patch) | |
| tree | 724fa206eb9a178658fc09a49cfa122403b6c908 /python | |
| parent | e6f189da269ca50cfe322daaa79ae0493119cf33 (diff) | |
| download | vyos-1x-5b654e5b2847cb87e7ac0366fbd4954673be1943.tar.gz vyos-1x-5b654e5b2847cb87e7ac0366fbd4954673be1943.zip | |
vpp: T8913: Skip bond teardown for non-structural config changes
VPP bond teardown was triggered on every commit regardless of
what changed, dropping all subinterfaces and BGP sessions even
for trivial changes like descriptions or IP addresses.
Only mode, hash-policy and mac_address require full recreation
since VPP has no in-place update API for these; all other
changes are now applied incrementally.
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) |
