Skip to content

Commit 7e10a34

Browse files
Vibhu-gslabgmuloc
andauthored
Feat(eos_designs): Add support for sflow in l3_interfaces under network services (#6705)
Co-authored-by: Guillaume Mulocher <gmulocher@arista.com>
1 parent d109626 commit 7e10a34

8 files changed

Lines changed: 97 additions & 2 deletions

File tree

ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/configs/sflow-tests-leaf1.cfg

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,30 @@ interface Ethernet14
6767
switchport
6868
sflow enable
6969
!
70+
interface Ethernet15
71+
description l3_interface_sflow_true
72+
no shutdown
73+
no switchport
74+
vrf VRF1
75+
ip address 10.255.15.1/30
76+
sflow enable
77+
!
78+
interface Ethernet16
79+
description l3_interface_sflow_false
80+
no shutdown
81+
no switchport
82+
vrf VRF1
83+
ip address 10.255.16.1/30
84+
no sflow enable
85+
!
86+
interface Ethernet17
87+
description l3_interface_sflow_unset
88+
no shutdown
89+
no switchport
90+
vrf VRF1
91+
ip address 10.255.17.1/30
92+
sflow enable
93+
!
7094
interface Loopback0
7195
description ROUTER_ID
7296
no shutdown

ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf1.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,39 @@ ethernet_interfaces:
3030
enable: true
3131
switchport:
3232
enabled: false
33+
- name: Ethernet15
34+
description: l3_interface_sflow_true
35+
shutdown: false
36+
vrf: VRF1
37+
ip_address: 10.255.15.1/30
38+
metadata:
39+
peer_type: l3_interface
40+
sflow:
41+
enable: true
42+
switchport:
43+
enabled: false
44+
- name: Ethernet16
45+
description: l3_interface_sflow_false
46+
shutdown: false
47+
vrf: VRF1
48+
ip_address: 10.255.16.1/30
49+
metadata:
50+
peer_type: l3_interface
51+
sflow:
52+
enable: false
53+
switchport:
54+
enabled: false
55+
- name: Ethernet17
56+
description: l3_interface_sflow_unset
57+
shutdown: false
58+
vrf: VRF1
59+
ip_address: 10.255.17.1/30
60+
metadata:
61+
peer_type: l3_interface
62+
sflow:
63+
enable: true
64+
switchport:
65+
enabled: false
3366
- name: Ethernet10
3467
description: SERVER_single-interface-true_eth1
3568
shutdown: false

ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/group_vars/SFLOW_TESTS.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ fabric_sflow:
2626
l3_edge: true
2727
core_interfaces: true
2828
mlag_interfaces: true
29+
l3_interfaces: true
2930

3031
# P2P links between spine switches.
3132
core_interfaces:
@@ -74,6 +75,24 @@ tenants:
7475
ip_address: 172.16.11.1/24
7576
- node: sflow-tests-leaf2
7677
ip_address: 172.17.11.1/24
78+
l3_interfaces:
79+
# Test: per-interface sflow: true overrides fabric_sflow.l3_interfaces: true
80+
- interfaces: [Ethernet15]
81+
ip_addresses: [10.255.15.1/30]
82+
nodes: [sflow-tests-leaf1]
83+
description: l3_interface_sflow_true
84+
sflow: true
85+
# Test: per-interface sflow: false overrides fabric_sflow.l3_interfaces: true
86+
- interfaces: [Ethernet16]
87+
ip_addresses: [10.255.16.1/30]
88+
nodes: [sflow-tests-leaf1]
89+
description: l3_interface_sflow_false
90+
sflow: false
91+
# Test: no sflow key falls back to fabric_sflow.l3_interfaces: true
92+
- interfaces: [Ethernet17]
93+
ip_addresses: [10.255.17.1/30]
94+
nodes: [sflow-tests-leaf1]
95+
description: l3_interface_sflow_unset
7796

7897
servers:
7998
- name: single-interface-true

ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-l3-interfaces-settings.md

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

python-avd/pyavd/_eos_designs/schema/__init__.py

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,6 +1030,10 @@ $defs:
10301030
$ref: "eos_designs#/$defs/flow_tracking_link"
10311031
description: |-
10321032
Configures flow-tracking on the interface. Overrides `fabric_flow_tracking.l3_interfaces` setting.
1033+
sflow:
1034+
type: bool
1035+
description: |-
1036+
Configures sFlow on the interface. Overrides `fabric_sflow.l3_interfaces` setting.
10331037
monitor_sessions:
10341038
type: list
10351039
$ref: "eos_designs#/$defs/monitor_sessions"

python-avd/pyavd/_eos_designs/structured_config/network_services/ethernet_interfaces.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from pyavd._eos_cli_config_gen.schema import EosCliConfigGen
1010
from pyavd._eos_designs.structured_config.structured_config_generator import structured_config_contributor
1111
from pyavd._errors import AristaAvdError, AristaAvdInvalidInputsError
12-
from pyavd._utils import get_ip_from_ip_prefix
12+
from pyavd._utils import default, get_ip_from_ip_prefix
1313

1414
if TYPE_CHECKING:
1515
from pyavd._eos_designs.schema import EosDesigns
@@ -137,7 +137,9 @@ def _set_l3_interfaces(
137137
l3_interface.structured_config, list_merge=self.custom_structured_configs.list_merge_strategy
138138
)
139139

140-
interface.sflow.enable = self.shared_utils.get_interface_sflow(interface.name, self.inputs.fabric_sflow.l3_interfaces)
140+
interface.sflow.enable = self.shared_utils.get_interface_sflow(
141+
interface.name, default(l3_interface.sflow, self.inputs.fabric_sflow.l3_interfaces)
142+
)
141143

142144
if l3_interface.ipv4_acl_in:
143145
acl = self.shared_utils.get_ipv4_acl(

0 commit comments

Comments
 (0)