diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host1.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host1.md index d84487ab92c..27bfcf620f4 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host1.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host1.md @@ -3796,9 +3796,9 @@ interface Dps1 #### Traffic Engineering -| Interface | Enabled | Administrative Groups | -| --------- | ------- | --------------------- | -| Ethernet81/3 | True | 3,15-29,testgrp | +| Interface | Administrative Groups | Metric | Max Reservable Bandwidth | Min-delay | SRLG | +| --------- | --------------------- | ------ | ------------------------ | --------- | ---- | +| Ethernet81/3 | 3,15-29,testgrp | 4 | 10 percent | 5 microseconds | TEST-SRLG | #### Ethernet Interfaces Device Configuration @@ -4789,14 +4789,22 @@ interface Ethernet81/3 no switchport ip address 100.64.127.0/31 traffic-engineering + traffic-engineering bandwidth 10 percent traffic-engineering administrative-group 3,15-29,testgrp + traffic-engineering srlg TEST-SRLG + traffic-engineering metric 4 + traffic-engineering min-delay static 5 microseconds ! interface Ethernet81/4 description Traffic Engineering Interface no shutdown no switchport ip address 100.64.127.0/31 + traffic-engineering bandwidth 100 mbps traffic-engineering administrative-group 4,7-100,testgrp + traffic-engineering srlg 16 + traffic-engineering metric 2 + traffic-engineering min-delay static 2 milliseconds ! interface Ethernet81/10 description isis_port_channel_member @@ -5031,9 +5039,9 @@ interface Ethernet84 #### Traffic Engineering -| Interface | Enabled | Administrative Groups | -| --------- | ------- | --------------------- | -| Port-Channel136 | True | 7 | +| Interface | Administrative Groups | Metric | Max Reservable Bandwidth | Min-delay | SRLG | +| --------- | --------------------- | ------ | ------------------------ | --------- | ---- | +| Port-Channel136 | 7 | - | - | - | - | #### Port-Channel Interfaces Device Configuration @@ -5649,7 +5657,11 @@ interface Port-Channel137 description Traffic Engineering Interface no switchport ip address 100.64.127.4/31 + traffic-engineering bandwidth 100 mbps traffic-engineering administrative-group 4,7-100,testgrp + traffic-engineering srlg 16 + traffic-engineering metric 2 + traffic-engineering min-delay static 2 milliseconds ``` ### Loopback Interfaces diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host1.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host1.cfg index e213b30b800..30ed1a899ed 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host1.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host1.cfg @@ -2234,7 +2234,11 @@ interface Port-Channel137 description Traffic Engineering Interface no switchport ip address 100.64.127.4/31 + traffic-engineering bandwidth 100 mbps traffic-engineering administrative-group 4,7-100,testgrp + traffic-engineering srlg 16 + traffic-engineering metric 2 + traffic-engineering min-delay static 2 milliseconds ! interface Dps1 description Test DPS Interface @@ -3231,14 +3235,22 @@ interface Ethernet81/3 no switchport ip address 100.64.127.0/31 traffic-engineering + traffic-engineering bandwidth 10 percent traffic-engineering administrative-group 3,15-29,testgrp + traffic-engineering srlg TEST-SRLG + traffic-engineering metric 4 + traffic-engineering min-delay static 5 microseconds ! interface Ethernet81/4 description Traffic Engineering Interface no shutdown no switchport ip address 100.64.127.0/31 + traffic-engineering bandwidth 100 mbps traffic-engineering administrative-group 4,7-100,testgrp + traffic-engineering srlg 16 + traffic-engineering metric 2 + traffic-engineering min-delay static 2 milliseconds ! interface Ethernet81/10 description isis_port_channel_member diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ethernet-interfaces.yml index ea22cb6f482..daec5ddda67 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ethernet-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ethernet-interfaces.yml @@ -1874,6 +1874,14 @@ ethernet_interfaces: - 3 - 15-29 - testgrp + srlg: TEST-SRLG + metric: 4 + bandwidth: + number: 10 + unit: percent + min_delay_static: + number: 5 + unit: microseconds - name: Ethernet81/4 description: Traffic Engineering Interface @@ -1887,6 +1895,14 @@ ethernet_interfaces: - 4 - 7-100 - testgrp + srlg: 16 + metric: 2 + bandwidth: + number: 100 + unit: mbps + min_delay_static: + number: 2 + unit: milliseconds - name: Ethernet82 description: Switchport_tap_tool diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/port-channel-interfaces.yml index c03f8e31ee2..18ec3400772 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/port-channel-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/port-channel-interfaces.yml @@ -1068,3 +1068,11 @@ port_channel_interfaces: - 4 - 7-100 - testgrp + srlg: 16 + metric: 2 + bandwidth: + number: 100 + unit: mbps + min_delay_static: + number: 2 + unit: milliseconds diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md index c6a53d3fad3..5503d7b3fb1 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md @@ -607,6 +607,14 @@ | [      enabled](## "ethernet_interfaces.[].traffic_engineering.enabled") | Boolean | | | | Whether to enable traffic-engineering on this interface. | | [      administrative_groups](## "ethernet_interfaces.[].traffic_engineering.administrative_groups") | List, items: String | | | | List of traffic-engineering administrative groups, valid values are names, ranges 0-127, or single integers 0-127. | | [        - <str>](## "ethernet_interfaces.[].traffic_engineering.administrative_groups.[]") | String | | | | | + | [      srlg](## "ethernet_interfaces.[].traffic_engineering.srlg") | String | | | | SRLG name or number | + | [      metric](## "ethernet_interfaces.[].traffic_engineering.metric") | Integer | | | Min: 1
Max: 16777215 | | + | [      bandwidth](## "ethernet_interfaces.[].traffic_engineering.bandwidth") | Dictionary | | | | Interface maximum reservable bandwidth | + | [        number](## "ethernet_interfaces.[].traffic_engineering.bandwidth.number") | Integer | | | Min: 0
Max: 10000 | | + | [        unit](## "ethernet_interfaces.[].traffic_engineering.bandwidth.unit") | String | | | Valid Values:
- gbps
- mbps
- percent | | + | [      min_delay_static](## "ethernet_interfaces.[].traffic_engineering.min_delay_static") | Dictionary | | | | | + | [        number](## "ethernet_interfaces.[].traffic_engineering.min_delay_static.number") | Integer | | | Min: 1
Max: 16777215 | | + | [        unit](## "ethernet_interfaces.[].traffic_engineering.min_delay_static.unit") | String | | | Valid Values:
- microseconds
- milliseconds | | | [    eos_cli](## "ethernet_interfaces.[].eos_cli") | String | | | | Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. | === "YAML" @@ -1946,6 +1954,18 @@ administrative_groups: - + # SRLG name or number + srlg: + metric: + + # Interface maximum reservable bandwidth + bandwidth: + number: + unit: + min_delay_static: + number: + unit: + # Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. eos_cli: ``` diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md index c594d5500d5..7ec9fa30f1d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md @@ -430,6 +430,14 @@ | [      enabled](## "port_channel_interfaces.[].traffic_engineering.enabled") | Boolean | | | | Whether to enable traffic-engineering on this interface. | | [      administrative_groups](## "port_channel_interfaces.[].traffic_engineering.administrative_groups") | List, items: String | | | | List of traffic-engineering administrative groups, valid values are names, ranges 0-127, or single integers 0-127. | | [        - <str>](## "port_channel_interfaces.[].traffic_engineering.administrative_groups.[]") | String | | | | | + | [      srlg](## "port_channel_interfaces.[].traffic_engineering.srlg") | String | | | | SRLG name or number | + | [      metric](## "port_channel_interfaces.[].traffic_engineering.metric") | Integer | | | Min: 1
Max: 16777215 | | + | [      bandwidth](## "port_channel_interfaces.[].traffic_engineering.bandwidth") | Dictionary | | | | Interface maximum reservable bandwidth | + | [        number](## "port_channel_interfaces.[].traffic_engineering.bandwidth.number") | Integer | | | Min: 0
Max: 10000 | | + | [        unit](## "port_channel_interfaces.[].traffic_engineering.bandwidth.unit") | String | | | Valid Values:
- gbps
- mbps
- percent | | + | [      min_delay_static](## "port_channel_interfaces.[].traffic_engineering.min_delay_static") | Dictionary | | | | | + | [        number](## "port_channel_interfaces.[].traffic_engineering.min_delay_static.number") | Integer | | | Min: 1
Max: 16777215 | | + | [        unit](## "port_channel_interfaces.[].traffic_engineering.min_delay_static.unit") | String | | | Valid Values:
- microseconds
- milliseconds | | | [    validate_state](## "port_channel_interfaces.[].validate_state") | Boolean | | | | Set to false to disable interface state and LLDP topology validation performed by the `eos_validate_state` role. | | [    validate_lldp](## "port_channel_interfaces.[].validate_lldp") | Boolean | | | | Set to false to disable the LLDP topology validation performed by the `eos_validate_state` role. | | [    eos_cli](## "port_channel_interfaces.[].eos_cli") | String | | | | Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration. | @@ -1420,6 +1428,18 @@ administrative_groups: - + # SRLG name or number + srlg: + metric: + + # Interface maximum reservable bandwidth + bandwidth: + number: + unit: + min_delay_static: + number: + unit: + # Set to false to disable interface state and LLDP topology validation performed by the `eos_validate_state` role. validate_state: diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/ethernet-interfaces.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/ethernet-interfaces.j2 index a71324ff420..af53fd3afef 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/ethernet-interfaces.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/ethernet-interfaces.j2 @@ -805,12 +805,23 @@ #### Traffic Engineering -| Interface | Enabled | Administrative Groups | -| --------- | ------- | --------------------- | +| Interface | Administrative Groups | Metric | Max Reservable Bandwidth | Min-delay | SRLG | +| --------- | --------------------- | ------ | ------------------------ | --------- | ---- | {% for te_interface in te_interfaces %} {% set admin_groups = te_interface.traffic_engineering.administrative_groups | arista.avd.default (["-"]) | join(",") %} -{% set te_enabled = te_interface.traffic_engineering.enabled | arista.avd.default ("-") %} -| {{ te_interface.name }} | {{ te_enabled }} | {{ admin_groups }} | +{% set te_srlg = te_interface.traffic_engineering.srlg | arista.avd.default("-") %} +{% set te_metric = te_interface.traffic_engineering.metric | arista.avd.default("-") %} +{% if te_interface.traffic_engineering.bandwidth is arista.avd.defined %} +{% set te_bandwidth = te_interface.traffic_engineering.bandwidth.number ~ " " ~ te_interface.traffic_engineering.bandwidth.unit %} +{% else %} +{% set te_bandwidth = "-" %} +{% endif %} +{% if te_interface.traffic_engineering.min_delay_static is arista.avd.defined %} +{% set te_min_del = te_interface.traffic_engineering.min_delay_static.number ~ " " ~ te_interface.traffic_engineering.min_delay_static.unit %} +{% else %} +{% set te_min_del = "-" %} +{% endif %} +| {{ te_interface.name }} | {{ admin_groups }} | {{ te_metric }} | {{ te_bandwidth }} | {{ te_min_del }} | {{ te_srlg }} | {% endfor %} {% endif %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/port-channel-interfaces.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/port-channel-interfaces.j2 index 643b317ed2b..e1f7654a905 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/port-channel-interfaces.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/port-channel-interfaces.j2 @@ -421,12 +421,23 @@ #### Traffic Engineering -| Interface | Enabled | Administrative Groups | -| --------- | ------- | --------------------- | +| Interface | Administrative Groups | Metric | Max Reservable Bandwidth | Min-delay | SRLG | +| --------- | --------------------- | ------ | ------------------------ | --------- | ---- | {% for po_te_interface in port_channel_te_interfaces %} -{% set admin_groups = po_te_interface.traffic_engineering.administrative_groups | arista.avd.default(["-"]) | join(",") %} -{% set te_enabled = po_te_interface.traffic_engineering.enabled | arista.avd.default("-") %} -| {{ po_te_interface.name }} | {{ te_enabled }} | {{ admin_groups }} | +{% set admin_groups = po_te_interface.traffic_engineering.administrative_groups | arista.avd.default (["-"]) | join(",") %} +{% set te_srlg = po_te_interface.traffic_engineering.srlg | arista.avd.default("-") %} +{% set te_metric = po_te_interface.traffic_engineering.metric | arista.avd.default("-") %} +{% if po_te_interface.traffic_engineering.bandwidth is arista.avd.defined %} +{% set te_bandwidth = po_te_interface.traffic_engineering.bandwidth.number ~ " " ~ po_te_interface.traffic_engineering.bandwidth.unit %} +{% else %} +{% set te_bandwidth = "-" %} +{% endif %} +{% if po_te_interface.traffic_engineering.min_delay_static is arista.avd.defined %} +{% set te_min_del = po_te_interface.traffic_engineering.min_delay_static.number ~ " " ~ po_te_interface.traffic_engineering.min_delay_static.unit %} +{% else %} +{% set te_min_del = "-" %} +{% endif %} +| {{ po_te_interface.name }} | {{ admin_groups }} | {{ te_metric }} | {{ te_bandwidth }} | {{ te_min_del }} | {{ te_srlg }} | {% endfor %} {% endif %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/ethernet-interfaces.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/ethernet-interfaces.j2 index 5dbad587b3a..136065a8c22 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/ethernet-interfaces.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/ethernet-interfaces.j2 @@ -1124,9 +1124,21 @@ interface {{ ethernet_interface.name }} {% if ethernet_interface.traffic_engineering.enabled is arista.avd.defined(true) %} traffic-engineering {% endif %} +{% if ethernet_interface.traffic_engineering.bandwidth is arista.avd.defined %} + traffic-engineering bandwidth {{ ethernet_interface.traffic_engineering.bandwidth.number }} {{ ethernet_interface.traffic_engineering.bandwidth.unit }} +{% endif %} {% if ethernet_interface.traffic_engineering.administrative_groups is arista.avd.defined %} traffic-engineering administrative-group {{ ethernet_interface.traffic_engineering.administrative_groups | join(",") }} {% endif %} +{% if ethernet_interface.traffic_engineering.srlg is arista.avd.defined %} + traffic-engineering srlg {{ ethernet_interface.traffic_engineering.srlg }} +{% endif %} +{% if ethernet_interface.traffic_engineering.metric is arista.avd.defined %} + traffic-engineering metric {{ ethernet_interface.traffic_engineering.metric }} +{% endif %} +{% if ethernet_interface.traffic_engineering.min_delay_static is arista.avd.defined %} + traffic-engineering min-delay static {{ ethernet_interface.traffic_engineering.min_delay_static.number }} {{ ethernet_interface.traffic_engineering.min_delay_static.unit }} +{% endif %} {% for link_tracking_group in ethernet_interface.link_tracking_groups | arista.avd.natural_sort %} {% if link_tracking_group.name is arista.avd.defined and link_tracking_group.direction is arista.avd.defined %} link tracking group {{ link_tracking_group.name }} {{ link_tracking_group.direction }} diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/port-channel-interfaces.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/port-channel-interfaces.j2 index 6c9d56275a9..92a538f7106 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/port-channel-interfaces.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/port-channel-interfaces.j2 @@ -926,9 +926,21 @@ interface {{ port_channel_interface.name }} {% if port_channel_interface.traffic_engineering.enabled is arista.avd.defined(true) %} traffic-engineering {% endif %} +{% if port_channel_interface.traffic_engineering.bandwidth is arista.avd.defined %} + traffic-engineering bandwidth {{ port_channel_interface.traffic_engineering.bandwidth.number }} {{ port_channel_interface.traffic_engineering.bandwidth.unit }} +{% endif %} {% if port_channel_interface.traffic_engineering.administrative_groups is arista.avd.defined %} traffic-engineering administrative-group {{ port_channel_interface.traffic_engineering.administrative_groups | join(",") }} {% endif %} +{% if port_channel_interface.traffic_engineering.srlg is arista.avd.defined %} + traffic-engineering srlg {{ port_channel_interface.traffic_engineering.srlg }} +{% endif %} +{% if port_channel_interface.traffic_engineering.metric is arista.avd.defined %} + traffic-engineering metric {{ port_channel_interface.traffic_engineering.metric }} +{% endif %} +{% if port_channel_interface.traffic_engineering.min_delay_static is arista.avd.defined %} + traffic-engineering min-delay static {{ port_channel_interface.traffic_engineering.min_delay_static.number }} {{ port_channel_interface.traffic_engineering.min_delay_static.unit }} +{% endif %} {% for link_tracking_group in port_channel_interface.link_tracking_groups | arista.avd.natural_sort('name') %} {% if link_tracking_group.name is arista.avd.defined and link_tracking_group.direction is arista.avd.defined %} link tracking group {{ link_tracking_group.name }} {{ link_tracking_group.direction }} diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py b/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py index 2e50cbc1579..3458410beb8 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py @@ -12271,7 +12271,75 @@ class AdministrativeGroups(AvdList[str]): AdministrativeGroups._item_type = str - _fields: ClassVar[dict] = {"enabled": {"type": bool}, "administrative_groups": {"type": AdministrativeGroups}, "_custom_data": {"type": dict}} + class Bandwidth(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"number": {"type": int}, "unit": {"type": str}, "_custom_data": {"type": dict}} + number: int | None + unit: Literal["gbps", "mbps", "percent"] | None + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + number: int | None | UndefinedType = Undefined, + unit: Literal["gbps", "mbps", "percent"] | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Bandwidth. + + + Subclass of AvdModel. + + Args: + number: number + unit: unit + _custom_data: _custom_data + + """ + + class MinDelayStatic(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"number": {"type": int}, "unit": {"type": str}, "_custom_data": {"type": dict}} + number: int | None + unit: Literal["microseconds", "milliseconds"] | None + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + number: int | None | UndefinedType = Undefined, + unit: Literal["microseconds", "milliseconds"] | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + MinDelayStatic. + + + Subclass of AvdModel. + + Args: + number: number + unit: unit + _custom_data: _custom_data + + """ + + _fields: ClassVar[dict] = { + "enabled": {"type": bool}, + "administrative_groups": {"type": AdministrativeGroups}, + "srlg": {"type": str}, + "metric": {"type": int}, + "bandwidth": {"type": Bandwidth}, + "min_delay_static": {"type": MinDelayStatic}, + "_custom_data": {"type": dict}, + } enabled: bool | None """Whether to enable traffic-engineering on this interface.""" administrative_groups: AdministrativeGroups @@ -12281,6 +12349,17 @@ class AdministrativeGroups(AvdList[str]): Subclass of AvdList with `str` items. """ + srlg: str | None + """SRLG name or number""" + metric: int | None + bandwidth: Bandwidth + """ + Interface maximum reservable bandwidth + + Subclass of AvdModel. + """ + min_delay_static: MinDelayStatic + """Subclass of AvdModel.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -12290,6 +12369,10 @@ def __init__( *, enabled: bool | None | UndefinedType = Undefined, administrative_groups: AdministrativeGroups | UndefinedType = Undefined, + srlg: str | None | UndefinedType = Undefined, + metric: int | None | UndefinedType = Undefined, + bandwidth: Bandwidth | UndefinedType = Undefined, + min_delay_static: MinDelayStatic | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ @@ -12305,6 +12388,13 @@ def __init__( integers 0-127. Subclass of AvdList with `str` items. + srlg: SRLG name or number + metric: metric + bandwidth: + Interface maximum reservable bandwidth + + Subclass of AvdModel. + min_delay_static: Subclass of AvdModel. _custom_data: _custom_data """ @@ -32775,7 +32865,75 @@ class AdministrativeGroups(AvdList[str]): AdministrativeGroups._item_type = str - _fields: ClassVar[dict] = {"enabled": {"type": bool}, "administrative_groups": {"type": AdministrativeGroups}, "_custom_data": {"type": dict}} + class Bandwidth(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"number": {"type": int}, "unit": {"type": str}, "_custom_data": {"type": dict}} + number: int | None + unit: Literal["gbps", "mbps", "percent"] | None + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + number: int | None | UndefinedType = Undefined, + unit: Literal["gbps", "mbps", "percent"] | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Bandwidth. + + + Subclass of AvdModel. + + Args: + number: number + unit: unit + _custom_data: _custom_data + + """ + + class MinDelayStatic(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"number": {"type": int}, "unit": {"type": str}, "_custom_data": {"type": dict}} + number: int | None + unit: Literal["microseconds", "milliseconds"] | None + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + number: int | None | UndefinedType = Undefined, + unit: Literal["microseconds", "milliseconds"] | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + MinDelayStatic. + + + Subclass of AvdModel. + + Args: + number: number + unit: unit + _custom_data: _custom_data + + """ + + _fields: ClassVar[dict] = { + "enabled": {"type": bool}, + "administrative_groups": {"type": AdministrativeGroups}, + "srlg": {"type": str}, + "metric": {"type": int}, + "bandwidth": {"type": Bandwidth}, + "min_delay_static": {"type": MinDelayStatic}, + "_custom_data": {"type": dict}, + } enabled: bool | None """Whether to enable traffic-engineering on this interface.""" administrative_groups: AdministrativeGroups @@ -32785,6 +32943,17 @@ class AdministrativeGroups(AvdList[str]): Subclass of AvdList with `str` items. """ + srlg: str | None + """SRLG name or number""" + metric: int | None + bandwidth: Bandwidth + """ + Interface maximum reservable bandwidth + + Subclass of AvdModel. + """ + min_delay_static: MinDelayStatic + """Subclass of AvdModel.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -32794,6 +32963,10 @@ def __init__( *, enabled: bool | None | UndefinedType = Undefined, administrative_groups: AdministrativeGroups | UndefinedType = Undefined, + srlg: str | None | UndefinedType = Undefined, + metric: int | None | UndefinedType = Undefined, + bandwidth: Bandwidth | UndefinedType = Undefined, + min_delay_static: MinDelayStatic | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ @@ -32809,6 +32982,13 @@ def __init__( integers 0-127. Subclass of AvdList with `str` items. + srlg: SRLG name or number + metric: metric + bandwidth: + Interface maximum reservable bandwidth + + Subclass of AvdModel. + min_delay_static: Subclass of AvdModel. _custom_data: _custom_data """ diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml index d3e7c577fcc..d8c617b7e31 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml @@ -4430,6 +4430,47 @@ keys: type: str convert_types: - int + srlg: + description: SRLG name or number + type: str + convert_types: + - int + metric: + type: int + convert_types: + - str + min: 1 + max: 16777215 + bandwidth: + type: dict + description: Interface maximum reservable bandwidth + keys: + number: + type: int + convert_types: + - str + min: 0 + max: 10000 + unit: + type: str + valid_values: + - gbps + - mbps + - percent + min_delay_static: + type: dict + keys: + number: + type: int + convert_types: + - str + min: 1 + max: 16777215 + unit: + type: str + valid_values: + - microseconds + - milliseconds eos_cli: type: str description: Multiline EOS CLI rendered directly on the ethernet interface @@ -11264,6 +11305,47 @@ keys: type: str convert_types: - int + srlg: + description: SRLG name or number + type: str + convert_types: + - int + metric: + type: int + convert_types: + - str + min: 1 + max: 16777215 + bandwidth: + type: dict + description: Interface maximum reservable bandwidth + keys: + number: + type: int + convert_types: + - str + min: 0 + max: 10000 + unit: + type: str + valid_values: + - gbps + - mbps + - percent + min_delay_static: + type: dict + keys: + number: + type: int + convert_types: + - str + min: 1 + max: 16777215 + unit: + type: str + valid_values: + - microseconds + - milliseconds validate_state: type: bool description: Set to false to disable interface state and LLDP topology validation diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/ethernet_interfaces.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/ethernet_interfaces.schema.yml index 6eda1e0b8b5..73af26db39e 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/ethernet_interfaces.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/ethernet_interfaces.schema.yml @@ -2216,6 +2216,47 @@ keys: type: str convert_types: - int + srlg: + description: SRLG name or number + type: str + convert_types: + - int + metric: + type: int + convert_types: + - str + min: 1 + max: 16777215 + bandwidth: + type: dict + description: Interface maximum reservable bandwidth + keys: + number: + type: int + convert_types: + - str + min: 0 + max: 10000 + unit: + type: str + valid_values: + - gbps + - mbps + - percent + min_delay_static: + type: dict + keys: + number: + type: int + convert_types: + - str + min: 1 + max: 16777215 + unit: + type: str + valid_values: + - microseconds + - milliseconds eos_cli: type: str description: Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/port_channel_interfaces.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/port_channel_interfaces.schema.yml index b1d8ea708fa..889f851048b 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/port_channel_interfaces.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/port_channel_interfaces.schema.yml @@ -1398,6 +1398,47 @@ keys: type: str convert_types: - int + srlg: + description: SRLG name or number + type: str + convert_types: + - int + metric: + type: int + convert_types: + - str + min: 1 + max: 16777215 + bandwidth: + type: dict + description: Interface maximum reservable bandwidth + keys: + number: + type: int + convert_types: + - str + min: 0 + max: 10000 + unit: + type: str + valid_values: + - gbps + - mbps + - percent + min_delay_static: + type: dict + keys: + number: + type: int + convert_types: + - str + min: 1 + max: 16777215 + unit: + type: str + valid_values: + - microseconds + - milliseconds validate_state: type: bool description: Set to false to disable interface state and LLDP topology validation performed by the `eos_validate_state` role.