diff --git a/ansible_collections/arista/avd/extensions/molecule/anta_runner/intended/structured_configs/dc1-spine1.yml b/ansible_collections/arista/avd/extensions/molecule/anta_runner/intended/structured_configs/dc1-spine1.yml
index d527a410367..92e4500f74f 100644
--- a/ansible_collections/arista/avd/extensions/molecule/anta_runner/intended/structured_configs/dc1-spine1.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/anta_runner/intended/structured_configs/dc1-spine1.yml
@@ -82,13 +82,6 @@ local_users:
privilege: 15
role: network-admin
sha512_password: $6$7u4j1rkb3VELgcZE$EJt2Qff8kd/TapRoci0XaIZsL4tFzgq1YZBLD9c6f/knXzvcYY0NcMKndZeCv0T268knGKhOEwZAxqKjlMm920
-logging:
- vrfs:
- - name: MGMT
- source_interface: Management1
- hosts:
- - name: graylog-server
- protocol: udp
loopback_interfaces:
- name: Loopback0
description: ROUTER_ID
diff --git a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC1_L3_LEAVES.yml b/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC1_L3_LEAVES.yml
index 0f9f06933a1..cf0240ea936 100644
--- a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC1_L3_LEAVES.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC1_L3_LEAVES.yml
@@ -15,6 +15,7 @@ l3leaf:
virtual_router_mac_address: 00:1c:73:00:00:99
spanning_tree_priority: 4096
spanning_tree_mode: mstp
+ validation_profile: profile1
node_groups:
- group: DC1_L3_LEAF1
diff --git a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC1_SPINES.yml b/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC1_SPINES.yml
index 831f83afb9c..df0e0d8429e 100644
--- a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC1_SPINES.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC1_SPINES.yml
@@ -11,6 +11,7 @@ spine:
- name: dc1-spine1
id: 1
mgmt_ip: 172.16.1.11/24
+ validation_profile: profile2
# Custom BGP configuration for BGP tests
structured_config:
router_bgp:
diff --git a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC2_L2_LEAVES.yml b/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC2_L2_LEAVES.yml
index 29305f8a716..2b007be2555 100644
--- a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC2_L2_LEAVES.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/DC2_L2_LEAVES.yml
@@ -5,6 +5,7 @@ l2leaf:
defaults:
platform: vEOS-lab
spanning_tree_mode: mstp
+ validation_profile: profile1
node_groups:
- group: DC2_L2_LEAF1
diff --git a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/FABRIC.yml b/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/FABRIC.yml
index c3a0cec3d6d..f13016e87b8 100644
--- a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/FABRIC.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/group_vars/FABRIC.yml
@@ -113,10 +113,16 @@ custom_platform_settings:
non_mlag: 330
digital_twin:
act_node_type: veos
- validate_hardware:
+
+validation_profiles:
+ - name: profile1
+ hardware:
min_power_supplies: 2
min_fans: 4
min_supervisors: 0
min_line_cards: 0
transceiver_manufacturers:
- Third-party vendor
+ - name: profile2
+ logging:
+ validate_no_errors_period: 1
diff --git a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/host_vars/dc1-spine1.yml b/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/host_vars/dc1-spine1.yml
deleted file mode 100644
index 7ba5b7eb532..00000000000
--- a/ansible_collections/arista/avd/extensions/molecule/anta_runner/inventory/host_vars/dc1-spine1.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-logging_settings:
- hosts:
- - name: graylog-server
- validate_no_errors_period: 1
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/host_vars/missing-validation-parent-profile.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/host_vars/missing-validation-parent-profile.yml
new file mode 100644
index 00000000000..7fedff75592
--- /dev/null
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/host_vars/missing-validation-parent-profile.yml
@@ -0,0 +1,21 @@
+type: l3leaf
+l3leaf:
+ defaults:
+ platform: vEOS-LAB
+ loopback_ipv4_pool: 192.168.255.0/24
+ vtep_loopback_ipv4_pool: 192.168.254.0/24
+ bgp_as: 65101
+ nodes:
+ - name: missing-validation-parent-profile
+ id: 1
+ mgmt_ip: 192.168.200.105/24
+ validation_profile: profile1
+
+validation_profiles:
+ - name: profile1
+ parent_profile: profile2
+ hardware:
+ min_power_supplies: 2
+
+expected_error_message: >-
+ Parent validation profile 'profile2' referenced by validation profile 'profile1' is not defined under 'validation_profiles'.
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/host_vars/missing-validation-profile.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/host_vars/missing-validation-profile.yml
new file mode 100644
index 00000000000..e60a9f22b38
--- /dev/null
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/host_vars/missing-validation-profile.yml
@@ -0,0 +1,20 @@
+type: l3leaf
+l3leaf:
+ defaults:
+ platform: vEOS-LAB
+ loopback_ipv4_pool: 192.168.255.0/24
+ vtep_loopback_ipv4_pool: 192.168.254.0/24
+ bgp_as: 65101
+ nodes:
+ - name: missing-validation-profile
+ id: 1
+ mgmt_ip: 192.168.200.105/24
+ validation_profile: profile1
+
+validation_profiles:
+ - name: profile2
+ hardware:
+ min_power_supplies: 2
+
+expected_error_message: >-
+ Validation profile 'profile1' referenced in node configuration is not defined under 'validation_profiles'.
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/hosts.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/hosts.yml
index e7038306ef2..4833ad842a2 100644
--- a/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/hosts.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_negative_unit_tests/inventory/hosts.yml
@@ -414,6 +414,8 @@ all:
incorrect-downlink-link-tracking-group:
missing-sflow-setting-destination-vrf:
missing-cv-settings-for-sflow-export-cloudvision-vrf:
+ missing-validation-profile:
+ missing-validation-parent-profile:
children:
FABRIC_MISSING_IP_ADDRESS_ON_WAN_LAN_HA_UPLINK:
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/configs/validation-profiles.cfg b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/configs/validation-profiles.cfg
new file mode 100644
index 00000000000..29de21a8fd4
--- /dev/null
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/configs/validation-profiles.cfg
@@ -0,0 +1,72 @@
+!
+no enable password
+no aaa root
+!
+vlan internal order ascending range 1006 1199
+!
+transceiver qsfp default-mode 4x10G
+!
+service routing protocols model multi-agent
+!
+hostname validation-profiles
+!
+vrf instance MGMT
+!
+interface Loopback0
+ description ROUTER_ID
+ no shutdown
+ ip address 192.168.255.1/32
+!
+interface Loopback1
+ description VXLAN_TUNNEL_SOURCE
+ no shutdown
+ ip address 192.168.254.1/32
+!
+interface Management1
+ description OOB_MANAGEMENT
+ no shutdown
+ vrf MGMT
+ ip address 192.168.200.105/24
+!
+interface Vxlan1
+ description validation-profiles_VTEP
+ vxlan source-interface Loopback1
+ vxlan udp-port 4789
+!
+ip routing
+no ip routing vrf MGMT
+!
+ip prefix-list PL-LOOPBACKS-EVPN-OVERLAY
+ seq 10 permit 192.168.255.0/24 eq 32
+ seq 20 permit 192.168.254.0/24 eq 32
+!
+route-map RM-CONN-2-BGP permit 10
+ match ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY
+!
+router bfd
+ multihop interval 300 min-rx 300 multiplier 3
+!
+router bgp 65101
+ router-id 192.168.255.1
+ update wait-install
+ no bgp default ipv4-unicast
+ maximum-paths 4
+ neighbor EVPN-OVERLAY-PEERS peer group
+ neighbor EVPN-OVERLAY-PEERS update-source Loopback0
+ neighbor EVPN-OVERLAY-PEERS bfd
+ neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3
+ neighbor EVPN-OVERLAY-PEERS send-community
+ neighbor EVPN-OVERLAY-PEERS maximum-routes 0
+ neighbor IPv4-UNDERLAY-PEERS peer group
+ neighbor IPv4-UNDERLAY-PEERS send-community
+ neighbor IPv4-UNDERLAY-PEERS maximum-routes 12000
+ redistribute connected route-map RM-CONN-2-BGP
+ !
+ address-family evpn
+ neighbor EVPN-OVERLAY-PEERS activate
+ !
+ address-family ipv4
+ no neighbor EVPN-OVERLAY-PEERS activate
+ neighbor IPv4-UNDERLAY-PEERS activate
+!
+end
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/7010TX-LEAF1.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/7010TX-LEAF1.yml
index aac3bbfb481..94e1ae78591 100644
--- a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/7010TX-LEAF1.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/7010TX-LEAF1.yml
@@ -49,7 +49,6 @@ metadata:
platform: 7010TX
fabric_name: EOS_DESIGNS_UNIT_TESTS
validate_hardware:
- enabled: true
min_power_supplies: 2
min_fans: 4
min_supervisors: 2
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/7010TX-LEAF2.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/7010TX-LEAF2.yml
index a2fde82fe5b..54b1a6b12cb 100644
--- a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/7010TX-LEAF2.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/7010TX-LEAF2.yml
@@ -45,7 +45,6 @@ metadata:
platform: 7010TX
fabric_name: EOS_DESIGNS_UNIT_TESTS
validate_hardware:
- enabled: true
min_power_supplies: 2
min_fans: 4
min_supervisors: 2
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/validation-profiles.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/validation-profiles.yml
new file mode 100644
index 00000000000..291198e4613
--- /dev/null
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/intended/structured_configs/validation-profiles.yml
@@ -0,0 +1,112 @@
+aaa_root:
+ disabled: true
+config_end: true
+enable_password:
+ disabled: true
+hostname: validation-profiles
+ip_igmp_snooping:
+ globally_enabled: true
+ip_routing: true
+loopback_interfaces:
+- name: Loopback0
+ description: ROUTER_ID
+ shutdown: false
+ ip_address: 192.168.255.1/32
+- name: Loopback1
+ description: VXLAN_TUNNEL_SOURCE
+ shutdown: false
+ ip_address: 192.168.254.1/32
+management_interfaces:
+- name: Management1
+ description: OOB_MANAGEMENT
+ shutdown: false
+ vrf: MGMT
+ ip_address: 192.168.200.105/24
+ type: oob
+metadata:
+ is_deployed: true
+ platform: vEOS-LAB
+ fabric_name: EOS_DESIGNS_UNIT_TESTS
+ validate_hardware:
+ min_power_supplies: 2
+ min_fans: 4
+ min_supervisors: 2
+ min_line_cards: 10
+ min_fabric_cards: 5
+ transceiver_manufacturers:
+ - Third-party vendor profile1
+ validate_no_errors_period: 2
+ exclude_as_extra_fabric_validation_target: true
+prefix_lists:
+- name: PL-LOOPBACKS-EVPN-OVERLAY
+ sequence_numbers:
+ - sequence: 10
+ action: permit 192.168.255.0/24 eq 32
+ - sequence: 20
+ action: permit 192.168.254.0/24 eq 32
+route_maps:
+- name: RM-CONN-2-BGP
+ sequence_numbers:
+ - sequence: 10
+ type: permit
+ match:
+ - ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY
+router_bfd:
+ multihop:
+ interval: 300
+ min_rx: 300
+ multiplier: 3
+router_bgp:
+ as: '65101'
+ router_id: 192.168.255.1
+ maximum_paths:
+ paths: 4
+ updates:
+ wait_install: true
+ bgp:
+ default:
+ ipv4_unicast: false
+ peer_groups:
+ - name: IPv4-UNDERLAY-PEERS
+ metadata:
+ type: ipv4
+ send_community: all
+ maximum_routes: 12000
+ - name: EVPN-OVERLAY-PEERS
+ metadata:
+ type: evpn
+ update_source: Loopback0
+ bfd: true
+ ebgp_multihop: 3
+ send_community: all
+ maximum_routes: 0
+ redistribute:
+ connected:
+ enabled: true
+ route_map: RM-CONN-2-BGP
+ address_family_evpn:
+ peer_groups:
+ - name: EVPN-OVERLAY-PEERS
+ activate: true
+ address_family_ipv4:
+ peer_groups:
+ - name: IPv4-UNDERLAY-PEERS
+ activate: true
+ - name: EVPN-OVERLAY-PEERS
+ activate: false
+service_routing_protocols_model: multi-agent
+transceiver_qsfp_default_mode_4x10: true
+vlan_internal_order:
+ allocation: ascending
+ range:
+ beginning: 1006
+ ending: 1199
+vrfs:
+- name: MGMT
+ ip_routing: false
+vxlan_interface:
+ vxlan1:
+ description: validation-profiles_VTEP
+ vxlan:
+ source_interface: Loopback1
+ udp_port: 4789
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/group_vars/PLATFORM_SETTINGS_TESTS.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/group_vars/PLATFORM_SETTINGS_TESTS.yml
index 345131d1cbc..521ccb46d94 100644
--- a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/group_vars/PLATFORM_SETTINGS_TESTS.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/group_vars/PLATFORM_SETTINGS_TESTS.yml
@@ -8,21 +8,23 @@ platform_settings:
enabled: true
description: Structured config for platform matching the regex
# Test for validate hardware disabled
- validate_hardware:
- enabled: false
+ feature_support:
+ hardware_validation: false
- platforms:
- 7010TX
feature_support:
queue_monitor_length_notify: false
per_interface_mtu: false
+ hardware_validation: true
reload_delay:
mlag: 300
non_mlag: 330
digital_twin:
platform: vEOS-lab
- # Test for validate hardware enabled with specific requirements
- validate_hardware:
- enabled: true # default
+
+validation_profiles:
+ - name: profile1
+ hardware:
min_power_supplies: 2
min_fans: 4
min_supervisors: 2
@@ -40,6 +42,8 @@ l3leaf:
loopback_ipv4_offset: 32
vtep_loopback_ipv4_pool: 192.168.254.0/24
mlag_interfaces: [Ethernet5, Ethernet6]
+ # Test for validate hardware enabled with specific requirements
+ validation_profile: profile1
node_groups:
- group: MLAG_PER_MTU_INTERFACE
bgp_as: 923
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/exclude-as-extra-fabric-validation-target.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/exclude-as-extra-fabric-validation-target.yml
index 7fb3d2bc112..d2ec81ae3a6 100644
--- a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/exclude-as-extra-fabric-validation-target.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/exclude-as-extra-fabric-validation-target.yml
@@ -7,10 +7,14 @@ spine:
loopback_ipv4_pool: 10.10.255.0/24
bgp_as: 65000
rack: ABC567
- exclude_as_extra_fabric_validation_target: true
+ validation_profile: profile1
l3_interfaces:
- name: Ethernet11
ip_address: 10.20.30.40/24
description: Test interface
peer: Someotherdevice
peer_ip: 10.20.30.50/24
+
+validation_profiles:
+ - name: profile1
+ exclude_as_extra_fabric_validation_target: true
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/logging_settings.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/logging_settings.yml
index 87ac4e649f8..5759841b3b6 100644
--- a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/logging_settings.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/logging_settings.yml
@@ -10,6 +10,7 @@ spine:
bgp_as: 65000
inband_mgmt_vrf: inband_mgmt_vrf
inband_mgmt_interface: Vlan123
+ validation_profile: profile1
logging_settings:
console: errors
@@ -85,4 +86,8 @@ logging_settings:
match_lists:
- name: molecule
action: discard
- validate_no_errors_period: 2
+
+validation_profiles:
+ - name: profile1
+ logging:
+ validate_no_errors_period: 2
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/validation-profiles.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/validation-profiles.yml
new file mode 100644
index 00000000000..786e6922133
--- /dev/null
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/host_vars/validation-profiles.yml
@@ -0,0 +1,32 @@
+type: l3leaf
+l3leaf:
+ defaults:
+ platform: vEOS-LAB
+ loopback_ipv4_pool: 192.168.255.0/24
+ vtep_loopback_ipv4_pool: 192.168.254.0/24
+ bgp_as: 65101
+ nodes:
+ - name: validation-profiles
+ id: 1
+ mgmt_ip: 192.168.200.105/24
+ validation_profile: profile1
+
+validation_profiles:
+ - name: profile1
+ parent_profile: profile2
+ hardware:
+ min_power_supplies: 2
+ transceiver_manufacturers:
+ - Third-party vendor profile1
+ - name: profile2
+ hardware:
+ min_fans: 4
+ min_power_supplies: 4
+ min_supervisors: 2
+ min_line_cards: 10
+ min_fabric_cards: 5
+ transceiver_manufacturers:
+ - Third-party vendor profile2
+ exclude_as_extra_fabric_validation_target: true
+ logging:
+ validate_no_errors_period: 2
diff --git a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/hosts.yml b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/hosts.yml
index c244e906d6b..2ecc7f312be 100644
--- a/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/hosts.yml
+++ b/ansible_collections/arista/avd/extensions/molecule/eos_designs_unit_tests/inventory/hosts.yml
@@ -88,6 +88,7 @@ all:
address-locking-4:
underlay-ospf-process-id-same-as-ospf-process-id-with-vrf-default:
exclude-as-extra-fabric-validation-target:
+ validation-profiles:
DEVICES_TESTS:
hosts:
devices-leaf1a:
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md b/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md
index 8d6d12044cf..9755d67b82b 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md
@@ -1596,6 +1596,12 @@ Management interface is modified for specific platforms like modular platforms w
ansible_collections/arista/avd/roles/eos_designs/docs/tables/platform-settings.md
--8<--
+## Validation Profiles
+
+--8<--
+ansible_collections/arista/avd/roles/eos_designs/docs/tables/validation-profiles.md
+--8<--
+
## PTP settings
See the [Configuring PTP](how-to/ptp.md) how-to for details.
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/devices.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/devices.md
index b855fb62404..4d5454a0cda 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/devices.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/devices.md
@@ -13,13 +13,11 @@
| [ parent_profile](## "device_profiles.[].parent_profile") | String | | | | Inherit settings from a parent profile defined under `device_profiles`.
Max two levels of profile inheritance: device -> profile -> parent_profile |
| [ type](## "device_profiles.[].type") | String | | | | Set the type of the device as defined under `node_type_keys`.
This takes precedence over the global `type` key. |
| [ mlag_group](## "device_profiles.[].mlag_group") | String | | | | Name of MLAG group. Exactly two devices must share the same mlag_group.
The group is used for creating MLAG Pairs, for port-channel descriptions on peers and for MLAG domain-id (unless mlag_domain_id is set). |
- | [ kernel_ecmp_cli](## "device_profiles.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
| [devices](## "devices") | List, items: Dictionary | | | | PREVIEW - This datamodel is still under development and may change or get removed at any time. |
| [ - profile](## "devices.[].profile") | String | | | | Inherit settings from a profile defined under `device_profiles`.
Max two levels of profile inheritance: device -> profile -> parent_profile
This takes precedence over the global `device_profile` key. |
| [ type](## "devices.[].type") | String | | | | Set the type of the device as defined under `node_type_keys`.
This takes precedence over the global `type` key. |
| [ mlag_group](## "devices.[].mlag_group") | String | | | | Name of MLAG group. Exactly two devices must share the same mlag_group.
The group is used for creating MLAG Pairs, for port-channel descriptions on peers and for MLAG domain-id (unless mlag_domain_id is set). |
| [ name](## "devices.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
- | [ kernel_ecmp_cli](## "devices.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
=== "YAML"
@@ -48,12 +46,6 @@
# The group is used for creating MLAG Pairs, for port-channel descriptions on peers and for MLAG domain-id (unless mlag_domain_id is set).
mlag_group:
- # Use EOS CLI to configure kernel forwarding ECMP programming.
- # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- # - For newer EOS versions (starting 4.33.2) use the proper CLI.
- # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
- kernel_ecmp_cli:
-
# PREVIEW - This datamodel is still under development and may change or get removed at any time.
devices:
@@ -72,10 +64,4 @@
# The Node Name is used as "hostname".
name:
-
- # Use EOS CLI to configure kernel forwarding ECMP programming.
- # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- # - For newer EOS versions (starting 4.33.2) use the proper CLI.
- # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
- kernel_ecmp_cli:
```
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-settings.md
index d230083ab99..344d8ef9ef0 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-settings.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-settings.md
@@ -217,7 +217,6 @@
| [ level](## "logging_settings.level") | List, items: Dictionary | | | | Configure logging severity. |
| [ - facility](## "logging_settings.level.[].facility") | String | Required, Unique | | | |
| [ severity](## "logging_settings.level.[].severity") | String | | | Valid Values:
- alerts
- critical
- debugging
- emergencies
- errors
- informational
- notifications
- warnings
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7 | Severity of facility. Below are the supported severities.
emergencies System is unusable (severity=0)
alerts Immediate action needed (severity=1)
critical Critical conditions (severity=2)
errors Error conditions (severity=3)
warnings Warning conditions (severity=4)
notifications Normal but significant conditions (severity=5)
informational Informational messages (severity=6)
debugging Debugging messages (severity=7)
<0-7> Severity level value |
- | [ validate_no_errors_period](## "logging_settings.validate_no_errors_period") | Integer | | | | Threshold (in minutes) defining how far back to check the logging buffer for error-level logs during the validation performed by the `anta_runner` role. |
| [management_eapi](## "management_eapi") | Dictionary | | | | Default is HTTPS management eAPI enabled.
|
| [ enabled](## "management_eapi.enabled") | Boolean | | | | Enable/Disable api http-commands. |
| [ enable_http](## "management_eapi.enable_http") | Boolean | | | | |
@@ -770,9 +769,6 @@
# <0-7> Severity level value
severity:
- # Threshold (in minutes) defining how far back to check the logging buffer for error-level logs during the validation performed by the `anta_runner` role.
- validate_no_errors_period:
-
# Default is HTTPS management eAPI enabled.
management_eapi:
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-common-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-common-configuration.md
index 30979cc5224..ef89e1fbd4c 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-common-configuration.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-common-configuration.md
@@ -27,12 +27,13 @@
| [ always_configure_ip_routing](## ".defaults.always_configure_ip_routing") | Boolean | | `False` | | Force configuration of "ip routing" even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
|
| [ raw_eos_cli](## ".defaults.raw_eos_cli") | String | | | | EOS CLI rendered directly on the root level of the final EOS configuration. |
| [ structured_config](## ".defaults.structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
- | [ exclude_as_extra_fabric_validation_target](## ".defaults.exclude_as_extra_fabric_validation_target") | Boolean | | | | Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
|
+ | [ kernel_ecmp_cli](## ".defaults.kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
| [ flow_tracker_type](## ".defaults.flow_tracker_type") | String | | | Valid Values:
- sampled
- hardware | Set the flow tracker type.
Override the `default_flow_tracker_type`` set at the `node_type_key` level.
`default_flow_tracker_type` default value is `sampled`. |
| [ campus](## ".defaults.campus") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_pod](## ".defaults.campus_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_access_pod](## ".defaults.campus_access_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus access pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ cv_tags_topology_type](## ".defaults.cv_tags_topology_type") | String | | | | Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf". |
+ | [ validation_profile](## ".defaults.validation_profile") | String | | | | Name of the validation profile to apply to this device.
The profile must be defined under `validation_profiles`.
Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation. |
| [ node_groups](## ".node_groups") | List, items: Dictionary | | | | Define variables related to all nodes part of this group. |
| [ - group](## ".node_groups.[].group") | String | Required, Unique | | | The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
The Node Group Name is also used for peer description on downstream switches' uplinks.
|
| [ nodes](## ".node_groups.[].nodes") | List, items: Dictionary | | | | Define variables per node. |
@@ -55,12 +56,13 @@
| [ always_configure_ip_routing](## ".node_groups.[].nodes.[].always_configure_ip_routing") | Boolean | | `False` | | Force configuration of "ip routing" even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
|
| [ raw_eos_cli](## ".node_groups.[].nodes.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the root level of the final EOS configuration. |
| [ structured_config](## ".node_groups.[].nodes.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
- | [ exclude_as_extra_fabric_validation_target](## ".node_groups.[].nodes.[].exclude_as_extra_fabric_validation_target") | Boolean | | | | Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
|
+ | [ kernel_ecmp_cli](## ".node_groups.[].nodes.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
| [ flow_tracker_type](## ".node_groups.[].nodes.[].flow_tracker_type") | String | | | Valid Values:
- sampled
- hardware | Set the flow tracker type.
Override the `default_flow_tracker_type`` set at the `node_type_key` level.
`default_flow_tracker_type` default value is `sampled`. |
| [ campus](## ".node_groups.[].nodes.[].campus") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_pod](## ".node_groups.[].nodes.[].campus_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_access_pod](## ".node_groups.[].nodes.[].campus_access_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus access pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ cv_tags_topology_type](## ".node_groups.[].nodes.[].cv_tags_topology_type") | String | | | | Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf". |
+ | [ validation_profile](## ".node_groups.[].nodes.[].validation_profile") | String | | | | Name of the validation profile to apply to this device.
The profile must be defined under `validation_profiles`.
Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation. |
| [ id](## ".node_groups.[].id") | Integer | | | | Unique identifier used for IP addressing and other algorithms. |
| [ platform](## ".node_groups.[].platform") | String | | | | Arista platform family. |
| [ mac_address](## ".node_groups.[].mac_address") | String | | | | Leverage to document management interface mac address. |
@@ -79,12 +81,13 @@
| [ always_configure_ip_routing](## ".node_groups.[].always_configure_ip_routing") | Boolean | | `False` | | Force configuration of "ip routing" even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
|
| [ raw_eos_cli](## ".node_groups.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the root level of the final EOS configuration. |
| [ structured_config](## ".node_groups.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
- | [ exclude_as_extra_fabric_validation_target](## ".node_groups.[].exclude_as_extra_fabric_validation_target") | Boolean | | | | Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
|
+ | [ kernel_ecmp_cli](## ".node_groups.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
| [ flow_tracker_type](## ".node_groups.[].flow_tracker_type") | String | | | Valid Values:
- sampled
- hardware | Set the flow tracker type.
Override the `default_flow_tracker_type`` set at the `node_type_key` level.
`default_flow_tracker_type` default value is `sampled`. |
| [ campus](## ".node_groups.[].campus") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_pod](## ".node_groups.[].campus_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_access_pod](## ".node_groups.[].campus_access_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus access pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ cv_tags_topology_type](## ".node_groups.[].cv_tags_topology_type") | String | | | | Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf". |
+ | [ validation_profile](## ".node_groups.[].validation_profile") | String | | | | Name of the validation profile to apply to this device.
The profile must be defined under `validation_profiles`.
Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation. |
| [ nodes](## ".nodes") | List, items: Dictionary | | | | Define variables per node. |
| [ - name](## ".nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
| [ id](## ".nodes.[].id") | Integer | | | | Unique identifier used for IP addressing and other algorithms. |
@@ -105,12 +108,13 @@
| [ always_configure_ip_routing](## ".nodes.[].always_configure_ip_routing") | Boolean | | `False` | | Force configuration of "ip routing" even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
|
| [ raw_eos_cli](## ".nodes.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the root level of the final EOS configuration. |
| [ structured_config](## ".nodes.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
- | [ exclude_as_extra_fabric_validation_target](## ".nodes.[].exclude_as_extra_fabric_validation_target") | Boolean | | | | Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
|
+ | [ kernel_ecmp_cli](## ".nodes.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
| [ flow_tracker_type](## ".nodes.[].flow_tracker_type") | String | | | Valid Values:
- sampled
- hardware | Set the flow tracker type.
Override the `default_flow_tracker_type`` set at the `node_type_key` level.
`default_flow_tracker_type` default value is `sampled`. |
| [ campus](## ".nodes.[].campus") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_pod](## ".nodes.[].campus_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_access_pod](## ".nodes.[].campus_access_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus access pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ cv_tags_topology_type](## ".nodes.[].cv_tags_topology_type") | String | | | | Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf". |
+ | [ validation_profile](## ".nodes.[].validation_profile") | String | | | | Name of the validation profile to apply to this device.
The profile must be defined under `validation_profiles`.
Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation. |
| [device_profiles](## "device_profiles") | List, items: Dictionary | | | | PREVIEW - This datamodel is still under development and may change or get removed at any time. |
| [ - name](## "device_profiles.[].name") | String | Required, Unique | | | Profile Name |
| [ id](## "device_profiles.[].id") | Integer | | | | Unique identifier used for IP addressing and other algorithms. |
@@ -131,12 +135,13 @@
| [ always_configure_ip_routing](## "device_profiles.[].always_configure_ip_routing") | Boolean | | `False` | | Force configuration of "ip routing" even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
|
| [ raw_eos_cli](## "device_profiles.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the root level of the final EOS configuration. |
| [ structured_config](## "device_profiles.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
- | [ exclude_as_extra_fabric_validation_target](## "device_profiles.[].exclude_as_extra_fabric_validation_target") | Boolean | | | | Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
|
+ | [ kernel_ecmp_cli](## "device_profiles.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
| [ flow_tracker_type](## "device_profiles.[].flow_tracker_type") | String | | | Valid Values:
- sampled
- hardware | Set the flow tracker type.
Override the `default_flow_tracker_type`` set at the `node_type_key` level.
`default_flow_tracker_type` default value is `sampled`. |
| [ campus](## "device_profiles.[].campus") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_pod](## "device_profiles.[].campus_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_access_pod](## "device_profiles.[].campus_access_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus access pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ cv_tags_topology_type](## "device_profiles.[].cv_tags_topology_type") | String | | | | Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf". |
+ | [ validation_profile](## "device_profiles.[].validation_profile") | String | | | | Name of the validation profile to apply to this device.
The profile must be defined under `validation_profiles`.
Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation. |
| [devices](## "devices") | List, items: Dictionary | | | | PREVIEW - This datamodel is still under development and may change or get removed at any time. |
| [ name](## "devices.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
| [ id](## "devices.[].id") | Integer | | | | Unique identifier used for IP addressing and other algorithms. |
@@ -157,12 +162,13 @@
| [ always_configure_ip_routing](## "devices.[].always_configure_ip_routing") | Boolean | | `False` | | Force configuration of "ip routing" even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
|
| [ raw_eos_cli](## "devices.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the root level of the final EOS configuration. |
| [ structured_config](## "devices.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
- | [ exclude_as_extra_fabric_validation_target](## "devices.[].exclude_as_extra_fabric_validation_target") | Boolean | | | | Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
|
+ | [ kernel_ecmp_cli](## "devices.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
| [ flow_tracker_type](## "devices.[].flow_tracker_type") | String | | | Valid Values:
- sampled
- hardware | Set the flow tracker type.
Override the `default_flow_tracker_type`` set at the `node_type_key` level.
`default_flow_tracker_type` default value is `sampled`. |
| [ campus](## "devices.[].campus") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_pod](## "devices.[].campus_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ campus_access_pod](## "devices.[].campus_access_pod") | String | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Name of the campus access pod. Used to generate CloudVision device tags with the `generate_cv_tags.campus_fabric` feature. |
| [ cv_tags_topology_type](## "devices.[].cv_tags_topology_type") | String | | | | Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf". |
+ | [ validation_profile](## "devices.[].validation_profile") | String | | | | Name of the validation profile to apply to this device.
The profile must be defined under `validation_profiles`.
Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation. |
=== "YAML"
@@ -234,8 +240,11 @@
# Custom structured config for eos_cli_config_gen.
structured_config:
- # Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
- exclude_as_extra_fabric_validation_target:
+ # Use EOS CLI to configure kernel forwarding ECMP programming.
+ # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
+ # - For newer EOS versions (starting 4.33.2) use the proper CLI.
+ # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
+ kernel_ecmp_cli:
# Set the flow tracker type.
# Override the `default_flow_tracker_type`` set at the `node_type_key` level.
@@ -257,6 +266,11 @@
# Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf".
cv_tags_topology_type:
+ # Name of the validation profile to apply to this device.
+ # The profile must be defined under `validation_profiles`.
+ # Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation.
+ validation_profile:
+
# Define variables related to all nodes part of this group.
node_groups:
@@ -332,8 +346,11 @@
# Custom structured config for eos_cli_config_gen.
structured_config:
- # Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
- exclude_as_extra_fabric_validation_target:
+ # Use EOS CLI to configure kernel forwarding ECMP programming.
+ # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
+ # - For newer EOS versions (starting 4.33.2) use the proper CLI.
+ # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
+ kernel_ecmp_cli:
# Set the flow tracker type.
# Override the `default_flow_tracker_type`` set at the `node_type_key` level.
@@ -355,6 +372,11 @@
# Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf".
cv_tags_topology_type:
+ # Name of the validation profile to apply to this device.
+ # The profile must be defined under `validation_profiles`.
+ # Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation.
+ validation_profile:
+
# Unique identifier used for IP addressing and other algorithms.
id:
@@ -417,8 +439,11 @@
# Custom structured config for eos_cli_config_gen.
structured_config:
- # Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
- exclude_as_extra_fabric_validation_target:
+ # Use EOS CLI to configure kernel forwarding ECMP programming.
+ # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
+ # - For newer EOS versions (starting 4.33.2) use the proper CLI.
+ # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
+ kernel_ecmp_cli:
# Set the flow tracker type.
# Override the `default_flow_tracker_type`` set at the `node_type_key` level.
@@ -440,6 +465,11 @@
# Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf".
cv_tags_topology_type:
+ # Name of the validation profile to apply to this device.
+ # The profile must be defined under `validation_profiles`.
+ # Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation.
+ validation_profile:
+
# Define variables per node.
nodes:
@@ -508,8 +538,11 @@
# Custom structured config for eos_cli_config_gen.
structured_config:
- # Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
- exclude_as_extra_fabric_validation_target:
+ # Use EOS CLI to configure kernel forwarding ECMP programming.
+ # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
+ # - For newer EOS versions (starting 4.33.2) use the proper CLI.
+ # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
+ kernel_ecmp_cli:
# Set the flow tracker type.
# Override the `default_flow_tracker_type`` set at the `node_type_key` level.
@@ -531,6 +564,11 @@
# Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf".
cv_tags_topology_type:
+ # Name of the validation profile to apply to this device.
+ # The profile must be defined under `validation_profiles`.
+ # Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation.
+ validation_profile:
+
# PREVIEW - This datamodel is still under development and may change or get removed at any time.
device_profiles:
@@ -599,8 +637,11 @@
# Custom structured config for eos_cli_config_gen.
structured_config:
- # Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
- exclude_as_extra_fabric_validation_target:
+ # Use EOS CLI to configure kernel forwarding ECMP programming.
+ # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
+ # - For newer EOS versions (starting 4.33.2) use the proper CLI.
+ # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
+ kernel_ecmp_cli:
# Set the flow tracker type.
# Override the `default_flow_tracker_type`` set at the `node_type_key` level.
@@ -622,6 +663,11 @@
# Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf".
cv_tags_topology_type:
+ # Name of the validation profile to apply to this device.
+ # The profile must be defined under `validation_profiles`.
+ # Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation.
+ validation_profile:
+
# PREVIEW - This datamodel is still under development and may change or get removed at any time.
devices:
@@ -690,8 +736,11 @@
# Custom structured config for eos_cli_config_gen.
structured_config:
- # Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
- exclude_as_extra_fabric_validation_target:
+ # Use EOS CLI to configure kernel forwarding ECMP programming.
+ # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
+ # - For newer EOS versions (starting 4.33.2) use the proper CLI.
+ # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
+ kernel_ecmp_cli:
# Set the flow tracker type.
# Override the `default_flow_tracker_type`` set at the `node_type_key` level.
@@ -712,4 +761,9 @@
# Device type that CloudVision should use when generating the Topology like "leaf", "spine", "core", "edge" or "member-leaf".
cv_tags_topology_type:
+
+ # Name of the validation profile to apply to this device.
+ # The profile must be defined under `validation_profiles`.
+ # Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation.
+ validation_profile:
```
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-keys.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-keys.md
index 6d59fbf58b0..399ef6515c7 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-keys.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-keys.md
@@ -21,7 +21,6 @@
| [ default_evpn_encapsulation](## "custom_node_type_keys.[].default_evpn_encapsulation") | String | | `vxlan` | Value is converted to lower case.
Valid Values:
- mpls
- vxlan | Set the default evpn encapsulation.
|
| [ default_wan_role](## "custom_node_type_keys.[].default_wan_role") | String | | | Valid Values:
- client
- server | Set the default WAN role.
This is used both for AutoVPN and Pathfinder designs.
That means if `wan_mode` root key is set to `legacy-autovpn` or `cv-pathfinder`.
`server` indicates that the router is a route-reflector.
|
| [ default_flow_tracker_type](## "custom_node_type_keys.[].default_flow_tracker_type") | String | | `sampled` | Valid Values:
- sampled
- hardware | Set the default flow tracker type. |
- | [ exclude_as_extra_fabric_validation_target](## "custom_node_type_keys.[].exclude_as_extra_fabric_validation_target") | Boolean | | `False` | | Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
|
| [ mlag_support](## "custom_node_type_keys.[].mlag_support") | Boolean | | `False` | | Can this node type support mlag. |
| [ network_services](## "custom_node_type_keys.[].network_services") | Dictionary | | | | Will network services be deployed on this node type. |
| [ l1](## "custom_node_type_keys.[].network_services.l1") | Boolean | | `False` | | Point-to-point services |
@@ -72,7 +71,6 @@
| [ default_evpn_encapsulation](## "node_type_keys.[].default_evpn_encapsulation") | String | | `vxlan` | Value is converted to lower case.
Valid Values:
- mpls
- vxlan | Set the default evpn encapsulation.
|
| [ default_wan_role](## "node_type_keys.[].default_wan_role") | String | | | Valid Values:
- client
- server | Set the default WAN role.
This is used both for AutoVPN and Pathfinder designs.
That means if `wan_mode` root key is set to `legacy-autovpn` or `cv-pathfinder`.
`server` indicates that the router is a route-reflector.
|
| [ default_flow_tracker_type](## "node_type_keys.[].default_flow_tracker_type") | String | | `sampled` | Valid Values:
- sampled
- hardware | Set the default flow tracker type. |
- | [ exclude_as_extra_fabric_validation_target](## "node_type_keys.[].exclude_as_extra_fabric_validation_target") | Boolean | | `False` | | Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
|
| [ mlag_support](## "node_type_keys.[].mlag_support") | Boolean | | `False` | | Can this node type support mlag. |
| [ network_services](## "node_type_keys.[].network_services") | Dictionary | | | | Will network services be deployed on this node type. |
| [ l1](## "node_type_keys.[].network_services.l1") | Boolean | | `False` | | Point-to-point services |
@@ -162,9 +160,6 @@
# Set the default flow tracker type.
default_flow_tracker_type:
- # Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
- exclude_as_extra_fabric_validation_target:
-
# Can this node type support mlag.
mlag_support:
@@ -337,9 +332,6 @@
# Set the default flow tracker type.
default_flow_tracker_type:
- # Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
- exclude_as_extra_fabric_validation_target:
-
# Can this node type support mlag.
mlag_support:
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-structure.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-structure.md
index ae45ac283a7..ce7bbe4ed6a 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-structure.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-structure.md
@@ -9,16 +9,12 @@
| -------- | ---- | -------- | ------- | ------------------ | ----------- |
| [<node_type_keys.key>](## "") | Dictionary | | | | |
| [ defaults](## ".defaults") | Dictionary | | | | Define variables for all nodes of this type. |
- | [ kernel_ecmp_cli](## ".defaults.kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
| [ node_groups](## ".node_groups") | List, items: Dictionary | | | | Define variables related to all nodes part of this group. |
| [ - group](## ".node_groups.[].group") | String | Required, Unique | | | The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
The Node Group Name is also used for peer description on downstream switches' uplinks.
|
| [ nodes](## ".node_groups.[].nodes") | List, items: Dictionary | | | | Define variables per node. |
| [ - name](## ".node_groups.[].nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
- | [ kernel_ecmp_cli](## ".node_groups.[].nodes.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
- | [ kernel_ecmp_cli](## ".node_groups.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
| [ nodes](## ".nodes") | List, items: Dictionary | | | | Define variables per node. |
| [ - name](## ".nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
- | [ kernel_ecmp_cli](## ".nodes.[].kernel_ecmp_cli") | Boolean | | `True` | | Use EOS CLI to configure kernel forwarding ECMP programming.
For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- For newer EOS versions (starting 4.33.2) use the proper CLI.
- For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent. |
=== "YAML"
@@ -28,12 +24,6 @@
# Define variables for all nodes of this type.
defaults:
- # Use EOS CLI to configure kernel forwarding ECMP programming.
- # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- # - For newer EOS versions (starting 4.33.2) use the proper CLI.
- # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
- kernel_ecmp_cli:
-
# Define variables related to all nodes part of this group.
node_groups:
@@ -47,27 +37,9 @@
# The Node Name is used as "hostname".
- name:
- # Use EOS CLI to configure kernel forwarding ECMP programming.
- # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- # - For newer EOS versions (starting 4.33.2) use the proper CLI.
- # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
- kernel_ecmp_cli:
-
- # Use EOS CLI to configure kernel forwarding ECMP programming.
- # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- # - For newer EOS versions (starting 4.33.2) use the proper CLI.
- # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
- kernel_ecmp_cli:
-
# Define variables per node.
nodes:
# The Node Name is used as "hostname".
- name:
-
- # Use EOS CLI to configure kernel forwarding ECMP programming.
- # For EOS kernel forwarding, ECMP programming can be enabled in two different ways, depending on the EOS version.
- # - For newer EOS versions (starting 4.33.2) use the proper CLI.
- # - For older EOS versions use an agent environment variable. Changing this requires restarting the KernelFib agent.
- kernel_ecmp_cli:
```
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/platform-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/platform-settings.md
index 06097e5ba96..b1303a1e659 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/platform-settings.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/platform-settings.md
@@ -71,6 +71,7 @@
| [ sflow_subinterfaces](## "custom_platform_settings.[].feature_support.sflow_subinterfaces") | Boolean | | `True` | | Support for sFlow on sub-interfaces.
The feature will be ignored on platforms where this is false. |
| [ wan](## "custom_platform_settings.[].feature_support.wan") | Boolean | | `True` | | Support for Arista WAN features.
An error will be raised if the feature is enabled and this is false. |
| [ ptp](## "custom_platform_settings.[].feature_support.ptp") | Boolean | | `True` | | Support for Precision Time Protocol (PTP).
The feature will be ignored on platforms where this is false. |
+ | [ hardware_validation](## "custom_platform_settings.[].feature_support.hardware_validation") | Boolean | | `True` | | Enable hardware validation for the device.
When `false`, all hardware tests are skipped, therefore the `validation_profiles[].hardware` keys defined for the validation profile applied to the device are ignored. |
| [ management_interface](## "custom_platform_settings.[].management_interface") | String | | `Management1` | | |
| [ security_entropy_sources](## "custom_platform_settings.[].security_entropy_sources") | Dictionary | | | | Entropy source improves the randomness of the numbers used to generate MACsec's cryptographic keys. |
| [ hardware](## "custom_platform_settings.[].security_entropy_sources.hardware") | Boolean | | | | Use a hardware based source. |
@@ -80,15 +81,6 @@
| [ digital_twin](## "custom_platform_settings.[].digital_twin") | Dictionary | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Digital Twin settings applied when `avd_digital_twin_mode` is `true`. |
| [ platform](## "custom_platform_settings.[].digital_twin.platform") | String | | | | Name of an alternate `platform_settings` platform used when running in Digital Twin mode.
The `platform_settings` for the regular `platform` is used if this is not set. |
| [ act_node_type](## "custom_platform_settings.[].digital_twin.act_node_type") | String | | | Valid Values:
- cloudeos
- cvp
- generic
- third-party
- tools-server
- veos | ACT node type. |
- | [ validate_hardware](## "custom_platform_settings.[].validate_hardware") | Dictionary | | | | Settings for hardware validation performed by the `anta_runner` role.
If `enabled` is set to `false`, all other keys in this dictionary are ignored.
For the `min_*` keys:
- Undefined (Default): Validate that all available slots are populated.
- Positive Integer: Validate that the number of components inserted is at least the specified minimum.
- 0: Skip the validation for this specific component. |
- | [ enabled](## "custom_platform_settings.[].validate_hardware.enabled") | Boolean | | `True` | | Enable hardware validation for the device.
If `false`, all hardware tests are skipped, therefore the other keys in `validate_hardware` are ignored. |
- | [ min_power_supplies](## "custom_platform_settings.[].validate_hardware.min_power_supplies") | Integer | | | | Minimum number of power supplies required for the device. Set to 0 to skip validation. |
- | [ min_fans](## "custom_platform_settings.[].validate_hardware.min_fans") | Integer | | | | Minimum number of fans required for the device. Set to 0 to skip validation. |
- | [ min_supervisors](## "custom_platform_settings.[].validate_hardware.min_supervisors") | Integer | | | | Minimum number of supervisor modules required for the device. Set to 0 to skip validation. |
- | [ min_line_cards](## "custom_platform_settings.[].validate_hardware.min_line_cards") | Integer | | | | Minimum number of line cards required for the device. Set to 0 to skip validation. |
- | [ min_fabric_cards](## "custom_platform_settings.[].validate_hardware.min_fabric_cards") | Integer | | | | Minimum number of fabric cards required for the device. Set to 0 to skip validation. |
- | [ transceiver_manufacturers](## "custom_platform_settings.[].validate_hardware.transceiver_manufacturers") | List, items: String | | See (+) on YAML tab | | List of approved transceiver manufacturers for the device. |
- | [ - <str>](## "custom_platform_settings.[].validate_hardware.transceiver_manufacturers.[]") | String | | | | |
| [ structured_config](## "custom_platform_settings.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
| [ raw_eos_cli](## "custom_platform_settings.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the root level of the final EOS configuration. |
| [platform_settings](## "platform_settings") | List, items: Dictionary | | See (+) on YAML tab | | Platform settings. The first entry found where the `platform` node setting is fully matched by any regex in the `platforms` list will be chosen. If no matches are found, the first entry containing a platform `default` will be chosen. The default values will be overridden if `platform_settings` is defined. If you need to replace all the default platforms, it is recommended to copy the defaults and modify them. If you need to add custom platforms, create them under `custom_platform_settings`. Entries under `custom_platform_settings` will be matched before the equivalent entries from `platform_settings`. |
@@ -155,6 +147,7 @@
| [ sflow_subinterfaces](## "platform_settings.[].feature_support.sflow_subinterfaces") | Boolean | | `True` | | Support for sFlow on sub-interfaces.
The feature will be ignored on platforms where this is false. |
| [ wan](## "platform_settings.[].feature_support.wan") | Boolean | | `True` | | Support for Arista WAN features.
An error will be raised if the feature is enabled and this is false. |
| [ ptp](## "platform_settings.[].feature_support.ptp") | Boolean | | `True` | | Support for Precision Time Protocol (PTP).
The feature will be ignored on platforms where this is false. |
+ | [ hardware_validation](## "platform_settings.[].feature_support.hardware_validation") | Boolean | | `True` | | Enable hardware validation for the device.
When `false`, all hardware tests are skipped, therefore the `validation_profiles[].hardware` keys defined for the validation profile applied to the device are ignored. |
| [ management_interface](## "platform_settings.[].management_interface") | String | | `Management1` | | |
| [ security_entropy_sources](## "platform_settings.[].security_entropy_sources") | Dictionary | | | | Entropy source improves the randomness of the numbers used to generate MACsec's cryptographic keys. |
| [ hardware](## "platform_settings.[].security_entropy_sources.hardware") | Boolean | | | | Use a hardware based source. |
@@ -164,15 +157,6 @@
| [ digital_twin](## "platform_settings.[].digital_twin") | Dictionary | | | | PREVIEW: This option is marked as "preview", meaning the data models or generated configuration can change at any time.
Digital Twin settings applied when `avd_digital_twin_mode` is `true`. |
| [ platform](## "platform_settings.[].digital_twin.platform") | String | | | | Name of an alternate `platform_settings` platform used when running in Digital Twin mode.
The `platform_settings` for the regular `platform` is used if this is not set. |
| [ act_node_type](## "platform_settings.[].digital_twin.act_node_type") | String | | | Valid Values:
- cloudeos
- cvp
- generic
- third-party
- tools-server
- veos | ACT node type. |
- | [ validate_hardware](## "platform_settings.[].validate_hardware") | Dictionary | | | | Settings for hardware validation performed by the `anta_runner` role.
If `enabled` is set to `false`, all other keys in this dictionary are ignored.
For the `min_*` keys:
- Undefined (Default): Validate that all available slots are populated.
- Positive Integer: Validate that the number of components inserted is at least the specified minimum.
- 0: Skip the validation for this specific component. |
- | [ enabled](## "platform_settings.[].validate_hardware.enabled") | Boolean | | `True` | | Enable hardware validation for the device.
If `false`, all hardware tests are skipped, therefore the other keys in `validate_hardware` are ignored. |
- | [ min_power_supplies](## "platform_settings.[].validate_hardware.min_power_supplies") | Integer | | | | Minimum number of power supplies required for the device. Set to 0 to skip validation. |
- | [ min_fans](## "platform_settings.[].validate_hardware.min_fans") | Integer | | | | Minimum number of fans required for the device. Set to 0 to skip validation. |
- | [ min_supervisors](## "platform_settings.[].validate_hardware.min_supervisors") | Integer | | | | Minimum number of supervisor modules required for the device. Set to 0 to skip validation. |
- | [ min_line_cards](## "platform_settings.[].validate_hardware.min_line_cards") | Integer | | | | Minimum number of line cards required for the device. Set to 0 to skip validation. |
- | [ min_fabric_cards](## "platform_settings.[].validate_hardware.min_fabric_cards") | Integer | | | | Minimum number of fabric cards required for the device. Set to 0 to skip validation. |
- | [ transceiver_manufacturers](## "platform_settings.[].validate_hardware.transceiver_manufacturers") | List, items: String | | See (+) on YAML tab | | List of approved transceiver manufacturers for the device. |
- | [ - <str>](## "platform_settings.[].validate_hardware.transceiver_manufacturers.[]") | String | | | | |
| [ structured_config](## "platform_settings.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
| [ raw_eos_cli](## "platform_settings.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the root level of the final EOS configuration. |
| [platform_speed_groups](## "platform_speed_groups") | List, items: Dictionary | | | | Set Hardware Speed Groups per Platform. |
@@ -331,6 +315,10 @@
# Support for Precision Time Protocol (PTP).
# The feature will be ignored on platforms where this is false.
ptp:
+
+ # Enable hardware validation for the device.
+ # When `false`, all hardware tests are skipped, therefore the `validation_profiles[].hardware` keys defined for the validation profile applied to the device are ignored.
+ hardware_validation:
management_interface:
# Entropy source improves the randomness of the numbers used to generate MACsec's cryptographic keys.
@@ -359,38 +347,6 @@
# ACT node type.
act_node_type:
- # Settings for hardware validation performed by the `anta_runner` role.
- # If `enabled` is set to `false`, all other keys in this dictionary are ignored.
- #
- # For the `min_*` keys:
- # - Undefined (Default): Validate that all available slots are populated.
- # - Positive Integer: Validate that the number of components inserted is at least the specified minimum.
- # - 0: Skip the validation for this specific component.
- validate_hardware:
-
- # Enable hardware validation for the device.
- # If `false`, all hardware tests are skipped, therefore the other keys in `validate_hardware` are ignored.
- enabled:
-
- # Minimum number of power supplies required for the device. Set to 0 to skip validation.
- min_power_supplies:
-
- # Minimum number of fans required for the device. Set to 0 to skip validation.
- min_fans:
-
- # Minimum number of supervisor modules required for the device. Set to 0 to skip validation.
- min_supervisors:
-
- # Minimum number of line cards required for the device. Set to 0 to skip validation.
- min_line_cards:
-
- # Minimum number of fabric cards required for the device. Set to 0 to skip validation.
- min_fabric_cards:
-
- # List of approved transceiver manufacturers for the device.
- transceiver_manufacturers: # (1)!
- -
-
# Custom structured config for eos_cli_config_gen.
structured_config:
@@ -398,7 +354,7 @@
raw_eos_cli:
# Platform settings. The first entry found where the `platform` node setting is fully matched by any regex in the `platforms` list will be chosen. If no matches are found, the first entry containing a platform `default` will be chosen. The default values will be overridden if `platform_settings` is defined. If you need to replace all the default platforms, it is recommended to copy the defaults and modify them. If you need to add custom platforms, create them under `custom_platform_settings`. Entries under `custom_platform_settings` will be matched before the equivalent entries from `platform_settings`.
- platform_settings: # (2)!
+ platform_settings: # (1)!
- platforms:
-
@@ -543,6 +499,10 @@
# Support for Precision Time Protocol (PTP).
# The feature will be ignored on platforms where this is false.
ptp:
+
+ # Enable hardware validation for the device.
+ # When `false`, all hardware tests are skipped, therefore the `validation_profiles[].hardware` keys defined for the validation profile applied to the device are ignored.
+ hardware_validation:
management_interface:
# Entropy source improves the randomness of the numbers used to generate MACsec's cryptographic keys.
@@ -571,38 +531,6 @@
# ACT node type.
act_node_type:
- # Settings for hardware validation performed by the `anta_runner` role.
- # If `enabled` is set to `false`, all other keys in this dictionary are ignored.
- #
- # For the `min_*` keys:
- # - Undefined (Default): Validate that all available slots are populated.
- # - Positive Integer: Validate that the number of components inserted is at least the specified minimum.
- # - 0: Skip the validation for this specific component.
- validate_hardware:
-
- # Enable hardware validation for the device.
- # If `false`, all hardware tests are skipped, therefore the other keys in `validate_hardware` are ignored.
- enabled:
-
- # Minimum number of power supplies required for the device. Set to 0 to skip validation.
- min_power_supplies:
-
- # Minimum number of fans required for the device. Set to 0 to skip validation.
- min_fans:
-
- # Minimum number of supervisor modules required for the device. Set to 0 to skip validation.
- min_supervisors:
-
- # Minimum number of line cards required for the device. Set to 0 to skip validation.
- min_line_cards:
-
- # Minimum number of fabric cards required for the device. Set to 0 to skip validation.
- min_fabric_cards:
-
- # List of approved transceiver manufacturers for the device.
- transceiver_manufacturers: # (3)!
- -
-
# Custom structured config for eos_cli_config_gen.
structured_config:
@@ -620,14 +548,6 @@
1. Default Value
- ```yaml
- transceiver_manufacturers:
- - Arista Networks
- - Arastra, Inc.
- ```
-
- 2. Default Value
-
```yaml
platform_settings:
- platforms:
@@ -789,13 +709,12 @@
interface_storm_control: false
queue_monitor_length_notify: false
evpn_gateway_all_active_multihoming: true
+ hardware_validation: false
reload_delay:
mlag: 300
non_mlag: 330
digital_twin:
act_node_type: veos
- validate_hardware:
- enabled: false
- platforms:
- CEOS
- cEOS
@@ -807,25 +726,23 @@
interface_storm_control: false
queue_monitor_length_notify: false
evpn_gateway_all_active_multihoming: true
+ hardware_validation: false
management_interface: Management0
reload_delay:
mlag: 300
non_mlag: 330
digital_twin:
act_node_type: veos
- validate_hardware:
- enabled: false
- platforms:
- CloudEOS
feature_support:
bgp_update_wait_install: false
interface_storm_control: false
queue_monitor_length_notify: false
+ hardware_validation: false
p2p_uplinks_mtu: 9194
digital_twin:
act_node_type: cloudeos
- validate_hardware:
- enabled: false
- platforms:
- AWE-5310
- AWE-7230R
@@ -869,11 +786,3 @@
digital_twin:
platform: CloudEOS
```
-
- 3. Default Value
-
- ```yaml
- transceiver_manufacturers:
- - Arista Networks
- - Arastra, Inc.
- ```
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/validation-profiles.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/validation-profiles.md
new file mode 100644
index 00000000000..8ff5a998f8d
--- /dev/null
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/validation-profiles.md
@@ -0,0 +1,75 @@
+
+=== "Table"
+
+ | Variable | Type | Required | Default | Value Restrictions | Description |
+ | -------- | ---- | -------- | ------- | ------------------ | ----------- |
+ | [validation_profiles](## "validation_profiles") | List, items: Dictionary | | | | List of validation profiles defining hardware, logging, and fabric-related validation rules.
Validation profiles can be referenced from node definitions (for example under `l3leaf.nodes[].validation_profile`) and support single-level inheritance using `parent_profile`. |
+ | [ - name](## "validation_profiles.[].name") | String | Required, Unique | | | |
+ | [ parent_profile](## "validation_profiles.[].parent_profile") | String | | | | Inherit settings from a parent profile defined under `validation_profiles`.
Max one level of profile inheritance: profile -> parent_profile |
+ | [ hardware](## "validation_profiles.[].hardware") | Dictionary | | | | Hardware validation thresholds for the device.
These settings are only applied when `platform_settings/custom_platform_settings[].feature_support.hardware_validation` is set to `true`.
If hardware validation is disabled, all hardware validation checks are skipped and the keys under this section are ignored. |
+ | [ min_power_supplies](## "validation_profiles.[].hardware.min_power_supplies") | Integer | | | | Minimum number of power supplies required for the device. Set to 0 to skip validation. |
+ | [ min_fans](## "validation_profiles.[].hardware.min_fans") | Integer | | | | Minimum number of fans required for the device. Set to 0 to skip validation. |
+ | [ min_supervisors](## "validation_profiles.[].hardware.min_supervisors") | Integer | | | | Minimum number of supervisor modules required for the device. Set to 0 to skip validation. |
+ | [ min_line_cards](## "validation_profiles.[].hardware.min_line_cards") | Integer | | | | Minimum number of line cards required for the device. Set to 0 to skip validation. |
+ | [ min_fabric_cards](## "validation_profiles.[].hardware.min_fabric_cards") | Integer | | | | Minimum number of fabric cards required for the device. Set to 0 to skip validation. |
+ | [ transceiver_manufacturers](## "validation_profiles.[].hardware.transceiver_manufacturers") | List, items: String | | See (+) on YAML tab | | List of approved transceiver manufacturers for the device. |
+ | [ - <str>](## "validation_profiles.[].hardware.transceiver_manufacturers.[]") | String | | | | |
+ | [ logging](## "validation_profiles.[].logging") | Dictionary | | | | |
+ | [ validate_no_errors_period](## "validation_profiles.[].logging.validate_no_errors_period") | Integer | | | | Threshold (in minutes) defining how far back to check the logging buffer for error-level logs during the validation performed by the `anta_runner` role. |
+ | [ exclude_as_extra_fabric_validation_target](## "validation_profiles.[].exclude_as_extra_fabric_validation_target") | Boolean | | `False` | | Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role. |
+
+=== "YAML"
+
+ ```yaml
+ # List of validation profiles defining hardware, logging, and fabric-related validation rules.
+ # Validation profiles can be referenced from node definitions (for example under `l3leaf.nodes[].validation_profile`) and support single-level inheritance using `parent_profile`.
+ validation_profiles:
+ - name:
+
+ # Inherit settings from a parent profile defined under `validation_profiles`.
+ # Max one level of profile inheritance: profile -> parent_profile
+ parent_profile:
+
+ # Hardware validation thresholds for the device.
+ # These settings are only applied when `platform_settings/custom_platform_settings[].feature_support.hardware_validation` is set to `true`.
+ # If hardware validation is disabled, all hardware validation checks are skipped and the keys under this section are ignored.
+ hardware:
+
+ # Minimum number of power supplies required for the device. Set to 0 to skip validation.
+ min_power_supplies:
+
+ # Minimum number of fans required for the device. Set to 0 to skip validation.
+ min_fans:
+
+ # Minimum number of supervisor modules required for the device. Set to 0 to skip validation.
+ min_supervisors:
+
+ # Minimum number of line cards required for the device. Set to 0 to skip validation.
+ min_line_cards:
+
+ # Minimum number of fabric cards required for the device. Set to 0 to skip validation.
+ min_fabric_cards:
+
+ # List of approved transceiver manufacturers for the device.
+ transceiver_manufacturers: # (1)!
+ -
+ logging:
+
+ # Threshold (in minutes) defining how far back to check the logging buffer for error-level logs during the validation performed by the `anta_runner` role.
+ validate_no_errors_period:
+
+ # Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
+ exclude_as_extra_fabric_validation_target:
+ ```
+
+ 1. Default Value
+
+ ```yaml
+ transceiver_manufacturers:
+ - Arista Networks
+ - Arastra, Inc.
+ ```
diff --git a/python-avd/pyavd/_eos_designs/schema/__init__.py b/python-avd/pyavd/_eos_designs/schema/__init__.py
index 5d483b3a0df..8b33afb8f33 100644
--- a/python-avd/pyavd/_eos_designs/schema/__init__.py
+++ b/python-avd/pyavd/_eos_designs/schema/__init__.py
@@ -9508,7 +9508,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -9600,6 +9599,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
name: str
"""Profile Name"""
@@ -9832,11 +9832,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -10497,6 +10492,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -10540,7 +10543,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -10632,6 +10634,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
DeviceProfilesItem.
@@ -10802,9 +10805,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -11257,6 +11257,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -14559,7 +14565,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -14651,6 +14656,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
profile: str | None
"""
@@ -14893,11 +14899,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -15558,6 +15559,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -15602,7 +15611,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -15694,6 +15702,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
DevicesItem.
@@ -15872,9 +15881,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -16327,6 +16333,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -21731,7 +21743,6 @@ class Vrfs(AvdIndexedList[str, VrfsItem]):
"policy": {"type": EosCliConfigGen.Logging.Policy},
"event": {"type": EosCliConfigGen.Logging.Event},
"level": {"type": EosCliConfigGen.Logging.Level},
- "validate_no_errors_period": {"type": int},
}
hosts: Hosts
"""Subclass of AvdList with `HostsItem` items."""
@@ -21753,11 +21764,6 @@ class Vrfs(AvdIndexedList[str, VrfsItem]):
event: EosCliConfigGen.Logging.Event
level: EosCliConfigGen.Logging.Level
"""Configure logging severity."""
- validate_no_errors_period: int | None
- """
- Threshold (in minutes) defining how far back to check the logging buffer for error-level logs during
- the validation performed by the `anta_runner` role.
- """
if TYPE_CHECKING:
@@ -21777,7 +21783,6 @@ def __init__(
policy: EosCliConfigGen.Logging.Policy | UndefinedType = Undefined,
event: EosCliConfigGen.Logging.Event | UndefinedType = Undefined,
level: EosCliConfigGen.Logging.Level | UndefinedType = Undefined,
- validate_no_errors_period: int | None | UndefinedType = Undefined,
) -> None:
"""
LoggingSettings.
@@ -21799,9 +21804,6 @@ def __init__(
policy: policy
event: event
level: Configure logging severity.
- validate_no_errors_period:
- Threshold (in minutes) defining how far back to check the logging buffer for error-level logs during
- the validation performed by the `anta_runner` role.
"""
@@ -23878,7 +23880,6 @@ def __init__(
"default_evpn_encapsulation": {"type": str, "default": "vxlan"},
"default_wan_role": {"type": str},
"default_flow_tracker_type": {"type": str, "default": "sampled"},
- "exclude_as_extra_fabric_validation_target": {"type": bool, "default": False},
"mlag_support": {"type": bool, "default": False},
"network_services": {"type": NetworkServices},
"underlay_router": {"type": bool, "default": True},
@@ -23962,13 +23963,6 @@ def __init__(
Default value: `"sampled"`
"""
- exclude_as_extra_fabric_validation_target: bool
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
-
- Default value: `False`
- """
mlag_support: bool
"""
Can this node type support mlag.
@@ -24064,7 +24058,6 @@ def __init__(
default_evpn_encapsulation: DefaultEvpnEncapsulation | UndefinedType = Undefined,
default_wan_role: DefaultWanRole | None | UndefinedType = Undefined,
default_flow_tracker_type: DefaultFlowTrackerType | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | UndefinedType = Undefined,
mlag_support: bool | UndefinedType = Undefined,
network_services: NetworkServices | UndefinedType = Undefined,
underlay_router: bool | UndefinedType = Undefined,
@@ -24113,9 +24106,6 @@ def __init__(
`server` indicates that the
router is a route-reflector.
default_flow_tracker_type: Set the default flow tracker type.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
mlag_support: Can this node type support mlag.
network_services:
Will network services be deployed on this node type.
@@ -24417,7 +24407,6 @@ def __init__(
"default_evpn_encapsulation": {"type": str, "default": "vxlan"},
"default_wan_role": {"type": str},
"default_flow_tracker_type": {"type": str, "default": "sampled"},
- "exclude_as_extra_fabric_validation_target": {"type": bool, "default": False},
"mlag_support": {"type": bool, "default": False},
"network_services": {"type": NetworkServices},
"underlay_router": {"type": bool, "default": True},
@@ -24501,13 +24490,6 @@ def __init__(
Default value: `"sampled"`
"""
- exclude_as_extra_fabric_validation_target: bool
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
-
- Default value: `False`
- """
mlag_support: bool
"""
Can this node type support mlag.
@@ -24603,7 +24585,6 @@ def __init__(
default_evpn_encapsulation: DefaultEvpnEncapsulation | UndefinedType = Undefined,
default_wan_role: DefaultWanRole | None | UndefinedType = Undefined,
default_flow_tracker_type: DefaultFlowTrackerType | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | UndefinedType = Undefined,
mlag_support: bool | UndefinedType = Undefined,
network_services: NetworkServices | UndefinedType = Undefined,
underlay_router: bool | UndefinedType = Undefined,
@@ -24652,9 +24633,6 @@ def __init__(
`server` indicates that the
router is a route-reflector.
default_flow_tracker_type: Set the default flow tracker type.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
mlag_support: Can this node type support mlag.
network_services:
Will network services be deployed on this node type.
@@ -25494,6 +25472,7 @@ def __init__(
"sflow_subinterfaces": {"type": bool, "default": True},
"wan": {"type": bool, "default": True},
"ptp": {"type": bool, "default": True},
+ "hardware_validation": {"type": bool, "default": True},
}
queue_monitor: bool
"""
@@ -25656,6 +25635,15 @@ def __init__(
The feature will be ignored on platforms where this is
false.
+ Default value: `True`
+ """
+ hardware_validation: bool
+ """
+ Enable hardware validation for the device.
+ When `false`, all hardware tests are skipped, therefore
+ the `validation_profiles[].hardware` keys defined for the validation profile applied to the device
+ are ignored.
+
Default value: `True`
"""
@@ -25684,6 +25672,7 @@ def __init__(
sflow_subinterfaces: bool | UndefinedType = Undefined,
wan: bool | UndefinedType = Undefined,
ptp: bool | UndefinedType = Undefined,
+ hardware_validation: bool | UndefinedType = Undefined,
) -> None:
"""
FeatureSupport.
@@ -25779,6 +25768,11 @@ def __init__(
Support for Precision Time Protocol (PTP).
The feature will be ignored on platforms where this is
false.
+ hardware_validation:
+ Enable hardware validation for the device.
+ When `false`, all hardware tests are skipped, therefore
+ the `validation_profiles[].hardware` keys defined for the validation profile applied to the device
+ are ignored.
"""
@@ -25868,7 +25862,6 @@ def __init__(self, *, platform: str | None | UndefinedType = Undefined, act_node
"management_interface": {"type": str, "default": "Management1"},
"security_entropy_sources": {"type": SecurityEntropySources},
"digital_twin": {"type": DigitalTwin},
- "validate_hardware": {"type": EosCliConfigGen.Metadata.ValidateHardware},
"structured_config": {"type": EosCliConfigGen},
"raw_eos_cli": {"type": str},
}
@@ -25910,20 +25903,6 @@ def __init__(self, *, platform: str | None | UndefinedType = Undefined, act_node
Subclass
of AvdModel.
"""
- validate_hardware: EosCliConfigGen.Metadata.ValidateHardware
- """
- Settings for hardware validation performed by the `anta_runner` role.
- If `enabled` is set to
- `false`, all other keys in this dictionary are ignored.
-
- For the `min_*` keys:
- - Undefined
- (Default): Validate that all available slots are populated.
- - Positive Integer: Validate that the
- number of components inserted is at least the specified minimum.
- - 0: Skip the validation for this
- specific component.
- """
structured_config: EosCliConfigGen
"""Custom structured config for eos_cli_config_gen."""
raw_eos_cli: str | None
@@ -25945,7 +25924,6 @@ def __init__(
management_interface: str | UndefinedType = Undefined,
security_entropy_sources: SecurityEntropySources | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
- validate_hardware: EosCliConfigGen.Metadata.ValidateHardware | UndefinedType = Undefined,
structured_config: EosCliConfigGen | UndefinedType = Undefined,
raw_eos_cli: str | None | UndefinedType = Undefined,
) -> None:
@@ -25981,18 +25959,6 @@ def __init__(
Subclass
of AvdModel.
- validate_hardware:
- Settings for hardware validation performed by the `anta_runner` role.
- If `enabled` is set to
- `false`, all other keys in this dictionary are ignored.
-
- For the `min_*` keys:
- - Undefined
- (Default): Validate that all available slots are populated.
- - Positive Integer: Validate that the
- number of components inserted is at least the specified minimum.
- - 0: Skip the validation for this
- specific component.
structured_config: Custom structured config for eos_cli_config_gen.
raw_eos_cli: EOS CLI rendered directly on the root level of the final EOS configuration.
@@ -26263,6 +26229,7 @@ def __init__(
"sflow_subinterfaces": {"type": bool, "default": True},
"wan": {"type": bool, "default": True},
"ptp": {"type": bool, "default": True},
+ "hardware_validation": {"type": bool, "default": True},
}
queue_monitor: bool
"""
@@ -26425,6 +26392,15 @@ def __init__(
The feature will be ignored on platforms where this is
false.
+ Default value: `True`
+ """
+ hardware_validation: bool
+ """
+ Enable hardware validation for the device.
+ When `false`, all hardware tests are skipped, therefore
+ the `validation_profiles[].hardware` keys defined for the validation profile applied to the device
+ are ignored.
+
Default value: `True`
"""
@@ -26453,6 +26429,7 @@ def __init__(
sflow_subinterfaces: bool | UndefinedType = Undefined,
wan: bool | UndefinedType = Undefined,
ptp: bool | UndefinedType = Undefined,
+ hardware_validation: bool | UndefinedType = Undefined,
) -> None:
"""
FeatureSupport.
@@ -26548,6 +26525,11 @@ def __init__(
Support for Precision Time Protocol (PTP).
The feature will be ignored on platforms where this is
false.
+ hardware_validation:
+ Enable hardware validation for the device.
+ When `false`, all hardware tests are skipped, therefore
+ the `validation_profiles[].hardware` keys defined for the validation profile applied to the device
+ are ignored.
"""
@@ -26637,7 +26619,6 @@ def __init__(self, *, platform: str | None | UndefinedType = Undefined, act_node
"management_interface": {"type": str, "default": "Management1"},
"security_entropy_sources": {"type": SecurityEntropySources},
"digital_twin": {"type": DigitalTwin},
- "validate_hardware": {"type": EosCliConfigGen.Metadata.ValidateHardware},
"structured_config": {"type": EosCliConfigGen},
"raw_eos_cli": {"type": str},
}
@@ -26679,20 +26660,6 @@ def __init__(self, *, platform: str | None | UndefinedType = Undefined, act_node
Subclass
of AvdModel.
"""
- validate_hardware: EosCliConfigGen.Metadata.ValidateHardware
- """
- Settings for hardware validation performed by the `anta_runner` role.
- If `enabled` is set to
- `false`, all other keys in this dictionary are ignored.
-
- For the `min_*` keys:
- - Undefined
- (Default): Validate that all available slots are populated.
- - Positive Integer: Validate that the
- number of components inserted is at least the specified minimum.
- - 0: Skip the validation for this
- specific component.
- """
structured_config: EosCliConfigGen
"""Custom structured config for eos_cli_config_gen."""
raw_eos_cli: str | None
@@ -26714,7 +26681,6 @@ def __init__(
management_interface: str | UndefinedType = Undefined,
security_entropy_sources: SecurityEntropySources | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
- validate_hardware: EosCliConfigGen.Metadata.ValidateHardware | UndefinedType = Undefined,
structured_config: EosCliConfigGen | UndefinedType = Undefined,
raw_eos_cli: str | None | UndefinedType = Undefined,
) -> None:
@@ -26750,18 +26716,6 @@ def __init__(
Subclass
of AvdModel.
- validate_hardware:
- Settings for hardware validation performed by the `anta_runner` role.
- If `enabled` is set to
- `false`, all other keys in this dictionary are ignored.
-
- For the `min_*` keys:
- - Undefined
- (Default): Validate that all available slots are populated.
- - Positive Integer: Validate that the
- number of components inserted is at least the specified minimum.
- - 0: Skip the validation for this
- specific component.
structured_config: Custom structured config for eos_cli_config_gen.
raw_eos_cli: EOS CLI rendered directly on the root level of the final EOS configuration.
@@ -32317,6 +32271,183 @@ def __init__(self, *, enable: bool | UndefinedType = Undefined) -> None:
"""
+ class ValidationProfilesItem(AvdModel):
+ """Subclass of AvdModel."""
+
+ class Hardware(AvdModel):
+ """Subclass of AvdModel."""
+
+ class TransceiverManufacturers(AvdList[str]):
+ """Subclass of AvdList with `str` items."""
+
+ TransceiverManufacturers._item_type = str
+
+ _fields: ClassVar[dict] = {
+ "min_power_supplies": {"type": int},
+ "min_fans": {"type": int},
+ "min_supervisors": {"type": int},
+ "min_line_cards": {"type": int},
+ "min_fabric_cards": {"type": int},
+ "transceiver_manufacturers": {
+ "type": TransceiverManufacturers,
+ "default": lambda cls: coerce_type(["Arista Networks", "Arastra, Inc."], target_type=cls),
+ },
+ }
+ min_power_supplies: int | None
+ """Minimum number of power supplies required for the device. Set to 0 to skip validation."""
+ min_fans: int | None
+ """Minimum number of fans required for the device. Set to 0 to skip validation."""
+ min_supervisors: int | None
+ """Minimum number of supervisor modules required for the device. Set to 0 to skip validation."""
+ min_line_cards: int | None
+ """Minimum number of line cards required for the device. Set to 0 to skip validation."""
+ min_fabric_cards: int | None
+ """Minimum number of fabric cards required for the device. Set to 0 to skip validation."""
+ transceiver_manufacturers: TransceiverManufacturers
+ """
+ List of approved transceiver manufacturers for the device.
+
+ Subclass of AvdList with `str` items.
+
+ Default value: `lambda cls: coerce_type(["Arista Networks", "Arastra, Inc."], target_type=cls)`
+ """
+
+ if TYPE_CHECKING:
+
+ def __init__(
+ self,
+ *,
+ min_power_supplies: int | None | UndefinedType = Undefined,
+ min_fans: int | None | UndefinedType = Undefined,
+ min_supervisors: int | None | UndefinedType = Undefined,
+ min_line_cards: int | None | UndefinedType = Undefined,
+ min_fabric_cards: int | None | UndefinedType = Undefined,
+ transceiver_manufacturers: TransceiverManufacturers | UndefinedType = Undefined,
+ ) -> None:
+ """
+ Hardware.
+
+
+ Subclass of AvdModel.
+
+ Args:
+ min_power_supplies: Minimum number of power supplies required for the device. Set to 0 to skip validation.
+ min_fans: Minimum number of fans required for the device. Set to 0 to skip validation.
+ min_supervisors: Minimum number of supervisor modules required for the device. Set to 0 to skip validation.
+ min_line_cards: Minimum number of line cards required for the device. Set to 0 to skip validation.
+ min_fabric_cards: Minimum number of fabric cards required for the device. Set to 0 to skip validation.
+ transceiver_manufacturers:
+ List of approved transceiver manufacturers for the device.
+
+ Subclass of AvdList with `str` items.
+
+ """
+
+ class Logging(AvdModel):
+ """Subclass of AvdModel."""
+
+ _fields: ClassVar[dict] = {"validate_no_errors_period": {"type": int}}
+ validate_no_errors_period: int | None
+ """
+ Threshold (in minutes) defining how far back to check the logging buffer for error-level logs during
+ the validation performed by the `anta_runner` role.
+ """
+
+ if TYPE_CHECKING:
+
+ def __init__(self, *, validate_no_errors_period: int | None | UndefinedType = Undefined) -> None:
+ """
+ Logging.
+
+
+ Subclass of AvdModel.
+
+ Args:
+ validate_no_errors_period:
+ Threshold (in minutes) defining how far back to check the logging buffer for error-level logs during
+ the validation performed by the `anta_runner` role.
+
+ """
+
+ _fields: ClassVar[dict] = {
+ "name": {"type": str},
+ "parent_profile": {"type": str},
+ "hardware": {"type": Hardware},
+ "logging": {"type": Logging},
+ "exclude_as_extra_fabric_validation_target": {"type": bool, "default": False},
+ }
+ name: str
+ parent_profile: str | None
+ """
+ Inherit settings from a parent profile defined under `validation_profiles`.
+ Max one level of profile
+ inheritance: profile -> parent_profile
+ """
+ hardware: Hardware
+ """
+ Hardware validation thresholds for the device.
+ These settings are only applied when
+ `platform_settings/custom_platform_settings[].feature_support.hardware_validation` is set to `true`.
+ If hardware validation is disabled, all hardware validation checks are skipped and the keys under
+ this section are ignored.
+
+ Subclass of AvdModel.
+ """
+ logging: Logging
+ """Subclass of AvdModel."""
+ exclude_as_extra_fabric_validation_target: bool
+ """
+ Exclude this node from being used as a destination target from other fabric devices in the extra
+ fabric validation tests performed by the `anta_runner` role.
+
+ Default value: `False`
+ """
+
+ if TYPE_CHECKING:
+
+ def __init__(
+ self,
+ *,
+ name: str | UndefinedType = Undefined,
+ parent_profile: str | None | UndefinedType = Undefined,
+ hardware: Hardware | UndefinedType = Undefined,
+ logging: Logging | UndefinedType = Undefined,
+ exclude_as_extra_fabric_validation_target: bool | UndefinedType = Undefined,
+ ) -> None:
+ """
+ ValidationProfilesItem.
+
+
+ Subclass of AvdModel.
+
+ Args:
+ name: name
+ parent_profile:
+ Inherit settings from a parent profile defined under `validation_profiles`.
+ Max one level of profile
+ inheritance: profile -> parent_profile
+ hardware:
+ Hardware validation thresholds for the device.
+ These settings are only applied when
+ `platform_settings/custom_platform_settings[].feature_support.hardware_validation` is set to `true`.
+ If hardware validation is disabled, all hardware validation checks are skipped and the keys under
+ this section are ignored.
+
+ Subclass of AvdModel.
+ logging: Subclass of AvdModel.
+ exclude_as_extra_fabric_validation_target:
+ Exclude this node from being used as a destination target from other fabric devices in the extra
+ fabric validation tests performed by the `anta_runner` role.
+
+ """
+
+ class ValidationProfiles(AvdIndexedList[str, ValidationProfilesItem]):
+ """Subclass of AvdIndexedList with `ValidationProfilesItem` items. Primary key is `name` (`str`)."""
+
+ _primary_key: ClassVar[str] = "name"
+
+ ValidationProfiles._item_type = ValidationProfilesItem
+
class WanCarriersItem(AvdModel):
"""Subclass of AvdModel."""
@@ -37373,7 +37504,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -37465,6 +37595,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
id: int | None
"""Unique identifier used for IP addressing and other algorithms."""
@@ -37676,11 +37807,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -38341,6 +38467,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -38380,7 +38514,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -38473,6 +38606,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
Defaults.
@@ -38629,9 +38763,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -39084,6 +39215,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -42415,7 +42552,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -42507,6 +42643,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
name: str
"""The Node Name is used as "hostname"."""
@@ -42728,11 +42865,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -43393,6 +43525,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -43434,7 +43574,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -43527,6 +43666,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
NodesItem.
@@ -43690,9 +43830,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -44145,6 +44282,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -47384,7 +47527,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -47476,6 +47618,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
group: str
"""
@@ -47700,11 +47843,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -48365,6 +48503,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -48406,7 +48552,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -48499,6 +48644,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
NodeGroupsItem.
@@ -48664,9 +48810,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -49119,6 +49262,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -52433,7 +52582,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -52525,6 +52673,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
name: str
"""The Node Name is used as "hostname"."""
@@ -52746,11 +52895,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -53411,6 +53555,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -53452,7 +53604,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -53545,6 +53696,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
NodesItem.
@@ -53708,9 +53860,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -54163,6 +54312,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -69687,7 +69842,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -69779,6 +69933,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
id: int | None
"""Unique identifier used for IP addressing and other algorithms."""
@@ -69990,11 +70145,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -70655,6 +70805,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -70694,7 +70852,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -70787,6 +70944,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
Defaults.
@@ -70943,9 +71101,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -71398,6 +71553,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -74729,7 +74890,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -74821,6 +74981,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
name: str
"""The Node Name is used as "hostname"."""
@@ -75042,11 +75203,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -75707,6 +75863,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -75748,7 +75912,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -75841,6 +76004,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
NodesItem.
@@ -76004,9 +76168,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -76459,6 +76620,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -79698,7 +79865,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -79790,6 +79956,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
group: str
"""
@@ -80014,11 +80181,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -80679,6 +80841,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -80720,7 +80890,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -80813,6 +80982,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
NodeGroupsItem.
@@ -80978,9 +81148,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -81433,6 +81600,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -84747,7 +84920,6 @@ def __init__(
"uplink_macsec": {"type": UplinkMacsec},
"uplink_port_channel_id": {"type": int},
"uplink_switch_port_channel_id": {"type": int},
- "exclude_as_extra_fabric_validation_target": {"type": bool},
"uplink_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
"uplink_port_channel_structured_config": {"type": EosCliConfigGen.PortChannelInterfacesItem},
"uplink_switch_ethernet_structured_config": {"type": EosCliConfigGen.EthernetInterfacesItem},
@@ -84839,6 +85011,7 @@ def __init__(
"campus_access_pod": {"type": str},
"cv_tags_topology_type": {"type": str},
"digital_twin": {"type": DigitalTwin},
+ "validation_profile": {"type": str},
}
name: str
"""The Node Name is used as "hostname"."""
@@ -85060,11 +85233,6 @@ def __init__(
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
"""
- exclude_as_extra_fabric_validation_target: bool | None
- """
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
- """
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem
"""Custom structured config applied to `uplink_interfaces`."""
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem
@@ -85725,6 +85893,14 @@ def __init__(
Subclass of AvdModel.
"""
+ validation_profile: str | None
+ """
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
+ """
if TYPE_CHECKING:
@@ -85766,7 +85942,6 @@ def __init__(
uplink_macsec: UplinkMacsec | UndefinedType = Undefined,
uplink_port_channel_id: int | None | UndefinedType = Undefined,
uplink_switch_port_channel_id: int | None | UndefinedType = Undefined,
- exclude_as_extra_fabric_validation_target: bool | None | UndefinedType = Undefined,
uplink_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
uplink_port_channel_structured_config: EosCliConfigGen.PortChannelInterfacesItem | UndefinedType = Undefined,
uplink_switch_ethernet_structured_config: EosCliConfigGen.EthernetInterfacesItem | UndefinedType = Undefined,
@@ -85859,6 +86034,7 @@ def __init__(
campus_access_pod: str | None | UndefinedType = Undefined,
cv_tags_topology_type: str | None | UndefinedType = Undefined,
digital_twin: DigitalTwin | UndefinedType = Undefined,
+ validation_profile: str | None | UndefinedType = Undefined,
) -> None:
"""
NodesItem.
@@ -86022,9 +86198,6 @@ def __init__(
autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between
1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- Exclude this node from being used as a destination target from other fabric devices in the extra
- fabric validation tests performed by the `anta_runner` role.
uplink_ethernet_structured_config: Custom structured config applied to `uplink_interfaces`.
uplink_port_channel_structured_config: Custom structured config applied to the uplink Port-Channel when using port-channel uplinks.
uplink_switch_ethernet_structured_config: Custom structured config applied to `uplink_switch_interfaces` on the `uplink_switches`.
@@ -86477,6 +86650,12 @@ def __init__(
associated node(s).
Subclass of AvdModel.
+ validation_profile:
+ Name of the validation profile to apply to this device.
+ The profile must be defined under
+ `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by
+ the `anta_runner` role during post-deployment validation.
"""
@@ -87008,10 +87187,10 @@ def __init__(
"interface_storm_control": False,
"queue_monitor_length_notify": False,
"evpn_gateway_all_active_multihoming": True,
+ "hardware_validation": False,
},
"reload_delay": {"mlag": 300, "non_mlag": 330},
"digital_twin": {"act_node_type": "veos"},
- "validate_hardware": {"enabled": False},
},
{
"platforms": ["CEOS", "cEOS", "ceos", "cEOSLab"],
@@ -87021,18 +87200,22 @@ def __init__(
"interface_storm_control": False,
"queue_monitor_length_notify": False,
"evpn_gateway_all_active_multihoming": True,
+ "hardware_validation": False,
},
"management_interface": "Management0",
"reload_delay": {"mlag": 300, "non_mlag": 330},
"digital_twin": {"act_node_type": "veos"},
- "validate_hardware": {"enabled": False},
},
{
"platforms": ["CloudEOS"],
- "feature_support": {"bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False},
+ "feature_support": {
+ "bgp_update_wait_install": False,
+ "interface_storm_control": False,
+ "queue_monitor_length_notify": False,
+ "hardware_validation": False,
+ },
"p2p_uplinks_mtu": 9194,
"digital_twin": {"act_node_type": "cloudeos"},
- "validate_hardware": {"enabled": False},
},
{
"platforms": ["AWE-5310", "AWE-7230R"],
@@ -87148,6 +87331,7 @@ def __init__(
"uplink_ptp": {"type": UplinkPtp},
"use_cv_topology": {"type": bool},
"use_router_general_for_router_id": {"type": bool, "default": False},
+ "validation_profiles": {"type": ValidationProfiles},
"vtep_loopback_description": {"type": str, "default": "VXLAN_TUNNEL_SOURCE"},
"vtep_vvtep_ip": {"type": str},
"wan_carriers": {"type": WanCarriers},
@@ -88605,7 +88789,7 @@ def __init__(
Subclass of AvdList with `PlatformSettingsItem` items.
- Default value: `lambda cls: coerce_type([{"platforms": ["default"], "feature_support": {"queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7050X3"], "feature_support": {"queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072", "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["720XP"], "feature_support": {"poe": True, "queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "trident_forwarding_table_partition": "flexible exact-match 16000 l2-shared 18000 l3-shared 22000", "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["750", "755", "758"], "management_interface": "Management0", "feature_support": {"poe": True, "queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["720DP", "722XP", "710P"], "feature_support": {"poe": True, "queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7010TX"], "feature_support": {"queue_monitor_length_notify": False, "per_interface_mtu": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7280R", "7280R2", "7020R"], "lag_hardware_only": True, "reload_delay": {"mlag": 900, "non_mlag": 1020}, "tcam_profile": "vxlan-routing", "feature_support": {"private_vlan": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7280R3"], "reload_delay": {"mlag": 900, "non_mlag": 1020}, "tcam_profile": "vxlan-routing", "feature_support": {"evpn_gateway_all_active_multihoming": True, "private_vlan": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7500R", "7500R2"], "lag_hardware_only": True, "management_interface": "Management0", "reload_delay": {"mlag": 900, "non_mlag": 1020}, "tcam_profile": "vxlan-routing", "feature_support": {"private_vlan": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7500R3", "7800R3"], "management_interface": "Management0", "reload_delay": {"mlag": 900, "non_mlag": 1020}, "tcam_profile": "vxlan-routing", "feature_support": {"evpn_gateway_all_active_multihoming": True, "private_vlan": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7358X4"], "management_interface": "Management1/1", "reload_delay": {"mlag": 300, "non_mlag": 330}, "feature_support": {"queue_monitor_length_notify": False, "interface_storm_control": True, "bgp_update_wait_for_convergence": True, "bgp_update_wait_install": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7368X4"], "management_interface": "Management0", "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7300X3"], "management_interface": "Management0", "reload_delay": {"mlag": 1200, "non_mlag": 1320}, "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072", "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["VEOS", "VEOS-LAB", "vEOS", "vEOS-lab"], "feature_support": {"bgp_update_wait_for_convergence": False, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "evpn_gateway_all_active_multihoming": True}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"act_node_type": "veos"}, "validate_hardware": {"enabled": False}}, {"platforms": ["CEOS", "cEOS", "ceos", "cEOSLab"], "feature_support": {"bgp_update_wait_for_convergence": False, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "evpn_gateway_all_active_multihoming": True}, "management_interface": "Management0", "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"act_node_type": "veos"}, "validate_hardware": {"enabled": False}}, {"platforms": ["CloudEOS"], "feature_support": {"bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False}, "p2p_uplinks_mtu": 9194, "digital_twin": {"act_node_type": "cloudeos"}, "validate_hardware": {"enabled": False}}, {"platforms": ["AWE-5310", "AWE-7230R"], "feature_support": {"bgp_update_wait_for_convergence": True, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "platform_sfe_interface_profile": {"supported": True, "max_rx_queues": 6}}, "management_interface": "Management1/1", "p2p_uplinks_mtu": 9194, "digital_twin": {"platform": "CloudEOS"}}, {"platforms": ["AWE-5510", "AWE-7250R"], "feature_support": {"bgp_update_wait_for_convergence": True, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "platform_sfe_interface_profile": {"supported": True, "max_rx_queues": 16}}, "management_interface": "Management1/1", "p2p_uplinks_mtu": 9194, "digital_twin": {"platform": "CloudEOS"}}, {"platforms": ["AWE-7220R"], "feature_support": {"bgp_update_wait_for_convergence": True, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "poe": True}, "management_interface": "Management1", "p2p_uplinks_mtu": 9194, "digital_twin": {"platform": "CloudEOS"}}], target_type=cls)`
+ Default value: `lambda cls: coerce_type([{"platforms": ["default"], "feature_support": {"queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7050X3"], "feature_support": {"queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072", "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["720XP"], "feature_support": {"poe": True, "queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "trident_forwarding_table_partition": "flexible exact-match 16000 l2-shared 18000 l3-shared 22000", "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["750", "755", "758"], "management_interface": "Management0", "feature_support": {"poe": True, "queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["720DP", "722XP", "710P"], "feature_support": {"poe": True, "queue_monitor_length_notify": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7010TX"], "feature_support": {"queue_monitor_length_notify": False, "per_interface_mtu": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7280R", "7280R2", "7020R"], "lag_hardware_only": True, "reload_delay": {"mlag": 900, "non_mlag": 1020}, "tcam_profile": "vxlan-routing", "feature_support": {"private_vlan": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7280R3"], "reload_delay": {"mlag": 900, "non_mlag": 1020}, "tcam_profile": "vxlan-routing", "feature_support": {"evpn_gateway_all_active_multihoming": True, "private_vlan": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7500R", "7500R2"], "lag_hardware_only": True, "management_interface": "Management0", "reload_delay": {"mlag": 900, "non_mlag": 1020}, "tcam_profile": "vxlan-routing", "feature_support": {"private_vlan": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7500R3", "7800R3"], "management_interface": "Management0", "reload_delay": {"mlag": 900, "non_mlag": 1020}, "tcam_profile": "vxlan-routing", "feature_support": {"evpn_gateway_all_active_multihoming": True, "private_vlan": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7358X4"], "management_interface": "Management1/1", "reload_delay": {"mlag": 300, "non_mlag": 330}, "feature_support": {"queue_monitor_length_notify": False, "interface_storm_control": True, "bgp_update_wait_for_convergence": True, "bgp_update_wait_install": False}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7368X4"], "management_interface": "Management0", "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["7300X3"], "management_interface": "Management0", "reload_delay": {"mlag": 1200, "non_mlag": 1320}, "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072", "digital_twin": {"platform": "vEOS-lab"}}, {"platforms": ["VEOS", "VEOS-LAB", "vEOS", "vEOS-lab"], "feature_support": {"bgp_update_wait_for_convergence": False, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "evpn_gateway_all_active_multihoming": True, "hardware_validation": False}, "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"act_node_type": "veos"}}, {"platforms": ["CEOS", "cEOS", "ceos", "cEOSLab"], "feature_support": {"bgp_update_wait_for_convergence": False, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "evpn_gateway_all_active_multihoming": True, "hardware_validation": False}, "management_interface": "Management0", "reload_delay": {"mlag": 300, "non_mlag": 330}, "digital_twin": {"act_node_type": "veos"}}, {"platforms": ["CloudEOS"], "feature_support": {"bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "hardware_validation": False}, "p2p_uplinks_mtu": 9194, "digital_twin": {"act_node_type": "cloudeos"}}, {"platforms": ["AWE-5310", "AWE-7230R"], "feature_support": {"bgp_update_wait_for_convergence": True, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "platform_sfe_interface_profile": {"supported": True, "max_rx_queues": 6}}, "management_interface": "Management1/1", "p2p_uplinks_mtu": 9194, "digital_twin": {"platform": "CloudEOS"}}, {"platforms": ["AWE-5510", "AWE-7250R"], "feature_support": {"bgp_update_wait_for_convergence": True, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "platform_sfe_interface_profile": {"supported": True, "max_rx_queues": 16}}, "management_interface": "Management1/1", "p2p_uplinks_mtu": 9194, "digital_twin": {"platform": "CloudEOS"}}, {"platforms": ["AWE-7220R"], "feature_support": {"bgp_update_wait_for_convergence": True, "bgp_update_wait_install": False, "interface_storm_control": False, "queue_monitor_length_notify": False, "poe": True}, "management_interface": "Management1", "p2p_uplinks_mtu": 9194, "digital_twin": {"platform": "CloudEOS"}}], target_type=cls)`
"""
platform_speed_groups: PlatformSpeedGroups
"""
@@ -89002,6 +89186,13 @@ def __init__(
Default value: `False`
"""
+ validation_profiles: ValidationProfiles
+ """
+ List of validation profiles defining hardware, logging, and fabric-related validation rules.
+ Validation profiles can be referenced from node definitions (for example under
+ `l3leaf.nodes[].validation_profile`) and support single-level inheritance using `parent_profile`.
+ Subclass of AvdIndexedList with `ValidationProfilesItem` items. Primary key is `name` (`str`).
+ """
vtep_loopback_description: str
"""
Customize the description on the VTEP interface, typically Loopback1.
@@ -89307,6 +89498,7 @@ def __init__(
uplink_ptp: UplinkPtp | UndefinedType = Undefined,
use_cv_topology: bool | None | UndefinedType = Undefined,
use_router_general_for_router_id: bool | UndefinedType = Undefined,
+ validation_profiles: ValidationProfiles | UndefinedType = Undefined,
vtep_loopback_description: str | UndefinedType = Undefined,
vtep_vvtep_ip: str | None | UndefinedType = Undefined,
wan_carriers: WanCarriers | UndefinedType = Undefined,
@@ -90650,6 +90842,11 @@ def __init__(
details.
Requires both `cv_topology` and `cv_topology_levels` to be set.
use_router_general_for_router_id: Use `router general` to set router ID for all routing protocols and VRFs.
+ validation_profiles:
+ List of validation profiles defining hardware, logging, and fabric-related validation rules.
+ Validation profiles can be referenced from node definitions (for example under
+ `l3leaf.nodes[].validation_profile`) and support single-level inheritance using `parent_profile`.
+ Subclass of AvdIndexedList with `ValidationProfilesItem` items. Primary key is `name` (`str`).
vtep_loopback_description: Customize the description on the VTEP interface, typically Loopback1.
vtep_vvtep_ip:
IP Address used as Virtual VTEP. Will be configured as secondary IP on Loopback1.
diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml
index 75d2a0e6df7..a21916b9a69 100644
--- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml
+++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml
@@ -3181,9 +3181,6 @@ keys:
level:
type: list
$ref: eos_cli_config_gen#/keys/logging/keys/level
- validate_no_errors_period:
- type: int
- $ref: eos_cli_config_gen#/keys/metadata/keys/validate_no_errors_period
mac_address_table:
documentation_options:
table: system-settings
@@ -4332,13 +4329,12 @@ keys:
interface_storm_control: false
queue_monitor_length_notify: false
evpn_gateway_all_active_multihoming: true
+ hardware_validation: false
reload_delay:
mlag: 300
non_mlag: 330
digital_twin:
act_node_type: veos
- validate_hardware:
- enabled: false
- platforms:
- CEOS
- cEOS
@@ -4350,25 +4346,23 @@ keys:
interface_storm_control: false
queue_monitor_length_notify: false
evpn_gateway_all_active_multihoming: true
+ hardware_validation: false
management_interface: Management0
reload_delay:
mlag: 300
non_mlag: 330
digital_twin:
act_node_type: veos
- validate_hardware:
- enabled: false
- platforms:
- CloudEOS
feature_support:
bgp_update_wait_install: false
interface_storm_control: false
queue_monitor_length_notify: false
+ hardware_validation: false
p2p_uplinks_mtu: 9194
digital_twin:
act_node_type: cloudeos
- validate_hardware:
- enabled: false
- platforms:
- AWE-5310
- AWE-7230R
@@ -5671,6 +5665,89 @@ keys:
description: Use `router general` to set router ID for all routing protocols and
VRFs.
default: false
+ validation_profiles:
+ type: list
+ primary_key: name
+ description: 'List of validation profiles defining hardware, logging, and fabric-related
+ validation rules.
+
+ Validation profiles can be referenced from node definitions (for example under
+ `l3leaf.nodes[].validation_profile`) and support single-level inheritance using
+ `parent_profile`.'
+ items:
+ type: dict
+ keys:
+ name:
+ type: str
+ parent_profile:
+ type: str
+ description: 'Inherit settings from a parent profile defined under `validation_profiles`.
+
+ Max one level of profile inheritance: profile -> parent_profile'
+ hardware:
+ type: dict
+ description: 'Hardware validation thresholds for the device.
+
+ These settings are only applied when `platform_settings/custom_platform_settings[].feature_support.hardware_validation`
+ is set to `true`.
+
+ If hardware validation is disabled, all hardware validation checks are
+ skipped and the keys under this section are ignored.'
+ keys:
+ min_power_supplies:
+ type: int
+ convert_types:
+ - str
+ description: Minimum number of power supplies required for the device.
+ Set to 0 to skip validation.
+ min_fans:
+ type: int
+ convert_types:
+ - str
+ description: Minimum number of fans required for the device. Set to
+ 0 to skip validation.
+ min_supervisors:
+ type: int
+ convert_types:
+ - str
+ description: Minimum number of supervisor modules required for the device.
+ Set to 0 to skip validation.
+ min_line_cards:
+ type: int
+ convert_types:
+ - str
+ description: Minimum number of line cards required for the device. Set
+ to 0 to skip validation.
+ min_fabric_cards:
+ type: int
+ convert_types:
+ - str
+ description: Minimum number of fabric cards required for the device.
+ Set to 0 to skip validation.
+ transceiver_manufacturers:
+ type: list
+ description: List of approved transceiver manufacturers for the device.
+ items:
+ type: str
+ default:
+ - Arista Networks
+ - Arastra, Inc.
+ logging:
+ type: dict
+ keys:
+ validate_no_errors_period:
+ type: int
+ convert_types:
+ - str
+ description: Threshold (in minutes) defining how far back to check the
+ logging buffer for error-level logs during the validation performed
+ by the `anta_runner` role.
+ exclude_as_extra_fabric_validation_target:
+ type: bool
+ description: Exclude this node from being used as a destination target from
+ other fabric devices in the extra fabric validation tests performed by
+ the `anta_runner` role.
+ default: false
vtep_loopback_description:
documentation_options:
table: overlay-settings
@@ -9791,11 +9868,6 @@ $defs:
not overlap with autogenerated Port-channel IDs in the Network Services.\nNote!
For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches
must have the same value.\n"
- exclude_as_extra_fabric_validation_target:
- type: bool
- $ref: eos_cli_config_gen#/keys/metadata/keys/exclude_as_extra_fabric_validation_target
- documentation_options:
- table: node-type-common-configuration
uplink_ethernet_structured_config:
type: dict
$ref: eos_cli_config_gen#/keys/ethernet_interfaces/items
@@ -10876,6 +10948,8 @@ $defs:
- int
description: Set BGP cluster id.
kernel_ecmp_cli:
+ documentation_options:
+ table: node-type-common-configuration
type: bool
default: true
description: 'Use EOS CLI to configure kernel forwarding ECMP programming.
@@ -11408,6 +11482,16 @@ $defs:
remove_in_version: 6.0.0
new_key: uplink_port_channel_structured_config or uplink_ethernet_structured_config
or uplink_switch_ethernet_structured_config or uplink_switch_port_channel_structured_config
+ validation_profile:
+ documentation_options:
+ table: node-type-common-configuration
+ type: str
+ description: 'Name of the validation profile to apply to this device.
+
+ The profile must be defined under `validation_profiles`.
+
+ Validation profiles define requirements (e.g., hardware and logging)
+ used by the `anta_runner` role during post-deployment validation.'
node_groups:
type: list
description: Define variables related to all nodes part of this group.
@@ -11588,10 +11672,6 @@ $defs:
- hardware
description: Set the default flow tracker type.
default: sampled
- exclude_as_extra_fabric_validation_target:
- type: bool
- $ref: eos_cli_config_gen#/keys/metadata/keys/exclude_as_extra_fabric_validation_target
- default: false
mlag_support:
type: bool
default: false
@@ -12843,6 +12923,14 @@ $defs:
The feature will be ignored on platforms where this is false.'
default: true
+ hardware_validation:
+ type: bool
+ description: 'Enable hardware validation for the device.
+
+ When `false`, all hardware tests are skipped, therefore the `validation_profiles[].hardware`
+ keys defined for the validation profile applied to the device are
+ ignored.'
+ default: true
management_interface:
type: str
default: Management1
@@ -12887,9 +12975,6 @@ $defs:
- third-party
- tools-server
- veos
- validate_hardware:
- type: dict
- $ref: eos_cli_config_gen#/keys/metadata/keys/validate_hardware
structured_config:
type: dict
relaxed_validation: true
diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_node_type.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_node_type.schema.yml
index f8b18030caa..4b813a89ef2 100644
--- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_node_type.schema.yml
+++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_node_type.schema.yml
@@ -369,11 +369,6 @@ $defs:
This option overrides the default behavior and statically sets the Port-channel ID on the uplink switch.
Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
- exclude_as_extra_fabric_validation_target:
- type: bool
- $ref: "eos_cli_config_gen#/keys/metadata/keys/exclude_as_extra_fabric_validation_target"
- documentation_options:
- table: node-type-common-configuration
uplink_ethernet_structured_config:
type: dict
$ref: "eos_cli_config_gen#/keys/ethernet_interfaces/items"
@@ -1219,6 +1214,8 @@ $defs:
- "int"
description: Set BGP cluster id.
kernel_ecmp_cli:
+ documentation_options:
+ table: node-type-common-configuration
type: bool
default: true
description: |-
@@ -1700,6 +1697,14 @@ $defs:
removed: true
remove_in_version: 6.0.0
new_key: uplink_port_channel_structured_config or uplink_ethernet_structured_config or uplink_switch_ethernet_structured_config or uplink_switch_port_channel_structured_config
+ validation_profile:
+ documentation_options:
+ table: node-type-common-configuration
+ type: str
+ description: |-
+ Name of the validation profile to apply to this device.
+ The profile must be defined under `validation_profiles`.
+ Validation profiles define requirements (e.g., hardware and logging) used by the `anta_runner` role during post-deployment validation.
node_groups:
type: list
description: Define variables related to all nodes part of this group.
diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_node_type_keys.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_node_type_keys.schema.yml
index 6593f17b7ea..f47260e5cca 100644
--- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_node_type_keys.schema.yml
+++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_node_type_keys.schema.yml
@@ -107,10 +107,6 @@ $defs:
- "hardware"
description: Set the default flow tracker type.
default: "sampled"
- exclude_as_extra_fabric_validation_target:
- type: bool
- $ref: "eos_cli_config_gen#/keys/metadata/keys/exclude_as_extra_fabric_validation_target"
- default: false
mlag_support:
type: bool
default: false
diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_platform_settings.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_platform_settings.yml
index a3c3dcdaa0c..945cdb9f63d 100644
--- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_platform_settings.yml
+++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_platform_settings.yml
@@ -286,6 +286,12 @@ $defs:
Support for Precision Time Protocol (PTP).
The feature will be ignored on platforms where this is false.
default: true
+ hardware_validation:
+ type: bool
+ description: |-
+ Enable hardware validation for the device.
+ When `false`, all hardware tests are skipped, therefore the `validation_profiles[].hardware` keys defined for the validation profile applied to the device are ignored.
+ default: true
management_interface:
type: str
default: Management1
@@ -327,9 +333,6 @@ $defs:
- third-party
- tools-server
- veos
- validate_hardware:
- type: dict
- $ref: eos_cli_config_gen#/keys/metadata/keys/validate_hardware
structured_config:
type: dict
relaxed_validation: true
diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/logging_settings.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/logging_settings.yml
index 6f467cb5b0b..62a16ed3e11 100644
--- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/logging_settings.yml
+++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/logging_settings.yml
@@ -86,6 +86,3 @@ keys:
level:
type: list
$ref: eos_cli_config_gen#/keys/logging/keys/level
- validate_no_errors_period:
- type: int
- $ref: eos_cli_config_gen#/keys/metadata/keys/validate_no_errors_period
diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/platform_settings.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/platform_settings.schema.yml
index 350e876fb97..2ca995d6e70 100644
--- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/platform_settings.schema.yml
+++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/platform_settings.schema.yml
@@ -191,13 +191,12 @@ keys:
interface_storm_control: false
queue_monitor_length_notify: false
evpn_gateway_all_active_multihoming: true
+ hardware_validation: false
reload_delay:
mlag: 300
non_mlag: 330
digital_twin:
act_node_type: veos
- validate_hardware:
- enabled: false
- platforms:
- CEOS
- cEOS
@@ -209,25 +208,23 @@ keys:
interface_storm_control: false
queue_monitor_length_notify: false
evpn_gateway_all_active_multihoming: true
+ hardware_validation: false
management_interface: Management0
reload_delay:
mlag: 300
non_mlag: 330
digital_twin:
act_node_type: veos
- validate_hardware:
- enabled: false
- platforms:
- CloudEOS
feature_support:
bgp_update_wait_install: false
interface_storm_control: false
queue_monitor_length_notify: false
+ hardware_validation: false
p2p_uplinks_mtu: 9194
digital_twin:
act_node_type: cloudeos
- validate_hardware:
- enabled: false
- platforms:
- AWE-5310
- AWE-7230R
diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/validation_profiles.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/validation_profiles.schema.yml
new file mode 100644
index 00000000000..507fa033ba1
--- /dev/null
+++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/validation_profiles.schema.yml
@@ -0,0 +1,82 @@
+# Copyright (c) 2025-2026 Arista Networks, Inc.
+# Use of this source code is governed by the Apache License 2.0
+# that can be found in the LICENSE file.
+# yaml-language-server: $schema=../../../_schema/avd_meta_schema.json
+# Line above is used by RedHat's YAML Schema vscode extension
+# Use Ctrl + Space to get suggestions for every field. Autocomplete will pop up after typing 2 letters.
+type: dict
+keys:
+ validation_profiles:
+ type: list
+ primary_key: name
+ description: |-
+ List of validation profiles defining hardware, logging, and fabric-related validation rules.
+ Validation profiles can be referenced from node definitions (for example under `l3leaf.nodes[].validation_profile`) and support single-level inheritance using `parent_profile`.
+ items:
+ type: dict
+ keys:
+ name:
+ type: str
+ parent_profile:
+ type: str
+ description: |-
+ Inherit settings from a parent profile defined under `validation_profiles`.
+ Max one level of profile inheritance: profile -> parent_profile
+ hardware:
+ type: dict
+ description: |-
+ Hardware validation thresholds for the device.
+ These settings are only applied when `platform_settings/custom_platform_settings[].feature_support.hardware_validation` is set to `true`.
+ If hardware validation is disabled, all hardware validation checks are skipped and the keys under this section are ignored.
+ keys:
+ min_power_supplies:
+ type: int
+ convert_types:
+ - str
+ description: |-
+ Minimum number of power supplies required for the device. Set to 0 to skip validation.
+ min_fans:
+ type: int
+ convert_types:
+ - str
+ description: |-
+ Minimum number of fans required for the device. Set to 0 to skip validation.
+ min_supervisors:
+ type: int
+ convert_types:
+ - str
+ description: |-
+ Minimum number of supervisor modules required for the device. Set to 0 to skip validation.
+ min_line_cards:
+ type: int
+ convert_types:
+ - str
+ description: |-
+ Minimum number of line cards required for the device. Set to 0 to skip validation.
+ min_fabric_cards:
+ type: int
+ convert_types:
+ - str
+ description: |-
+ Minimum number of fabric cards required for the device. Set to 0 to skip validation.
+ transceiver_manufacturers:
+ type: list
+ description: |-
+ List of approved transceiver manufacturers for the device.
+ items:
+ type: str
+ default:
+ - 'Arista Networks'
+ - 'Arastra, Inc.'
+ logging:
+ type: dict
+ keys:
+ validate_no_errors_period:
+ type: int
+ convert_types:
+ - str
+ description: Threshold (in minutes) defining how far back to check the logging buffer for error-level logs during the validation performed by the `anta_runner` role.
+ exclude_as_extra_fabric_validation_target:
+ type: bool
+ description: Exclude this node from being used as a destination target from other fabric devices in the extra fabric validation tests performed by the `anta_runner` role.
+ default: false
diff --git a/python-avd/pyavd/_eos_designs/structured_config/metadata/__init__.py b/python-avd/pyavd/_eos_designs/structured_config/metadata/__init__.py
index 0de8e4b737a..7bdee06f2d4 100644
--- a/python-avd/pyavd/_eos_designs/structured_config/metadata/__init__.py
+++ b/python-avd/pyavd/_eos_designs/structured_config/metadata/__init__.py
@@ -5,19 +5,20 @@
from typing import Protocol
+from pyavd._eos_designs.schema import EosCliConfigGen
from pyavd._eos_designs.structured_config.structured_config_generator import (
StructuredConfigGenerator,
StructuredConfigGeneratorProtocol,
structured_config_contributor,
)
-from pyavd._utils import default
from .cv_pathfinder import CvPathfinderMixin
from .cv_tags import CvTagsMixin
from .digital_twin import DigitalTwinMixin
+from .utils import UtilsMixin
-class AvdStructuredConfigMetadataProtocol(CvTagsMixin, CvPathfinderMixin, DigitalTwinMixin, StructuredConfigGeneratorProtocol, Protocol):
+class AvdStructuredConfigMetadataProtocol(CvTagsMixin, CvPathfinderMixin, DigitalTwinMixin, UtilsMixin, StructuredConfigGeneratorProtocol, Protocol):
"""Protocol for the AvdStructuredConfigMetadata Class."""
@structured_config_contributor
@@ -31,19 +32,25 @@ def metadata(self) -> None:
dc_name=self.inputs.dc_name,
fabric_name=self.shared_utils.fabric_name,
serial_number=self.shared_utils.serial_number,
- validate_no_errors_period=self.inputs.logging_settings.validate_no_errors_period,
)
- exclude_as_extra_fabric_validation_target = default(
- self.shared_utils.node_config.exclude_as_extra_fabric_validation_target,
- self.shared_utils.node_type_key_data.exclude_as_extra_fabric_validation_target,
- )
- if exclude_as_extra_fabric_validation_target:
- self.structured_config.metadata.exclude_as_extra_fabric_validation_target = exclude_as_extra_fabric_validation_target
self._set_cv_tags()
self._set_cv_pathfinder()
if self.shared_utils.digital_twin:
self._set_digital_twin()
- self.structured_config.metadata.validate_hardware = self.shared_utils.platform_settings.validate_hardware
+
+ # Logic for validate hardware
+ if not self.shared_utils.platform_settings.feature_support.hardware_validation:
+ self.structured_config.metadata.validate_hardware.enabled = False
+ if not self.shared_utils.node_config.validation_profile:
+ return
+ resolved_profile = self.get_resolved_validation_profile(self.shared_utils.node_config.validation_profile)
+ if self.shared_utils.platform_settings.feature_support.hardware_validation:
+ self.structured_config.metadata.validate_hardware = resolved_profile.hardware._cast_as(
+ EosCliConfigGen.Metadata.ValidateHardware, ignore_extra_keys=True
+ )
+ self.structured_config.metadata.validate_no_errors_period = resolved_profile.logging.validate_no_errors_period
+ if resolved_profile.exclude_as_extra_fabric_validation_target:
+ self.structured_config.metadata.exclude_as_extra_fabric_validation_target = resolved_profile.exclude_as_extra_fabric_validation_target
class AvdStructuredConfigMetadata(StructuredConfigGenerator, AvdStructuredConfigMetadataProtocol):
diff --git a/python-avd/pyavd/_eos_designs/structured_config/metadata/utils.py b/python-avd/pyavd/_eos_designs/structured_config/metadata/utils.py
new file mode 100644
index 00000000000..e53225f372c
--- /dev/null
+++ b/python-avd/pyavd/_eos_designs/structured_config/metadata/utils.py
@@ -0,0 +1,64 @@
+# Copyright (c) 2025-2026 Arista Networks, Inc.
+# Use of this source code is governed by the Apache License 2.0
+# that can be found in the LICENSE file.
+from __future__ import annotations
+
+from typing import TYPE_CHECKING, Protocol
+
+from pyavd._errors import AristaAvdInvalidInputsError
+
+if TYPE_CHECKING:
+ from pyavd._eos_designs.schema import EosDesigns
+
+ from . import AvdStructuredConfigMetadataProtocol
+
+
+class UtilsMixin(Protocol):
+ """
+ Mixin Class with internal functions.
+
+ Class should only be used as Mixin to a AvdStructuredConfig class or other Mixins.
+ """
+
+ def get_resolved_validation_profile(self: AvdStructuredConfigMetadataProtocol, profile_name: str) -> EosDesigns.ValidationProfilesItem:
+ """
+ Return a fully resolved validation profile.
+
+ The validation profile is resolved as follows:
+ * Verify that the requested validation profile exists.
+ * If a parent profile is defined, verify that the parent profile exists.
+ * Deep-inherit the profile from its parent profile.
+ * Remove the `parent_profile` attribute from the resolved profile to
+ prevent further inheritance processing.
+
+ Args:
+ profile_name: Name of the validation profile applied under the node
+ configuration.
+
+ Returns:
+ The resolved validation profile with inheritance applied.
+
+ Raises:
+ AristaAvdInvalidInputsError: If the validation profile or its parent
+ profile is not defined under `inputs.validation_profiles`.
+ """
+ validation_profiles = self.inputs.validation_profiles
+
+ if profile_name not in validation_profiles:
+ msg = f"Validation profile '{profile_name}' referenced in node configuration is not defined under 'validation_profiles'."
+ raise AristaAvdInvalidInputsError(msg)
+
+ validation_profile = validation_profiles[profile_name]
+
+ if (parent_name := validation_profile.parent_profile) is not None:
+ if parent_name not in validation_profiles:
+ msg = f"Parent validation profile '{parent_name}' referenced by validation profile '{profile_name}' is not defined under 'validation_profiles'."
+ raise AristaAvdInvalidInputsError(msg)
+
+ parent_profile = validation_profiles[parent_name]
+ validation_profile = validation_profile._deepinherited(parent_profile)
+
+ # Remove parent_profile after resolution to avoid re-processing inheritance
+ delattr(validation_profile, "parent_profile")
+
+ return validation_profile