Add the ability to set any mode/lb on bonds
This requires a schema change, adding 'mode' and 'load-balance' fields, a semantic invariant that 'load-balance' can only be set in the case of LACP and XOR bonds, a mapper from the mode/lb strings, ie. "round-robin" to their VPP numeric counterparts, a bunch of unit tests. Then in the reconciler, changing bonds (__bond_has_diff()) will invalidate any LCP or sub-interfaces built on them, so those will have to be pruned. create_bondethernet() will now create (or re-create) the bond with the correct flags. Unit-tests, YAML tests and the integration test all pass. Updated config-guide.
This commit is contained in:
44
unittest/yaml/error-bondethernet8.yaml
Normal file
44
unittest/yaml/error-bondethernet8.yaml
Normal file
@ -0,0 +1,44 @@
|
||||
test:
|
||||
description: "BondEthernet can only have loadbalance if XOR or LACP"
|
||||
errors:
|
||||
expected:
|
||||
- "bondethernet BondEthernet2 can only have load-balance if in mode XOR or LACP"
|
||||
count: 1
|
||||
---
|
||||
bondethernets:
|
||||
BondEthernet0:
|
||||
interfaces: [ GigabitEthernet1/0/0, GigabitEthernet1/0/1 ]
|
||||
mode: xor
|
||||
load-balance: l34
|
||||
|
||||
BondEthernet1:
|
||||
interfaces: [ GigabitEthernet2/0/0, GigabitEthernet2/0/1 ]
|
||||
mode: lacp
|
||||
load-balance: l34
|
||||
|
||||
BondEthernet2:
|
||||
interfaces: [ GigabitEthernet3/0/0, GigabitEthernet3/0/1 ]
|
||||
mode: round-robin
|
||||
load-balance: l34
|
||||
|
||||
interfaces:
|
||||
GigabitEthernet1/0/0:
|
||||
mtu: 3000
|
||||
GigabitEthernet1/0/1:
|
||||
mtu: 3000
|
||||
BondEthernet0:
|
||||
mtu: 3000
|
||||
|
||||
GigabitEthernet2/0/0:
|
||||
mtu: 3000
|
||||
GigabitEthernet2/0/1:
|
||||
mtu: 3000
|
||||
BondEthernet1:
|
||||
mtu: 3000
|
||||
|
||||
GigabitEthernet3/0/0:
|
||||
mtu: 3000
|
||||
GigabitEthernet3/0/1:
|
||||
mtu: 3000
|
||||
BondEthernet2:
|
||||
mtu: 3000
|
Reference in New Issue
Block a user