diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SPINE1.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SPINE1.cfg
index 2bd4b9ceace..dd5c7361615 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SPINE1.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SPINE1.cfg
@@ -100,6 +100,7 @@ interface Ethernet18
description P2P_LINK_TO_MLAG-OSPF-L3LEAF1A_Ethernet1
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.6/31
!
@@ -107,6 +108,7 @@ interface Ethernet19
description P2P_LINK_TO_MH-LEAF1A_Ethernet1
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.0/31
!
@@ -114,6 +116,7 @@ interface Ethernet20
description P2P_LINK_TO_MH-LEAF1B_Ethernet1
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.2/31
!
@@ -121,6 +124,7 @@ interface Ethernet21
description P2P_LINK_TO_MH-LEAF2A_Ethernet1
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.4/31
!
@@ -192,6 +196,7 @@ interface Ethernet220
description P2P_LINK_TO_MLAG-OSPF-L3LEAF1B_Ethernet1
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.8/31
!
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1A.cfg
index c744338c0b4..bb6d7f4616c 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1A.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1A.cfg
@@ -205,6 +205,7 @@ interface Ethernet1
description P2P_LINK_TO_DC1-SPINE1_Ethernet19
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.1/31
link tracking group LT_GROUP1 upstream
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1B.cfg
index 9c4244148a5..e759e28453a 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1B.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1B.cfg
@@ -205,6 +205,7 @@ interface Ethernet1
description P2P_LINK_TO_DC1-SPINE1_Ethernet20
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.3/31
link tracking group LT_GROUP1 upstream
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF2A.cfg
index 37eee124859..2dafa6ac6f7 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF2A.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF2A.cfg
@@ -62,6 +62,7 @@ interface Ethernet1
description P2P_LINK_TO_DC1-SPINE1_Ethernet21
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.5/31
link tracking group Eth-conn-to-router upstream
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-OSPF-L3LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-OSPF-L3LEAF1A.cfg
index 0a1e6b26468..50587a6410a 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-OSPF-L3LEAF1A.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-OSPF-L3LEAF1A.cfg
@@ -56,6 +56,7 @@ interface Ethernet1
description P2P_LINK_TO_DC1-SPINE1_Ethernet18
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.7/31
ip ospf network point-to-point
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-OSPF-L3LEAF1B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-OSPF-L3LEAF1B.cfg
index 574804ef352..b8dd3fae0f9 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-OSPF-L3LEAF1B.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-OSPF-L3LEAF1B.cfg
@@ -56,6 +56,7 @@ interface Ethernet1
description P2P_LINK_TO_DC1-SPINE1_Ethernet220
no shutdown
mtu 1500
+ speed forced 40gfull
no switchport
ip address 10.10.101.9/31
ip ospf network point-to-point
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SPINE1.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SPINE1.yml
index b69b71eb267..9fb77b63f36 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SPINE1.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SPINE1.yml
@@ -94,6 +94,7 @@ ethernet_interfaces:
- name: Ethernet18
description: P2P_LINK_TO_MLAG-OSPF-L3LEAF1A_Ethernet1
shutdown: false
+ speed: forced 40gfull
mtu: 1500
ip_address: 10.10.101.6/31
peer: MLAG-OSPF-L3LEAF1A
@@ -104,6 +105,7 @@ ethernet_interfaces:
- name: Ethernet19
description: P2P_LINK_TO_MH-LEAF1A_Ethernet1
shutdown: false
+ speed: forced 40gfull
mtu: 1500
ip_address: 10.10.101.0/31
peer: MH-LEAF1A
@@ -114,6 +116,7 @@ ethernet_interfaces:
- name: Ethernet20
description: P2P_LINK_TO_MH-LEAF1B_Ethernet1
shutdown: false
+ speed: forced 40gfull
mtu: 1500
ip_address: 10.10.101.2/31
peer: MH-LEAF1B
@@ -124,6 +127,7 @@ ethernet_interfaces:
- name: Ethernet21
description: P2P_LINK_TO_MH-LEAF2A_Ethernet1
shutdown: false
+ speed: forced 40gfull
mtu: 1500
ip_address: 10.10.101.4/31
peer: MH-LEAF2A
@@ -222,6 +226,7 @@ ethernet_interfaces:
- name: Ethernet220
description: P2P_LINK_TO_MLAG-OSPF-L3LEAF1B_Ethernet1
shutdown: false
+ speed: forced 40gfull
mtu: 1500
ip_address: 10.10.101.8/31
peer: MLAG-OSPF-L3LEAF1B
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml
index 9c8ceb0865b..c76e2970803 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml
@@ -17,6 +17,7 @@ ethernet_interfaces:
- name: Ethernet1
description: P2P_LINK_TO_DC1-SPINE1_Ethernet19
shutdown: false
+ speed: forced 40gfull
mtu: 1500
link_tracking_groups:
- name: LT_GROUP1
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml
index b16e538e8aa..fc8cbb8f5b2 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml
@@ -17,6 +17,7 @@ ethernet_interfaces:
- name: Ethernet1
description: P2P_LINK_TO_DC1-SPINE1_Ethernet20
shutdown: false
+ speed: forced 40gfull
mtu: 1500
link_tracking_groups:
- name: LT_GROUP1
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml
index c0c7f5c1bec..b3fd95ea35a 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml
@@ -17,6 +17,7 @@ ethernet_interfaces:
- name: Ethernet1
description: P2P_LINK_TO_DC1-SPINE1_Ethernet21
shutdown: false
+ speed: forced 40gfull
mtu: 1500
link_tracking_groups:
- name: Eth-conn-to-router
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-OSPF-L3LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-OSPF-L3LEAF1A.yml
index 5fce15a97d1..6a350388b71 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-OSPF-L3LEAF1A.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-OSPF-L3LEAF1A.yml
@@ -35,6 +35,7 @@ ethernet_interfaces:
- name: Ethernet1
description: P2P_LINK_TO_DC1-SPINE1_Ethernet18
shutdown: false
+ speed: forced 40gfull
mtu: 1500
ip_address: 10.10.101.7/31
ospf_network_point_to_point: true
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-OSPF-L3LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-OSPF-L3LEAF1B.yml
index 6ebb118c212..60e4e497da5 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-OSPF-L3LEAF1B.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-OSPF-L3LEAF1B.yml
@@ -35,6 +35,7 @@ ethernet_interfaces:
- name: Ethernet1
description: P2P_LINK_TO_DC1-SPINE1_Ethernet220
shutdown: false
+ speed: forced 40gfull
mtu: 1500
ip_address: 10.10.101.9/31
ospf_network_point_to_point: true
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/AVD_LAB.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/AVD_LAB.yml
index e9eb158fa28..cf052ccd52a 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/AVD_LAB.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/AVD_LAB.yml
@@ -91,48 +91,56 @@ default_interfaces:
uplink_interfaces: [ Ethernet49-54/1 ]
mlag_interfaces: [ Ethernet55-56/1 ]
downlink_interfaces: [ Ethernet1-32/1 ]
+ uplink_interface_speed: forced 40gfull
- types: [ spine ]
platforms: [ "7[58]00R3", 7500R ]
uplink_interfaces: [ Ethernet1/31-34/1 ]
mlag_interfaces: [ Ethernet1/35-36/1 ]
downlink_interfaces: [ Ethernet1/1-30/1 ]
+ uplink_interface_speed: forced 40gfull
- types: [ spine, l3leaf ]
platforms: [ "7050[SC]X3" ]
uplink_interfaces: [ Ethernet49-52/1 ]
mlag_interfaces: [ Ethernet53-54/1 ]
downlink_interfaces: [ Ethernet1-30/1 ]
+ uplink_interface_speed: forced 40gfull
- types: [ l3leaf, spine ]
platforms: [ VEOS, vEOS, vEOS.*, VEOS.* ]
uplink_interfaces: [ Ethernet27-34 ]
mlag_interfaces: [ Ethernet35-36 ]
downlink_interfaces: [ Ethernet1-26 ]
+ uplink_interface_speed: forced 40gfull
- types: [ l3leaf ]
platforms: [ default ]
uplink_interfaces: [ Ethernet49-52/1 ]
mlag_interfaces: [ Ethernet53-54/1 ]
downlink_interfaces: [ Ethernet1-30/1 ]
+ uplink_interface_speed: forced 40gfull
- types: [ l3leaf ]
platforms: [ 7280R, 7280R2, my_custom_platform ]
uplink_interfaces: [ Ethernet49-56/1 ]
mlag_interfaces: [ Ethernet57-58/1 ]
downlink_interfaces: [ Ethernet1-30/1 ]
+ uplink_interface_speed: forced 40gfull
- types: [ l3leaf ]
platforms: [ 7368.* ]
uplink_interfaces: [ Ethernet1/9-14/1 ]
mlag_interfaces: [ Ethernet1/15-16/1 ]
downlink_interfaces: [ Ethernet1/1-8/1 ]
+ uplink_interface_speed: forced 40gfull
- types: [ l3leaf ]
platforms: [ 7300X3 ]
uplink_interfaces: [ Ethernet1/27-30/1 ]
mlag_interfaces: [ Ethernet1/31-32/1 ]
downlink_interfaces: [ Ethernet1/1-26/1 ]
+ uplink_interface_speed: forced 40gfull
# Custom platform with Management42 as the management interface
custom_platform_settings:
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-interfaces.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-interfaces.md
index 62598f288eb..4ae0f514b21 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-interfaces.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-interfaces.md
@@ -18,6 +18,7 @@
| [ - <str>](## "default_interfaces.[].mlag_interfaces.[]") | String | | | | Interface range or interface. |
| [ downlink_interfaces](## "default_interfaces.[].downlink_interfaces") | List, items: String | | | | List of downlink interfaces or downlink interface ranges. |
| [ - <str>](## "default_interfaces.[].downlink_interfaces.[]") | String | | | | Interface range or interface. |
+ | [ uplink_interface_speed](## "default_interfaces.[].uplink_interface_speed") | String | | | | Set point-to-Point uplink interface speed. |
=== "YAML"
@@ -53,4 +54,7 @@
# Interface range or interface.
-
+
+ # Set point-to-Point uplink interface speed.
+ uplink_interface_speed:
```
diff --git a/python-avd/pyavd/_eos_designs/schema/__init__.py b/python-avd/pyavd/_eos_designs/schema/__init__.py
index 81623b4460a..e466583a2e4 100644
--- a/python-avd/pyavd/_eos_designs/schema/__init__.py
+++ b/python-avd/pyavd/_eos_designs/schema/__init__.py
@@ -2674,6 +2674,7 @@ class DownlinkInterfaces(AvdList[str]):
"uplink_interfaces": {"type": UplinkInterfaces},
"mlag_interfaces": {"type": MlagInterfaces},
"downlink_interfaces": {"type": DownlinkInterfaces},
+ "uplink_interface_speed": {"type": str},
"_custom_data": {"type": dict},
}
types: Types
@@ -2709,6 +2710,8 @@ class DownlinkInterfaces(AvdList[str]):
Subclass of AvdList with `str` items.
"""
+ uplink_interface_speed: str | None
+ """Set point-to-Point uplink interface speed."""
_custom_data: dict[str, Any]
if TYPE_CHECKING:
@@ -2721,6 +2724,7 @@ def __init__(
uplink_interfaces: UplinkInterfaces | UndefinedType = Undefined,
mlag_interfaces: MlagInterfaces | UndefinedType = Undefined,
downlink_interfaces: DownlinkInterfaces | UndefinedType = Undefined,
+ uplink_interface_speed: str | None | UndefinedType = Undefined,
_custom_data: dict[str, Any] | UndefinedType = Undefined,
) -> None:
"""
@@ -2753,6 +2757,7 @@ def __init__(
List of downlink interfaces or downlink interface ranges.
Subclass of AvdList with `str` items.
+ uplink_interface_speed: Set point-to-Point uplink interface speed.
_custom_data: _custom_data
"""
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 f8692d06f4b..3fc301e3936 100644
--- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml
+++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml
@@ -988,6 +988,9 @@ keys:
items:
type: str
description: Interface range or interface.
+ uplink_interface_speed:
+ type: str
+ description: Set point-to-Point uplink interface speed.
default_mgmt_method:
documentation_options:
table: management-interface-settings
diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/default_interfaces.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/default_interfaces.schema.yml
index 7187468ca13..a37272fed6b 100644
--- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/default_interfaces.schema.yml
+++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/default_interfaces.schema.yml
@@ -48,3 +48,6 @@ keys:
items:
type: str
description: Interface range or interface.
+ uplink_interface_speed:
+ type: str
+ description: Set point-to-Point uplink interface speed.
diff --git a/python-avd/pyavd/_eos_designs/shared_utils/misc.py b/python-avd/pyavd/_eos_designs/shared_utils/misc.py
index 72cd1c4c09e..4fd0711a463 100644
--- a/python-avd/pyavd/_eos_designs/shared_utils/misc.py
+++ b/python-avd/pyavd/_eos_designs/shared_utils/misc.py
@@ -146,8 +146,7 @@ def fabric_name(self: SharedUtils) -> str:
@cached_property
def uplink_interface_speed(self: SharedUtils) -> str | None:
- # Keeping since we will need it when adding speed support under default interfaces.
- return self.node_config.uplink_interface_speed
+ return default(self.node_config.uplink_interface_speed, self.default_interfaces.uplink_interface_speed)
@cached_property
def uplink_switch_interface_speed(self: SharedUtils) -> str | None: