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: