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 7f7ebf17547..a84aa96ee04 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 @@ -1020,6 +1020,7 @@ interface Dps1 | Interface | Group Name | Direction | | --------- | ---------- | --------- | | Ethernet1 | EVPN_MH_ES1 | upstream | +| Ethernet1 | EVPN_MH_ES3, EVPN_MH_ES4 | upstream | | Ethernet3 | EVPN_MH_ES2 | downstream | ##### Phone Interfaces @@ -1253,6 +1254,8 @@ interface Ethernet1 switchport backup initial-mac-move-delay 10 switchport backup dest-macaddr 01:00:00:00:00:00 link tracking group EVPN_MH_ES1 upstream + link tracking group EVPN_MH_ES3 upstream + link tracking group EVPN_MH_ES4 upstream comment Comment created from eos_cli under ethernet_interfaces.Ethernet1 EOF @@ -2190,6 +2193,7 @@ interface Ethernet81/10 | Interface | Group Name | Direction | | --------- | ---------- | --------- | | Port-Channel5 | EVPN_MH_ES1 | downstream | +| Port-Channel5 | EVPN_MH_ES3, EVPN_MH_ES4 | downstream | | Port-Channel15 | EVPN_MH_ES2 | upstream | ##### IPv4 @@ -2275,6 +2279,8 @@ interface Port-Channel5 storm-control multicast level 1 storm-control unknown-unicast level 1 link tracking group EVPN_MH_ES1 downstream + link tracking group EVPN_MH_ES3 downstream + link tracking group EVPN_MH_ES4 downstream comment Comment created from eos_cli under port_channel_interfaces.Port-Channel5 EOF 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 ae132c73904..dd9de2b5f5a 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 @@ -363,6 +363,8 @@ interface Port-Channel5 storm-control multicast level 1 storm-control unknown-unicast level 1 link tracking group EVPN_MH_ES1 downstream + link tracking group EVPN_MH_ES3 downstream + link tracking group EVPN_MH_ES4 downstream comment Comment created from eos_cli under port_channel_interfaces.Port-Channel5 EOF @@ -888,6 +890,8 @@ interface Ethernet1 switchport backup initial-mac-move-delay 10 switchport backup dest-macaddr 01:00:00:00:00:00 link tracking group EVPN_MH_ES1 upstream + link tracking group EVPN_MH_ES3 upstream + link tracking group EVPN_MH_ES4 upstream comment Comment created from eos_cli under ethernet_interfaces.Ethernet1 EOF 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 ab8cba8a2ab..c04de97da42 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 @@ -14,6 +14,9 @@ ethernet_interfaces: link_tracking_groups: - name: EVPN_MH_ES1 direction: upstream + link_tracking: + direction: upstream + groups: [EVPN_MH_ES3, EVPN_MH_ES4] priority_flow_control: enabled: true priorities: 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 801a7551aa6..928a4e8405a 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 @@ -6,6 +6,9 @@ port_channel_interfaces: link_tracking_groups: - name: EVPN_MH_ES1 direction: downstream + link_tracking: + direction: downstream + groups: [EVPN_MH_ES3, EVPN_MH_ES4] switchport: enabled: true mode: trunk 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 4a9211276a1..44d8d6c3243 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 @@ -47,6 +47,10 @@ | [    link_tracking_groups](## "ethernet_interfaces.[].link_tracking_groups") | List, items: Dictionary | | | | | | [      - name](## "ethernet_interfaces.[].link_tracking_groups.[].name") | String | Required, Unique | | | Group name. | | [        direction](## "ethernet_interfaces.[].link_tracking_groups.[].direction") | String | | | Valid Values:
- upstream
- downstream | | + | [    link_tracking](## "ethernet_interfaces.[].link_tracking") | Dictionary | | | | | + | [      direction](## "ethernet_interfaces.[].link_tracking.direction") | String | | | Valid Values:
- upstream
- downstream | | + | [      groups](## "ethernet_interfaces.[].link_tracking.groups") | List, items: String | | | | Link state group(s) an interface belongs to. | + | [        - <str>](## "ethernet_interfaces.[].link_tracking.groups.[]") | String | | | | Group names. | | [    evpn_ethernet_segment](## "ethernet_interfaces.[].evpn_ethernet_segment") | Dictionary | | | | | | [      identifier](## "ethernet_interfaces.[].evpn_ethernet_segment.identifier") | String | | | | EVPN Ethernet Segment Identifier (Type 1 format). | | [      redundancy](## "ethernet_interfaces.[].evpn_ethernet_segment.redundancy") | String | | | Valid Values:
- all-active
- single-active | | @@ -597,6 +601,14 @@ # Group name. - name: direction: + link_tracking: + direction: + + # Link state group(s) an interface belongs to. + groups: + + # Group names. + - evpn_ethernet_segment: # EVPN Ethernet Segment Identifier (Type 1 format). 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 181296ff82d..840726474c3 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 @@ -56,6 +56,10 @@ | [    link_tracking_groups](## "port_channel_interfaces.[].link_tracking_groups") | List, items: Dictionary | | | | | | [      - name](## "port_channel_interfaces.[].link_tracking_groups.[].name") | String | Required, Unique | | | Group name. | | [        direction](## "port_channel_interfaces.[].link_tracking_groups.[].direction") | String | | | Valid Values:
- upstream
- downstream | | + | [    link_tracking](## "port_channel_interfaces.[].link_tracking") | Dictionary | | | | | + | [      direction](## "port_channel_interfaces.[].link_tracking.direction") | String | | | Valid Values:
- upstream
- downstream | | + | [      groups](## "port_channel_interfaces.[].link_tracking.groups") | List, items: String | | | | Link state group(s) an interface belongs to. | + | [        - <str>](## "port_channel_interfaces.[].link_tracking.groups.[]") | String | | | | Group names. | | [    phone](## "port_channel_interfaces.[].phone") deprecated | Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use switchport.phone instead. | | [      trunk](## "port_channel_interfaces.[].phone.trunk") | String | | | Valid Values:
- tagged
- untagged | | | [      vlan](## "port_channel_interfaces.[].phone.vlan") | Integer | | | Min: 1
Max: 4094 | | @@ -469,6 +473,14 @@ # Group name. - name: direction: + link_tracking: + direction: + + # Link state group(s) an interface belongs to. + groups: + + # Group names. + - # This key is deprecated. # Support will be removed in AVD version 6.0.0. # Use switchport.phone instead. 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 35beb2db573..dbd0bd9b9c6 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 @@ -334,6 +334,9 @@ | {{ link_tracking_interface.name }} | {{ link_tracking_group.name }} | {{ link_tracking_group.direction }} | {% endif %} {% endfor %} +{% if link_tracking_interface.link_tracking.direction is arista.avd.defined and link_tracking_interface.link_tracking.groups is arista.avd.defined %} +| {{ link_tracking_interface.name }} | {{ link_tracking_interface.link_tracking.groups | join(', ') }} | {{ link_tracking_interface.link_tracking.direction }} | +{% endif %} {% endfor %} {% endif %} {# Phone Interfaces #} 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 0f4beb36ce1..a12627fd244 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 @@ -291,6 +291,9 @@ | {{ link_tracking_interface.name }} | {{ link_tracking_group.name }} | {{ link_tracking_group.direction }} | {% endif %} {% endfor %} +{% if link_tracking_interface.link_tracking.direction is arista.avd.defined and link_tracking_interface.link_tracking.groups is arista.avd.defined %} +| {{ link_tracking_interface.name }} | {{ link_tracking_interface.link_tracking.groups | join(', ') }} | {{ link_tracking_interface.link_tracking.direction }} | +{% endif %} {% endfor %} {% endif %} {# IPv4 #} 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 4da67bafade..a87e3d8d713 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 @@ -907,6 +907,11 @@ interface {{ ethernet_interface.name }} link tracking group {{ link_tracking_group.name }} {{ link_tracking_group.direction }} {% endif %} {% endfor %} +{% if ethernet_interface.link_tracking.direction is arista.avd.defined and ethernet_interface.link_tracking.groups is arista.avd.defined %} +{% for group_name in ethernet_interface.link_tracking.groups %} + link tracking group {{ group_name }} {{ ethernet_interface.link_tracking.direction }} +{% endfor %} +{% endif %} {% if ethernet_interface.vmtracer is arista.avd.defined(true) %} vmtracer vmware-esx {% endif %} 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 62ef64ce27c..10cedbd0636 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 @@ -726,6 +726,11 @@ interface {{ port_channel_interface.name }} link tracking group {{ link_tracking_group.name }} {{ link_tracking_group.direction }} {% endif %} {% endfor %} +{% if port_channel_interface.link_tracking.direction is arista.avd.defined and port_channel_interface.link_tracking.groups is arista.avd.defined %} +{% for group_name in port_channel_interface.link_tracking.groups %} + link tracking group {{ group_name }} {{ port_channel_interface.link_tracking.direction }} +{% endfor %} +{% endif %} {% if port_channel_interface.vmtracer is arista.avd.defined(true) %} vmtracer vmware-esx {% endif %} 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 c1fe38df9a6..27be11dd90c 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 @@ -2239,6 +2239,20 @@ keys: valid_values: - upstream - downstream + link_tracking: + type: dict + keys: + direction: + type: str + valid_values: + - upstream + - downstream + groups: + type: list + description: Link state group(s) an interface belongs to. + items: + type: str + description: Group names. evpn_ethernet_segment: type: dict keys: @@ -9494,6 +9508,20 @@ keys: valid_values: - upstream - downstream + link_tracking: + type: dict + keys: + direction: + type: str + valid_values: + - upstream + - downstream + groups: + type: list + description: Link state group(s) an interface belongs to. + items: + type: str + description: Group names. phone: type: dict deprecation: 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 f20d4a1dff9..00822220f92 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 @@ -195,6 +195,18 @@ keys: direction: type: str valid_values: ["upstream", "downstream"] + link_tracking: + type: dict + keys: + direction: + type: str + valid_values: ["upstream", "downstream"] + groups: + type: list + description: Link state group(s) an interface belongs to. + items: + type: str + description: Group names. evpn_ethernet_segment: type: dict keys: 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 b06d19b30ca..3fba4a682d8 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 @@ -321,6 +321,18 @@ keys: valid_values: - upstream - downstream + link_tracking: + type: dict + keys: + direction: + type: str + valid_values: ["upstream", "downstream"] + groups: + type: list + description: Link state group(s) an interface belongs to. + items: + type: str + description: Group names. phone: type: dict deprecation: