From 7f0beef980145e70acce9a784b3d876087ae668c Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Tue, 2 Jul 2024 16:06:08 +0530 Subject: [PATCH 01/32] Feat(eos_cli_config_gen): Add switchport 'tap' and 'tool' mode config to data-model --- .../devices/ethernet-interfaces.md | 21 + .../devices/port-channel-interfaces.md | 19 + .../intended/configs/ethernet-interfaces.cfg | 21 + .../configs/port-channel-interfaces.cfg | 19 + .../host_vars/ethernet-interfaces.yml | 49 + .../host_vars/port-channel-interfaces.yml | 49 + .../docs/tables/ethernet-interfaces.md | 137 ++ .../docs/tables/port-channel-interfaces.md | 139 ++ .../j2templates/eos/ethernet-interfaces.j2 | 92 + .../eos/port-channel-interfaces.j2 | 92 + .../schema/eos_cli_config_gen.jsonschema.json | 608 +++++ .../schema/eos_cli_config_gen.schema.yml | 337 +++ .../ethernet_interfaces.schema.yml | 166 ++ .../port_channel_interfaces.schema.yml | 169 ++ .../schema/eos_designs.jsonschema.json | 2123 +++++++++++++++++ 15 files changed, 4041 insertions(+) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md index 2318b1562c7..cdf7c9806b8 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md @@ -362,6 +362,27 @@ interface Ethernet1 l2 mru 8000 bgp session tracker ST1 no switchport + switchport tap native vlan 10 + switchport tap identity 3 inner 5 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap encapsulation vxlan strip + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 feature header length 10 strip + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity dot1q source dzgre port + switchport tap truncation 150 + switchport tool truncation + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dzgre preserve ip address 172.31.255.1/31 ip verify unicast source reachable-via rx bfd interval 500 min-rx 500 multiplier 5 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md index 40d4b4778c0..1a15ebc497a 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md @@ -511,6 +511,25 @@ interface Port-Channel99 interface Port-Channel100 logging event link-status no switchport + switchport tap native vlan 10 + switchport tap identity 3 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 protocol 0x0000 strip + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity qinq source dzgre port inner policy + switchport tap truncation + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dzgre preserve ! interface Port-Channel100.101 description IFL for TENANT01 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg index 7be8c428e5a..15c5bf0c6dd 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg @@ -15,6 +15,27 @@ interface Ethernet1 l2 mru 8000 bgp session tracker ST1 no switchport + switchport tap native vlan 10 + switchport tap identity 3 inner 5 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap encapsulation vxlan strip + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 feature header length 10 strip + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity dot1q source dzgre port + switchport tap truncation 150 + switchport tool truncation + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dzgre preserve ip address 172.31.255.1/31 ip verify unicast source reachable-via rx bfd interval 500 min-rx 500 multiplier 5 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg index 2dcb815b60d..a3d70457503 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg @@ -165,6 +165,25 @@ interface Port-Channel99 interface Port-Channel100 logging event link-status no switchport + switchport tap native vlan 10 + switchport tap identity 3 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 protocol 0x0000 strip + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity qinq source dzgre port inner policy + switchport tap truncation + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dzgre preserve ! interface Port-Channel100.101 description IFL for TENANT01 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml index f7b6a7174b1..6c6fba2817b 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml @@ -36,6 +36,55 @@ ethernet_interfaces: switchport: port_security: enabled: true + tap: + allowed_vlan: 25 + default: + groups: + - g2 + - g1 + - g3 + nexthop_groups: + - nexthop_g1 + - nexthop_g3 + - nexthop_g2 + interfaces: + - port-channel10 + - ethernet4 + identity: + port_id: 3 + inner_port_id: 5 + mpls_pop_all: true + native_vlan: 10 + truncation: + enabled: true + size: 150 + mac_address: + dest: 01:00:00:00:00:00 + src: 01:23:45:67:89:ab + encapsulation: + vxlan_strip: true + gre_strip: true + gre: + destination: 1.1.1.1 + source: 1.1.1.2 + protocol: "0x0000" + feature_header_length: 10 + tool: + mpls_pop_all: true + encapsulation: + dot1br_strip: true + vn_tag_strip: true + allowed_vlan: 23 + identity: + tag: qinq + dot1q_dzgre_source: port + truncation: + enabled: true + groups: + - group1 + - group2 + - group3 + dzgre_preserve: true eos_cli: | comment Comment created from eos_cli under ethernet_interfaces.Ethernet1 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml index 2ea480d1b47..04a3cab0a2c 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml @@ -113,6 +113,53 @@ port_channel_interfaces: logging: event: link_status: true + switchport: + tap: + allowed_vlan: 25 + default: + groups: + - g2 + - g1 + - g3 + nexthop_groups: + - nexthop_g1 + - nexthop_g3 + - nexthop_g2 + interfaces: + - port-channel10 + - ethernet4 + identity: + port_id: 3 + mpls_pop_all: true + native_vlan: 10 + truncation: + enabled: true + mac_address: + dest: 01:00:00:00:00:00 + src: 01:23:45:67:89:ab + encapsulation: + gre_strip: true + gre: + destination: 1.1.1.1 + protocol: "0x0000" + tool: + mpls_pop_all: true + encapsulation: + dot1br_strip: true + vn_tag_strip: true + allowed_vlan: 23 + identity: + tag: qinq + qinq_dzgre_source: port inner policy + truncation: + enabled: true + size: 160 + groups: + - group1 + - group2 + - group3 + dzgre_preserve: true + - name: Port-Channel100.101 type: l3dot1q logging: @@ -122,6 +169,7 @@ port_channel_interfaces: mtu: 1500 ip_address: 10.1.1.3/31 encapsulation_dot1q_vlan: 101 + - name: Port-Channel100.102 type: l3dot1q logging: @@ -138,6 +186,7 @@ port_channel_interfaces: - name: Port-Channel8 description: to Dev02 Port-channel 8 type: routed + - name: Port-Channel8.101 description: to Dev02 Port-Channel8.101 - VRF-C1 type: l3dot1q 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 7ab88329a20..1f927d8fd3e 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 @@ -407,6 +407,50 @@ | [        vlans](## "ethernet_interfaces.[].switchport.port_security.vlans") | List, items: Dictionary | | | | | | [          - range](## "ethernet_interfaces.[].switchport.port_security.vlans.[].range") | String | Required, Unique | | | VLAN ID or range(s) of VLAN IDs, <1-4094>.
Example:
- 3
- 1,3
- 1-10
| | [            mac_address_maximum](## "ethernet_interfaces.[].switchport.port_security.vlans.[].mac_address_maximum") | Integer | | | | | + | [      tap](## "ethernet_interfaces.[].switchport.tap") | Dictionary | | | | | + | [        allowed_vlan](## "ethernet_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | + | [        default](## "ethernet_interfaces.[].switchport.tap.default") | Dictionary | | | | | + | [          groups](## "ethernet_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | + | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.groups.[]") | String | | | | | + | [          interfaces](## "ethernet_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. | + | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.interfaces.[]") | String | | | | | + | [          nexthop_groups](## "ethernet_interfaces.[].switchport.tap.default.nexthop_groups") | List, items: String | | | | Default nexthop-group names. | + | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.nexthop_groups.[]") | String | | | | | + | [        identity](## "ethernet_interfaces.[].switchport.tap.identity") | Dictionary | | | | | + | [          port_id](## "ethernet_interfaces.[].switchport.tap.identity.port_id") | Integer | | | Min: 1
Max: 4094 | Tap port ID tag. | + | [          inner_port_id](## "ethernet_interfaces.[].switchport.tap.identity.inner_port_id") | Integer | | | Min: 1
Max: 4094 | Inner tap port ID tag. | + | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tap.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | + | [        native_vlan](## "ethernet_interfaces.[].switchport.tap.native_vlan") | Integer | | | Min: 1
Max: 4094 | Native VLAN ID when interface is in tap mode. | + | [        truncation](## "ethernet_interfaces.[].switchport.tap.truncation") | Dictionary | | | | | + | [          enabled](## "ethernet_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | + | [          size](## "ethernet_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | + | [        mac_address](## "ethernet_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | + | [          src](## "ethernet_interfaces.[].switchport.tap.mac_address.src") | String | | | | MAC address for the source. | + | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | | MAC address for the destination. | + | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | + | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header. | + | [          gre_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre_strip") | Boolean | Required | | | Strip GRE encapsulation header. | + | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | + | [            destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destination") | String | | | | Destination IP address of tunnel packets. | + | [            source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.source") | String | | | | Source IP address of tunnel packets. | + | [            protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | + | [            feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | + | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | | + | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | + | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | + | [          dot1br_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. | + | [          vn_tag_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.vn_tag_strip") | Boolean | | | | Remove a VN-tag in packet header. | + | [        allowed_vlan](## "ethernet_interfaces.[].switchport.tool.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | + | [        identity](## "ethernet_interfaces.[].switchport.tool.identity") | Dictionary | | | | | + | [          tag](## "ethernet_interfaces.[].switchport.tool.identity.tag") | String | | | Valid Values:
- dot1q
- qinq | | + | [          dot1q_dzgre_source](## "ethernet_interfaces.[].switchport.tool.identity.dot1q_dzgre_source") | String | | | Valid Values:
- policy
- port | | + | [          qinq_dzgre_source](## "ethernet_interfaces.[].switchport.tool.identity.qinq_dzgre_source") | String | | | Valid Values:
- policy inner port
- port inner policy | | + | [        truncation](## "ethernet_interfaces.[].switchport.tool.truncation") | Dictionary | | | | | + | [          enabled](## "ethernet_interfaces.[].switchport.tool.truncation.enabled") | Boolean | Required | | | | + | [          size](## "ethernet_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | + | [        groups](## "ethernet_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | + | [          - <str>](## "ethernet_interfaces.[].switchport.tool.groups.[]") | String | | | | | + | [        dzgre_preserve](## "ethernet_interfaces.[].switchport.tool.dzgre_preserve") | Boolean | | | | Preserve the DzGRE header. | | [    eos_cli](## "ethernet_interfaces.[].eos_cli") | String | | | | Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. | === "YAML" @@ -1156,6 +1200,99 @@ # - 1-10 - range: mac_address_maximum: + tap: + + # VLAN ID or range of VLAN IDs within range 1-4094. + allowed_vlan: + default: + + # Tap group names for the interface. + groups: + - + + # Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + interfaces: + - + + # Default nexthop-group names. + nexthop_groups: + - + identity: + + # Tap port ID tag. + port_id: + + # Inner tap port ID tag. + inner_port_id: + + # Pop all MPLS labels. + mpls_pop_all: + + # Native VLAN ID when interface is in tap mode. + native_vlan: + truncation: + enabled: + + # Ingress packet truncation size in bytes. + size: + mac_address: + + # MAC address for the source. + src: + + # MAC address for the destination. + dest: + encapsulation: + + # Strip VXLAN encapsulation header. + vxlan_strip: + + # Strip GRE encapsulation header. + gre_strip: + gre: + + # Destination IP address of tunnel packets. + destination: + + # Source IP address of tunnel packets. + source: + + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF + protocol: + + # Feature header length in bytes. + feature_header_length: + tool: + + # Pop all MPLS labels. + mpls_pop_all: + encapsulation: + + # Remove a 802.1 BR tag in packet header. + dot1br_strip: + + # Remove a VN-tag in packet header. + vn_tag_strip: + + # VLAN ID or range of VLAN IDs within range 1-4094. + allowed_vlan: + identity: + tag: + dot1q_dzgre_source: + qinq_dzgre_source: + truncation: + enabled: + + # Egress packet truncation size in bytes. + size: + + # Tool groups for the interface. + groups: + - + + # Preserve the DzGRE header. + dzgre_preserve: # 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 cf5c246483b..f10054a2e80 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 @@ -245,6 +245,51 @@ | [      egress](## "port_channel_interfaces.[].sflow.egress") | Dictionary | | | | | | [        enable](## "port_channel_interfaces.[].sflow.egress.enable") | Boolean | | | | | | [        unmodified_enable](## "port_channel_interfaces.[].sflow.egress.unmodified_enable") | Boolean | | | | | + | [    switchport](## "port_channel_interfaces.[].switchport") | Dictionary | | | | | + | [      tap](## "port_channel_interfaces.[].switchport.tap") | Dictionary | | | | | + | [        allowed_vlan](## "port_channel_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | + | [        default](## "port_channel_interfaces.[].switchport.tap.default") | Dictionary | | | | | + | [          groups](## "port_channel_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | + | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.groups.[]") | String | | | | | + | [          interfaces](## "port_channel_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. | + | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.interfaces.[]") | String | | | | | + | [          nexthop_groups](## "port_channel_interfaces.[].switchport.tap.default.nexthop_groups") | List, items: String | | | | Default nexthop-group names. | + | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.nexthop_groups.[]") | String | | | | | + | [        identity](## "port_channel_interfaces.[].switchport.tap.identity") | Dictionary | | | | | + | [          port_id](## "port_channel_interfaces.[].switchport.tap.identity.port_id") | Integer | | | Min: 1
Max: 4094 | Tap port ID tag. | + | [          inner_port_id](## "port_channel_interfaces.[].switchport.tap.identity.inner_port_id") | Integer | | | Min: 1
Max: 4094 | Inner tap port ID tag. | + | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tap.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | + | [        native_vlan](## "port_channel_interfaces.[].switchport.tap.native_vlan") | Integer | | | Min: 1
Max: 4094 | Native VLAN ID when interface is in tap mode. | + | [        truncation](## "port_channel_interfaces.[].switchport.tap.truncation") | Dictionary | | | | | + | [          enabled](## "port_channel_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | + | [          size](## "port_channel_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | + | [        mac_address](## "port_channel_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | + | [          src](## "port_channel_interfaces.[].switchport.tap.mac_address.src") | String | | | | MAC address for the source. | + | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | | MAC address for the destination. | + | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | + | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header. | + | [          gre_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre_strip") | Boolean | Required | | | Strip GRE encapsulation header. | + | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | + | [            destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destination") | String | | | | Destination IP address of tunnel packets. | + | [            source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.source") | String | | | | Source IP address of tunnel packets. | + | [            protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | + | [            feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | + | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | | + | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | + | [        encapsulation](## "port_channel_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | + | [          dot1br_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. | + | [          vn_tag_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.vn_tag_strip") | Boolean | | | | Remove a VN-tag in packet header. | + | [        allowed_vlan](## "port_channel_interfaces.[].switchport.tool.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | + | [        identity](## "port_channel_interfaces.[].switchport.tool.identity") | Dictionary | | | | | + | [          tag](## "port_channel_interfaces.[].switchport.tool.identity.tag") | String | | | Valid Values:
- dot1q
- qinq | | + | [          dot1q_dzgre_source](## "port_channel_interfaces.[].switchport.tool.identity.dot1q_dzgre_source") | String | | | Valid Values:
- policy
- port | | + | [          qinq_dzgre_source](## "port_channel_interfaces.[].switchport.tool.identity.qinq_dzgre_source") | String | | | Valid Values:
- policy inner port
- port inner policy | | + | [        truncation](## "port_channel_interfaces.[].switchport.tool.truncation") | Dictionary | | | | | + | [          enabled](## "port_channel_interfaces.[].switchport.tool.truncation.enabled") | Boolean | Required | | | | + | [          size](## "port_channel_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | + | [        groups](## "port_channel_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | + | [          - <str>](## "port_channel_interfaces.[].switchport.tool.groups.[]") | String | | | | | + | [        dzgre_preserve](## "port_channel_interfaces.[].switchport.tool.dzgre_preserve") | Boolean | | | | Preserve the DzGRE header. | | [    validate_state](## "port_channel_interfaces.[].validate_state") | Boolean | | | | Set to false to disable interface validation 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. | @@ -708,6 +753,100 @@ egress: enable: unmodified_enable: + switchport: + tap: + + # VLAN ID or range of VLAN IDs within range 1-4094. + allowed_vlan: + default: + + # Tap group names for the interface. + groups: + - + + # Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + interfaces: + - + + # Default nexthop-group names. + nexthop_groups: + - + identity: + + # Tap port ID tag. + port_id: + + # Inner tap port ID tag. + inner_port_id: + + # Pop all MPLS labels. + mpls_pop_all: + + # Native VLAN ID when interface is in tap mode. + native_vlan: + truncation: + enabled: + + # Ingress packet truncation size in bytes. + size: + mac_address: + + # MAC address for the source. + src: + + # MAC address for the destination. + dest: + encapsulation: + + # Strip VXLAN encapsulation header. + vxlan_strip: + + # Strip GRE encapsulation header. + gre_strip: + gre: + + # Destination IP address of tunnel packets. + destination: + + # Source IP address of tunnel packets. + source: + + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF + protocol: + + # Feature header length in bytes. + feature_header_length: + tool: + + # Pop all MPLS labels. + mpls_pop_all: + encapsulation: + + # Remove a 802.1 BR tag in packet header. + dot1br_strip: + + # Remove a VN-tag in packet header. + vn_tag_strip: + + # VLAN ID or range of VLAN IDs within range 1-4094. + allowed_vlan: + identity: + tag: + dot1q_dzgre_source: + qinq_dzgre_source: + truncation: + enabled: + + # Egress packet truncation size in bytes. + size: + + # Tool groups for the interface. + groups: + - + + # Preserve the DzGRE header. + dzgre_preserve: # Set to false to disable interface validation by the `eos_validate_state` role. validate_state: 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 2d563d36c6a..8c021117a96 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 @@ -160,6 +160,98 @@ interface {{ ethernet_interface.name }} {% if ethernet_interface.pvlan_mapping is arista.avd.defined %} switchport pvlan mapping {{ ethernet_interface.pvlan_mapping }} {% endif %} +{% if ethernet_interface.switchport.tap.native_vlan is arista.avd.defined %} + switchport tap native vlan {{ ethernet_interface.switchport.tap.native_vlan }} +{% endif %} +{% if ethernet_interface.switchport.tap.identity.port_id is arista.avd.defined %} +{% set tap_identity_cli = "switchport tap identity " ~ ethernet_interface.switchport.tap.identity.port_id %} +{% if ethernet_interface.switchport.tap.identity.inner_port_id is arista.avd.defined %} +{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ ethernet_interface.switchport.tap.identity.inner_port_id %} +{% endif %} + {{ tap_identity_cli }} +{% endif %} +{% if ethernet_interface.switchport.tap.mac_address.dest is arista.avd.defined %} +{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ ethernet_interface.switchport.tap.mac_address.dest %} +{% if ethernet_interface.switchport.tap.mac_address.src is arista.avd.defined %} +{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ ethernet_interface.switchport.tap.mac_address.src %} +{% endif %} + {{ tap_mac_address_cli }} +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} + switchport tap encapsulation vxlan strip +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre_strip is arista.avd.defined(true) %} + switchport tap encapsulation gre strip +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined or + ethernet_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ ethernet_interface.switchport.tap.encapsulation.gre.destination %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ ethernet_interface.switchport.tap.encapsulation.gre.source %} +{% endif %} +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ ethernet_interface.switchport.tap.encapsulation.gre.protocol %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ ethernet_interface.switchport.tap.encapsulation.gre.feature_header_length %} +{% endif %} +{% endif %} + {{ tap_encapsulation_cli }} strip +{% endif %} +{% if ethernet_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} + switchport tool mpls pop all +{% endif %} +{% if ethernet_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} + switchport tool encapsulation vn-tag strip +{% endif %} +{% if ethernet_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} + switchport tool encapsulation dot1br strip +{% endif %} +{% if ethernet_interface.switchport.tap.allowed_vlan is arista.avd.defined %} + switchport tap allowed vlan {{ ethernet_interface.switchport.tap.allowed_vlan }} +{% endif %} +{% if ethernet_interface.switchport.tool.allowed_vlan is arista.avd.defined %} + switchport tool allowed vlan {{ ethernet_interface.switchport.tool.allowed_vlan }} +{% endif %} +{% if ethernet_interface.switchport.tool.identity.tag is arista.avd.defined %} + switchport tool identity {{ ethernet_interface.switchport.tool.identity.tag }} +{% endif %} +{% if ethernet_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} + switchport tool identity dot1q source dzgre {{ ethernet_interface.switchport.tool.identity.dot1q_dzgre_source }} +{% elif ethernet_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} + switchport tool identity qinq source dzgre {{ ethernet_interface.switchport.tool.identity.qinq_dzgre_source }} +{% endif %} +{% if ethernet_interface.switchport.tap.truncation.enabled is arista.avd.defined %} +{% set tap_truncation_cli = "switchport tap truncation" %} +{% if ethernet_interface.switchport.tap.truncation.size is arista.avd.defined %} +{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ ethernet_interface.switchport.tap.truncation.size %} +{% endif %} + {{ tap_truncation_cli }} +{% endif %} +{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined %} +{% set tool_truncation_cli = "switchport tool truncation" %} +{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} +{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} +{% endif %} + {{ tool_truncation_cli }} +{% endif %} +{% if ethernet_interface.switchport.tap.default.groups is arista.avd.defined %} + switchport tap default group {{ ethernet_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} +{% endif %} +{% if ethernet_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} + switchport tap default nexthop-group {{ ethernet_interface.switchport.tap.default.nexthop_groups | arista.avd.natural_sort | join(" ") }} +{% endif %} +{% for interface in ethernet_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} + switchport tap default interface {{ interface }} +{% endfor %} +{% if ethernet_interface.switchport.tool.groups is arista.avd.defined %} +{% set tool_groups = ethernet_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} + switchport tool group set {{ tool_groups }} +{% endif %} +{% if ethernet_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} + switchport tool dzgre preserve +{% endif %} {% if ethernet_interface.l2_protocol.encapsulation_dot1q_vlan is arista.avd.defined %} l2-protocol encapsulation dot1q vlan {{ ethernet_interface.l2_protocol.encapsulation_dot1q_vlan }} {% 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 3c506c9764a..ea125f86094 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 @@ -108,6 +108,98 @@ interface {{ port_channel_interface.name }} {{ vlan_translation_cli }} {% endif %} {% endfor %} +{% if port_channel_interface.switchport.tap.native_vlan is arista.avd.defined %} + switchport tap native vlan {{ port_channel_interface.switchport.tap.native_vlan }} +{% endif %} +{% if port_channel_interface.switchport.tap.identity.port_id is arista.avd.defined %} +{% set tap_identity_cli = "switchport tap identity " ~ port_channel_interface.switchport.tap.identity.port_id %} +{% if port_channel_interface.switchport.tap.identity.inner_port_id is arista.avd.defined %} +{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ port_channel_interface.switchport.tap.identity.inner_port_id %} +{% endif %} + {{ tap_identity_cli }} +{% endif %} +{% if port_channel_interface.switchport.tap.mac_address.dest is arista.avd.defined %} +{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ port_channel_interface.switchport.tap.mac_address.dest %} +{% if port_channel_interface.switchport.tap.mac_address.src is arista.avd.defined %} +{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ port_channel_interface.switchport.tap.mac_address.src %} +{% endif %} + {{ tap_mac_address_cli }} +{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} + switchport tap encapsulation vxlan strip +{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.gre_strip is arista.avd.defined(true) %} + switchport tap encapsulation gre strip +{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined or + port_channel_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ port_channel_interface.switchport.tap.encapsulation.gre.destination %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ port_channel_interface.switchport.tap.encapsulation.gre.source %} +{% endif %} +{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ port_channel_interface.switchport.tap.encapsulation.gre.protocol %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ port_channel_interface.switchport.tap.encapsulation.gre.feature_header_length %} +{% endif %} +{% endif %} + {{ tap_encapsulation_cli }} strip +{% endif %} +{% if port_channel_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} + switchport tool mpls pop all +{% endif %} +{% if port_channel_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} + switchport tool encapsulation vn-tag strip +{% endif %} +{% if port_channel_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} + switchport tool encapsulation dot1br strip +{% endif %} +{% if port_channel_interface.switchport.tap.allowed_vlan is arista.avd.defined %} + switchport tap allowed vlan {{ port_channel_interface.switchport.tap.allowed_vlan }} +{% endif %} +{% if port_channel_interface.switchport.tool.allowed_vlan is arista.avd.defined %} + switchport tool allowed vlan {{ port_channel_interface.switchport.tool.allowed_vlan }} +{% endif %} +{% if port_channel_interface.switchport.tool.identity.tag is arista.avd.defined %} + switchport tool identity {{ port_channel_interface.switchport.tool.identity.tag }} +{% endif %} +{% if port_channel_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} + switchport tool identity dot1q source dzgre {{ port_channel_interface.switchport.tool.identity.dot1q_dzgre_source }} +{% elif port_channel_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} + switchport tool identity qinq source dzgre {{ port_channel_interface.switchport.tool.identity.qinq_dzgre_source }} +{% endif %} +{% if port_channel_interface.switchport.tap.truncation.enabled is arista.avd.defined %} +{% set tap_truncation_cli = "switchport tap truncation" %} +{% if port_channel_interface.switchport.tap.truncation.size is arista.avd.defined %} +{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ port_channel_interface.switchport.tap.truncation.size %} +{% endif %} + {{ tap_truncation_cli }} +{% endif %} +{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined %} +{% set tool_truncation_cli = "switchport tool truncation" %} +{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} +{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} +{% endif %} + {{ tool_truncation_cli }} +{% endif %} +{% if port_channel_interface.switchport.tap.default.groups is arista.avd.defined %} + switchport tap default group {{ port_channel_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} +{% endif %} +{% if port_channel_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} + switchport tap default nexthop-group {{ port_channel_interface.switchport.tap.default.nexthop_groups | arista.avd.natural_sort | join(" ") }} +{% endif %} +{% for interface in port_channel_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} + switchport tap default interface {{ interface }} +{% endfor %} +{% if port_channel_interface.switchport.tool.groups is arista.avd.defined %} +{% set tool_groups = port_channel_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} + switchport tool group set {{ tool_groups }} +{% endif %} +{% if port_channel_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} + switchport tool dzgre preserve +{% endif %} {% if port_channel_interface.l2_protocol.encapsulation_dot1q_vlan is arista.avd.defined %} l2-protocol encapsulation dot1q vlan {{ port_channel_interface.l2_protocol.encapsulation_dot1q_vlan }} {% endif %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json index 2118280101b..466f3d58cf0 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json @@ -5723,6 +5723,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false, @@ -15817,6 +16116,315 @@ }, "title": "Sflow" }, + "switchport": { + "type": "object", + "properties": { + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, "validate_state": { "type": "boolean", "description": "Set to false to disable interface validation by the `eos_validate_state` role.", 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 021e4633d5b..f81049f6762 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 @@ -3439,6 +3439,173 @@ keys: type: int convert_types: - str + tap: + type: dict + keys: + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + default: + type: dict + keys: + groups: + description: Tap group names for the interface. + type: list + items: + type: str + interfaces: + description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, + Recirc-Channel. + type: list + items: + type: str + nexthop_groups: + type: list + description: Default nexthop-group names. + items: + type: str + identity: + type: dict + keys: + port_id: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Tap port ID tag. + inner_port_id: + description: Inner tap port ID tag. + type: int + convert_types: + - str + min: 1 + max: 4094 + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + native_vlan: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Native VLAN ID when interface is in tap mode. + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Ingress packet truncation size in bytes. + type: int + convert_types: + - str + min: 100 + max: 9236 + mac_address: + type: dict + keys: + src: + type: str + description: MAC address for the source. + dest: + type: str + required: true + description: MAC address for the destination. + encapsulation: + type: dict + keys: + vxlan_strip: + type: bool + description: Strip VXLAN encapsulation header. + gre_strip: + type: bool + required: true + description: Strip GRE encapsulation header. + gre: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + type: str + protocol: + type: str + description: 'Protocol type in GRE header. + + Protocol range: 0x0000-0xFFFF' + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 + tool: + type: dict + keys: + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + encapsulation: + type: dict + keys: + dot1br_strip: + type: bool + description: Remove a 802.1 BR tag in packet header. + vn_tag_strip: + type: bool + description: Remove a VN-tag in packet header. + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + identity: + type: dict + keys: + tag: + type: str + valid_values: + - dot1q + - qinq + dot1q_dzgre_source: + type: str + valid_values: + - policy + - port + qinq_dzgre_source: + type: str + valid_values: + - policy inner port + - port inner policy + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Egress packet truncation size in bytes. + type: int + convert_types: + - str + valid_values: + - 160 + groups: + type: list + items: + type: str + description: Tool groups for the interface. + dzgre_preserve: + type: bool + description: Preserve the DzGRE header. eos_cli: type: str description: Multiline EOS CLI rendered directly on the ethernet interface @@ -9319,6 +9486,176 @@ keys: type: bool unmodified_enable: type: bool + switchport: + type: dict + keys: + tap: + type: dict + keys: + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + default: + type: dict + keys: + groups: + description: Tap group names for the interface. + type: list + items: + type: str + interfaces: + description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, + Recirc-Channel. + type: list + items: + type: str + nexthop_groups: + type: list + description: Default nexthop-group names. + items: + type: str + identity: + type: dict + keys: + port_id: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Tap port ID tag. + inner_port_id: + description: Inner tap port ID tag. + type: int + convert_types: + - str + min: 1 + max: 4094 + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + native_vlan: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Native VLAN ID when interface is in tap mode. + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Ingress packet truncation size in bytes. + type: int + convert_types: + - str + min: 100 + max: 9236 + mac_address: + type: dict + keys: + src: + type: str + description: MAC address for the source. + dest: + type: str + required: true + description: MAC address for the destination. + encapsulation: + type: dict + keys: + vxlan_strip: + type: bool + description: Strip VXLAN encapsulation header. + gre_strip: + type: bool + required: true + description: Strip GRE encapsulation header. + gre: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + type: str + protocol: + type: str + description: 'Protocol type in GRE header. + + Protocol range: 0x0000-0xFFFF' + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 + tool: + type: dict + keys: + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + encapsulation: + type: dict + keys: + dot1br_strip: + type: bool + description: Remove a 802.1 BR tag in packet header. + vn_tag_strip: + type: bool + description: Remove a VN-tag in packet header. + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + identity: + type: dict + keys: + tag: + type: str + valid_values: + - dot1q + - qinq + dot1q_dzgre_source: + type: str + valid_values: + - policy + - port + qinq_dzgre_source: + type: str + valid_values: + - policy inner port + - port inner policy + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Egress packet truncation size in bytes. + type: int + convert_types: + - str + valid_values: + - 160 + groups: + type: list + items: + type: str + description: Tool groups for the interface. + dzgre_preserve: + type: bool + description: Preserve the DzGRE header. validate_state: type: bool description: Set to false to disable interface validation by the `eos_validate_state` 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 d9198550746..449229d0bf3 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 @@ -1425,6 +1425,172 @@ keys: type: int convert_types: - str + tap: + type: dict + keys: + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + default: + type: dict + keys: + groups: + description: Tap group names for the interface. + type: list + items: + type: str + interfaces: + description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + type: list + items: + type: str + nexthop_groups: + type: list + description: Default nexthop-group names. + items: + type: str + identity: + type: dict + keys: + port_id: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Tap port ID tag. + inner_port_id: + description: Inner tap port ID tag. + type: int + convert_types: + - str + min: 1 + max: 4094 + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + native_vlan: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Native VLAN ID when interface is in tap mode. + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Ingress packet truncation size in bytes. + type: int + convert_types: + - str + min: 100 + max: 9236 + mac_address: + type: dict + keys: + src: + type: str + description: MAC address for the source. + dest: + type: str + required: true + description: MAC address for the destination. + encapsulation: + type: dict + keys: + vxlan_strip: + type: bool + description: Strip VXLAN encapsulation header. + gre_strip: + type: bool + required: true + description: Strip GRE encapsulation header. + gre: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + type: str + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 + tool: + type: dict + keys: + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + encapsulation: + type: dict + keys: + dot1br_strip: + type: bool + description: Remove a 802.1 BR tag in packet header. + vn_tag_strip: + type: bool + description: Remove a VN-tag in packet header. + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + identity: + type: dict + keys: + tag: + type: str + valid_values: + - dot1q + - qinq + dot1q_dzgre_source: + type: str + valid_values: + - policy + - port + qinq_dzgre_source: + type: str + valid_values: + - policy inner port + - port inner policy + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Egress packet truncation size in bytes. + type: int + convert_types: + - str + valid_values: + - 160 + groups: + type: list + items: + type: str + description: Tool groups for the interface. + dzgre_preserve: + type: bool + description: Preserve the DzGRE header. 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 78deeb0d0db..1250e5b00b4 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 @@ -837,6 +837,175 @@ keys: type: bool unmodified_enable: type: bool + switchport: + type: dict + keys: + tap: + type: dict + keys: + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + default: + type: dict + keys: + groups: + description: Tap group names for the interface. + type: list + items: + type: str + interfaces: + description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + type: list + items: + type: str + nexthop_groups: + type: list + description: Default nexthop-group names. + items: + type: str + identity: + type: dict + keys: + port_id: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Tap port ID tag. + inner_port_id: + description: Inner tap port ID tag. + type: int + convert_types: + - str + min: 1 + max: 4094 + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + native_vlan: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Native VLAN ID when interface is in tap mode. + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Ingress packet truncation size in bytes. + type: int + convert_types: + - str + min: 100 + max: 9236 + mac_address: + type: dict + keys: + src: + type: str + description: MAC address for the source. + dest: + type: str + required: true + description: MAC address for the destination. + encapsulation: + type: dict + keys: + vxlan_strip: + type: bool + description: Strip VXLAN encapsulation header. + gre_strip: + type: bool + required: true + description: Strip GRE encapsulation header. + gre: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + type: str + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 + tool: + type: dict + keys: + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + encapsulation: + type: dict + keys: + dot1br_strip: + type: bool + description: Remove a 802.1 BR tag in packet header. + vn_tag_strip: + type: bool + description: Remove a VN-tag in packet header. + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + identity: + type: dict + keys: + tag: + type: str + valid_values: + - dot1q + - qinq + dot1q_dzgre_source: + type: str + valid_values: + - policy + - port + qinq_dzgre_source: + type: str + valid_values: + - policy inner port + - port inner policy + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Egress packet truncation size in bytes. + type: int + convert_types: + - str + valid_values: + - 160 + groups: + type: list + items: + type: str + description: Tool groups for the interface. + dzgre_preserve: + type: bool + description: Preserve the DzGRE header. validate_state: type: bool description: Set to false to disable interface validation by the `eos_validate_state` role. diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json index 4e288428d82..5f5d5eceaa4 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json @@ -11283,6 +11283,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false, @@ -14173,6 +14472,315 @@ }, "title": "Sflow" }, + "switchport": { + "type": "object", + "properties": { + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, "validate_state": { "type": "boolean", "description": "Set to false to disable interface validation by the `eos_validate_state` role.", @@ -17080,6 +17688,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false, @@ -23631,6 +24538,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false, @@ -33725,6 +34931,315 @@ }, "title": "Sflow" }, + "switchport": { + "type": "object", + "properties": { + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, "validate_state": { "type": "boolean", "description": "Set to false to disable interface validation by the `eos_validate_state` role.", @@ -52389,6 +53904,315 @@ }, "title": "Sflow" }, + "switchport": { + "type": "object", + "properties": { + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, "validate_state": { "type": "boolean", "description": "Set to false to disable interface validation by the `eos_validate_state` role.", @@ -55296,6 +57120,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false, From 9f9928b97d20155dcab628f8234ddeee3a367493 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Tue, 2 Jul 2024 16:52:39 +0530 Subject: [PATCH 02/32] Removing feature_header_legth from switchport.tap.encapsulation --- .../devices/ethernet-interfaces.md | 2 +- .../intended/configs/ethernet-interfaces.cfg | 2 +- .../host_vars/ethernet-interfaces.yml | 1 - .../docs/tables/ethernet-interfaces.md | 4 --- .../j2templates/eos/ethernet-interfaces.j2 | 3 -- .../eos/port-channel-interfaces.j2 | 3 -- .../schema/eos_cli_config_gen.jsonschema.json | 7 ----- .../schema/eos_cli_config_gen.schema.yml | 7 ----- .../ethernet_interfaces.schema.yml | 7 ----- .../schema/eos_designs.jsonschema.json | 28 ------------------- 10 files changed, 2 insertions(+), 62 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md index cdf7c9806b8..73bfec4da19 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md @@ -367,7 +367,7 @@ interface Ethernet1 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap encapsulation vxlan strip switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 feature header length 10 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg index 15c5bf0c6dd..69d5d005099 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg @@ -20,7 +20,7 @@ interface Ethernet1 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap encapsulation vxlan strip switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 feature header length 10 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml index 6c6fba2817b..b31ac08545a 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml @@ -68,7 +68,6 @@ ethernet_interfaces: destination: 1.1.1.1 source: 1.1.1.2 protocol: "0x0000" - feature_header_length: 10 tool: mpls_pop_all: true encapsulation: 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 1f927d8fd3e..0f795a1c686 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 @@ -434,7 +434,6 @@ | [            destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destination") | String | | | | Destination IP address of tunnel packets. | | [            source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.source") | String | | | | Source IP address of tunnel packets. | | [            protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | - | [            feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | | | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | @@ -1260,9 +1259,6 @@ # Protocol type in GRE header. # Protocol range: 0x0000-0xFFFF protocol: - - # Feature header length in bytes. - feature_header_length: tool: # Pop all MPLS labels. 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 8c021117a96..2190a088ab1 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 @@ -193,9 +193,6 @@ interface {{ ethernet_interface.name }} {% endif %} {% if ethernet_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ ethernet_interface.switchport.tap.encapsulation.gre.protocol %} -{% if ethernet_interface.switchport.tap.encapsulation.gre.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ ethernet_interface.switchport.tap.encapsulation.gre.feature_header_length %} -{% endif %} {% endif %} {{ tap_encapsulation_cli }} strip {% 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 ea125f86094..873483e68d2 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 @@ -141,9 +141,6 @@ interface {{ port_channel_interface.name }} {% endif %} {% if port_channel_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ port_channel_interface.switchport.tap.encapsulation.gre.protocol %} -{% if port_channel_interface.switchport.tap.encapsulation.gre.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ port_channel_interface.switchport.tap.encapsulation.gre.feature_header_length %} -{% endif %} {% endif %} {{ tap_encapsulation_cli }} strip {% endif %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json index 466f3d58cf0..5b32f08fe0f 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json @@ -5879,13 +5879,6 @@ "type": "string", "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", "title": "Protocol" - }, - "feature_header_length": { - "description": "Feature header length in bytes.", - "type": "integer", - "minimum": 1, - "maximum": 16, - "title": "Feature Header Length" } }, "additionalProperties": false, 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 f81049f6762..72349a0fed4 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 @@ -3540,13 +3540,6 @@ keys: description: 'Protocol type in GRE header. Protocol range: 0x0000-0xFFFF' - feature_header_length: - description: Feature header length in bytes. - type: int - convert_types: - - str - min: 1 - max: 16 tool: type: dict keys: 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 449229d0bf3..b8065b33ea0 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 @@ -1525,13 +1525,6 @@ keys: description: |- Protocol type in GRE header. Protocol range: 0x0000-0xFFFF - feature_header_length: - description: Feature header length in bytes. - type: int - convert_types: - - str - min: 1 - max: 16 tool: type: dict keys: diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json index 5f5d5eceaa4..489d95ddc26 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json @@ -11439,13 +11439,6 @@ "type": "string", "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", "title": "Protocol" - }, - "feature_header_length": { - "description": "Feature header length in bytes.", - "type": "integer", - "minimum": 1, - "maximum": 16, - "title": "Feature Header Length" } }, "additionalProperties": false, @@ -17844,13 +17837,6 @@ "type": "string", "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", "title": "Protocol" - }, - "feature_header_length": { - "description": "Feature header length in bytes.", - "type": "integer", - "minimum": 1, - "maximum": 16, - "title": "Feature Header Length" } }, "additionalProperties": false, @@ -24694,13 +24680,6 @@ "type": "string", "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", "title": "Protocol" - }, - "feature_header_length": { - "description": "Feature header length in bytes.", - "type": "integer", - "minimum": 1, - "maximum": 16, - "title": "Feature Header Length" } }, "additionalProperties": false, @@ -57276,13 +57255,6 @@ "type": "string", "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", "title": "Protocol" - }, - "feature_header_length": { - "description": "Feature header length in bytes.", - "type": "integer", - "minimum": 1, - "maximum": 16, - "title": "Feature Header Length" } }, "additionalProperties": false, From 333fbfc6586566a75cc79d4ff0c3f8dd221f698a Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Fri, 12 Jul 2024 18:33:02 +0530 Subject: [PATCH 03/32] Multiple fixes as per review comments --- .../devices/ethernet-interfaces.md | 5 +- .../devices/port-channel-interfaces.md | 7 +- .../intended/configs/ethernet-interfaces.cfg | 5 +- .../configs/port-channel-interfaces.cfg | 7 +- .../host_vars/ethernet-interfaces.yml | 15 +- .../host_vars/port-channel-interfaces.yml | 14 +- .../docs/tables/ethernet-interfaces.md | 51 +- .../docs/tables/port-channel-interfaces.md | 57 +- .../j2templates/eos/ethernet-interfaces.j2 | 38 +- .../eos/port-channel-interfaces.j2 | 44 +- .../schema/eos_cli_config_gen.jsonschema.json | 154 ++--- .../schema/eos_cli_config_gen.schema.yml | 128 +++-- .../ethernet_interfaces.schema.yml | 54 +- .../port_channel_interfaces.schema.yml | 68 ++- .../schema/eos_designs.jsonschema.json | 532 ++++++++++-------- 15 files changed, 698 insertions(+), 481 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md index 73bfec4da19..da3baf724aa 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md @@ -365,9 +365,11 @@ interface Ethernet1 switchport tap native vlan 10 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap encapsulation vxlan strip + switchport tap mpls pop all switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0000 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0000 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -382,6 +384,7 @@ interface Ethernet1 switchport tap default interface ethernet4 switchport tap default interface port-channel10 switchport tool group set group1 group2 group3 + switchport tool dot1q remove outer 1 switchport tool dzgre preserve ip address 172.31.255.1/31 ip verify unicast source reachable-via rx diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md index 1a15ebc497a..f4d9d77d413 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md @@ -514,8 +514,11 @@ interface Port-Channel100 switchport tap native vlan 10 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap mpls pop all switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0000 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0000 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -524,11 +527,13 @@ interface Port-Channel100 switchport tool identity qinq switchport tool identity qinq source dzgre port inner policy switchport tap truncation + switchport tool truncation 160 switchport tap default group g1 group g2 group g3 switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 switchport tap default interface ethernet4 switchport tap default interface port-channel10 switchport tool group set group1 group2 group3 + switchport tool dot1q remove outer 1-2 switchport tool dzgre preserve ! interface Port-Channel100.101 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg index 69d5d005099..e6aeacae14c 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg @@ -18,9 +18,11 @@ interface Ethernet1 switchport tap native vlan 10 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap encapsulation vxlan strip + switchport tap mpls pop all switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0000 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0000 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -35,6 +37,7 @@ interface Ethernet1 switchport tap default interface ethernet4 switchport tap default interface port-channel10 switchport tool group set group1 group2 group3 + switchport tool dot1q remove outer 1 switchport tool dzgre preserve ip address 172.31.255.1/31 ip verify unicast source reachable-via rx diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg index a3d70457503..75fba704f2a 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg @@ -168,8 +168,11 @@ interface Port-Channel100 switchport tap native vlan 10 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap mpls pop all switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0000 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0000 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -178,11 +181,13 @@ interface Port-Channel100 switchport tool identity qinq switchport tool identity qinq source dzgre port inner policy switchport tap truncation + switchport tool truncation 160 switchport tap default group g1 group g2 group g3 switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 switchport tap default interface ethernet4 switchport tap default interface port-channel10 switchport tool group set group1 group2 group3 + switchport tool dot1q remove outer 1-2 switchport tool dzgre preserve ! interface Port-Channel100.101 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml index b31ac08545a..5564d2b3cd8 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml @@ -63,11 +63,17 @@ ethernet_interfaces: src: 01:23:45:67:89:ab encapsulation: vxlan_strip: true - gre_strip: true gre: - destination: 1.1.1.1 - source: 1.1.1.2 - protocol: "0x0000" + - strip: true + - strip: true + destination: 1.1.1.1 + source: 1.1.1.2 + protocol: "0x0000" + - strip: true + protocol: "0x0000" + - strip: true + destination: 2.1.1.2 + protocol: "0x0000" tool: mpls_pop_all: true encapsulation: @@ -83,6 +89,7 @@ ethernet_interfaces: - group1 - group2 - group3 + dot1q_remove_outer_vlan_tag: 1 dzgre_preserve: true eos_cli: | comment diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml index 04a3cab0a2c..80ec936ff65 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml @@ -138,10 +138,17 @@ port_channel_interfaces: dest: 01:00:00:00:00:00 src: 01:23:45:67:89:ab encapsulation: - gre_strip: true gre: - destination: 1.1.1.1 - protocol: "0x0000" + - strip: true + - strip: true + destination: 1.1.1.1 + source: 1.1.1.2 + protocol: "0x0000" + - strip: true + protocol: "0x0000" + - strip: true + destination: 2.1.1.2 + protocol: "0x0000" tool: mpls_pop_all: true encapsulation: @@ -158,6 +165,7 @@ port_channel_interfaces: - group1 - group2 - group3 + dot1q_remove_outer_vlan_tag: 1-2 dzgre_preserve: true - name: Port-Channel100.101 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 0f795a1c686..c7eb9084369 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 @@ -425,20 +425,20 @@ | [          enabled](## "ethernet_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | | [          size](## "ethernet_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "ethernet_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | - | [          src](## "ethernet_interfaces.[].switchport.tap.mac_address.src") | String | | | | MAC address for the source. | - | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | | MAC address for the destination. | + | [          src](## "ethernet_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ | MAC address for the source. | + | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | Pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ | MAC address for the destination. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | - | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header. | - | [          gre_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre_strip") | Boolean | Required | | | Strip GRE encapsulation header. | - | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | - | [            destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destination") | String | | | | Destination IP address of tunnel packets. | - | [            source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.source") | String | | | | Source IP address of tunnel packets. | - | [            protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | + | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | + | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | List, items: Dictionary | | | | | + | [            - strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].strip") | Boolean | Required | | | Strip GRE encapsulation header. | + | [              destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].destination") | String | | | | Destination IP address of tunnel packets. | + | [              source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | + | [              protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | | | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | - | [          dot1br_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. | - | [          vn_tag_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.vn_tag_strip") | Boolean | | | | Remove a VN-tag in packet header. | + | [          dot1br_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. | + | [          vn_tag_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.vn_tag_strip") | Boolean | | | | Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS. | | [        allowed_vlan](## "ethernet_interfaces.[].switchport.tool.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | | [        identity](## "ethernet_interfaces.[].switchport.tool.identity") | Dictionary | | | | | | [          tag](## "ethernet_interfaces.[].switchport.tool.identity.tag") | String | | | Valid Values:
- dot1q
- qinq | | @@ -449,6 +449,7 @@ | [          size](## "ethernet_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | | [        groups](## "ethernet_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | | [          - <str>](## "ethernet_interfaces.[].switchport.tool.groups.[]") | String | | | | | + | [        dot1q_remove_outer_vlan_tag](## "ethernet_interfaces.[].switchport.tool.dot1q_remove_outer_vlan_tag") | String | | | | Indices of vlan tags to be removed.
Range: 1-2 | | [        dzgre_preserve](## "ethernet_interfaces.[].switchport.tool.dzgre_preserve") | Boolean | | | | Preserve the DzGRE header. | | [    eos_cli](## "ethernet_interfaces.[].eos_cli") | String | | | | Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. | @@ -1244,31 +1245,33 @@ encapsulation: # Strip VXLAN encapsulation header. + # `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive. + # `mpls_pop_all` takes precedence. vxlan_strip: - - # Strip GRE encapsulation header. - gre_strip: gre: - # Destination IP address of tunnel packets. - destination: + # Strip GRE encapsulation header. + - strip: + + # Destination IP address of tunnel packets. + destination: - # Source IP address of tunnel packets. - source: + # Source IP address of tunnel packets. Applied only when destination is defined. + source: - # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF - protocol: + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF + protocol: tool: # Pop all MPLS labels. mpls_pop_all: encapsulation: - # Remove a 802.1 BR tag in packet header. + # Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. dot1br_strip: - # Remove a VN-tag in packet header. + # Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS. vn_tag_strip: # VLAN ID or range of VLAN IDs within range 1-4094. @@ -1287,6 +1290,10 @@ groups: - + # Indices of vlan tags to be removed. + # Range: 1-2 + dot1q_remove_outer_vlan_tag: + # Preserve the DzGRE header. dzgre_preserve: 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 f10054a2e80..79066990904 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 @@ -264,21 +264,21 @@ | [          enabled](## "port_channel_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | | [          size](## "port_channel_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "port_channel_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | - | [          src](## "port_channel_interfaces.[].switchport.tap.mac_address.src") | String | | | | MAC address for the source. | - | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | | MAC address for the destination. | + | [          src](## "port_channel_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ | MAC address for the source. | + | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | Pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ | MAC address for the destination. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | - | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header. | - | [          gre_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre_strip") | Boolean | Required | | | Strip GRE encapsulation header. | - | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | - | [            destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destination") | String | | | | Destination IP address of tunnel packets. | - | [            source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.source") | String | | | | Source IP address of tunnel packets. | - | [            protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | - | [            feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | + | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | + | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | List, items: Dictionary | | | | | + | [            - strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].strip") | Boolean | Required | | | Strip GRE encapsulation header. | + | [              destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].destination") | String | | | | Destination IP address of tunnel packets. | + | [              source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | + | [              protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | + | [              feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | | | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | - | [          dot1br_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. | - | [          vn_tag_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.vn_tag_strip") | Boolean | | | | Remove a VN-tag in packet header. | + | [          dot1br_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. | + | [          vn_tag_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.vn_tag_strip") | Boolean | | | | Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS. | | [        allowed_vlan](## "port_channel_interfaces.[].switchport.tool.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | | [        identity](## "port_channel_interfaces.[].switchport.tool.identity") | Dictionary | | | | | | [          tag](## "port_channel_interfaces.[].switchport.tool.identity.tag") | String | | | Valid Values:
- dot1q
- qinq | | @@ -289,6 +289,7 @@ | [          size](## "port_channel_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | | [        groups](## "port_channel_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | | [          - <str>](## "port_channel_interfaces.[].switchport.tool.groups.[]") | String | | | | | + | [        dot1q_remove_outer_vlan_tag](## "port_channel_interfaces.[].switchport.tool.dot1q_remove_outer_vlan_tag") | String | | | | Indices of vlan tags to be removed.
Range: 1-2 | | [        dzgre_preserve](## "port_channel_interfaces.[].switchport.tool.dzgre_preserve") | Boolean | | | | Preserve the DzGRE header. | | [    validate_state](## "port_channel_interfaces.[].validate_state") | Boolean | | | | Set to false to disable interface validation 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. | @@ -799,34 +800,36 @@ encapsulation: # Strip VXLAN encapsulation header. + # `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive. + # `mpls_pop_all` takes precedence. vxlan_strip: - - # Strip GRE encapsulation header. - gre_strip: gre: - # Destination IP address of tunnel packets. - destination: + # Strip GRE encapsulation header. + - strip: + + # Destination IP address of tunnel packets. + destination: - # Source IP address of tunnel packets. - source: + # Source IP address of tunnel packets. Applied only when destination is defined. + source: - # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF - protocol: + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF + protocol: - # Feature header length in bytes. - feature_header_length: + # Feature header length in bytes. + feature_header_length: tool: # Pop all MPLS labels. mpls_pop_all: encapsulation: - # Remove a 802.1 BR tag in packet header. + # Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. dot1br_strip: - # Remove a VN-tag in packet header. + # Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS. vn_tag_strip: # VLAN ID or range of VLAN IDs within range 1-4094. @@ -845,6 +848,10 @@ groups: - + # Indices of vlan tags to be removed. + # Range: 1-2 + dot1q_remove_outer_vlan_tag: + # Preserve the DzGRE header. dzgre_preserve: 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 2190a088ab1..02a27294980 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 @@ -177,24 +177,29 @@ interface {{ ethernet_interface.name }} {% endif %} {{ tap_mac_address_cli }} {% endif %} -{% if ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} +{% if ethernet_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} + switchport tap mpls pop all +{% elif ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} switchport tap encapsulation vxlan strip {% endif %} -{% if ethernet_interface.switchport.tap.encapsulation.gre_strip is arista.avd.defined(true) %} - switchport tap encapsulation gre strip -{% endif %} -{% if ethernet_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined or - ethernet_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} -{% if ethernet_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ ethernet_interface.switchport.tap.encapsulation.gre.destination %} -{% if ethernet_interface.switchport.tap.encapsulation.gre.source is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ ethernet_interface.switchport.tap.encapsulation.gre.source %} -{% endif %} -{% endif %} -{% if ethernet_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ ethernet_interface.switchport.tap.encapsulation.gre.protocol %} -{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} +{% for gre_strip_config in ethernet_interface.switchport.tap.encapsulation.gre %} +{% if gre_strip_config.strip is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} +{% if gre_strip_config.destination is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} +{% if gre_strip_config.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} +{% endif %} +{% if gre_strip_config.protocol is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} +{% endif %} +{% elif gre_strip_config.protocol is arista.avd.defined and gre_strip_config.destination is not arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} +{% endif %} {{ tap_encapsulation_cli }} strip +{% endif %} +{% endfor %} {% endif %} {% if ethernet_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} switchport tool mpls pop all @@ -246,6 +251,9 @@ interface {{ ethernet_interface.name }} {% set tool_groups = ethernet_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} switchport tool group set {{ tool_groups }} {% endif %} +{% if ethernet_interface.switchport.tool.dot1q_remove_outer_vlan_tag is arista.avd.defined %} + switchport tool dot1q remove outer {{ ethernet_interface.switchport.tool.dot1q_remove_outer_vlan_tag }} +{% endif %} {% if ethernet_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} switchport tool dzgre preserve {% 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 873483e68d2..804142fe95f 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 @@ -125,24 +125,29 @@ interface {{ port_channel_interface.name }} {% endif %} {{ tap_mac_address_cli }} {% endif %} -{% if port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} +{% if port_channel_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} + switchport tap mpls pop all +{% elif port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} switchport tap encapsulation vxlan strip {% endif %} -{% if port_channel_interface.switchport.tap.encapsulation.gre_strip is arista.avd.defined(true) %} - switchport tap encapsulation gre strip -{% endif %} -{% if port_channel_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined or - port_channel_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} -{% if port_channel_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ port_channel_interface.switchport.tap.encapsulation.gre.destination %} -{% if port_channel_interface.switchport.tap.encapsulation.gre.source is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ port_channel_interface.switchport.tap.encapsulation.gre.source %} -{% endif %} -{% endif %} -{% if port_channel_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ port_channel_interface.switchport.tap.encapsulation.gre.protocol %} -{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} +{% for gre_strip_config in port_channel_interface.switchport.tap.encapsulation.gre %} +{% if gre_strip_config.strip is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} +{% if gre_strip_config.destination is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} +{% if gre_strip_config.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} +{% endif %} +{% if gre_strip_config.protocol is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} +{% endif %} +{% elif gre_strip_config.protocol is arista.avd.defined and gre_strip_config.destination is not arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} +{% endif %} {{ tap_encapsulation_cli }} strip +{% endif %} +{% endfor %} {% endif %} {% if port_channel_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} switchport tool mpls pop all @@ -174,10 +179,10 @@ interface {{ port_channel_interface.name }} {% endif %} {{ tap_truncation_cli }} {% endif %} -{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined %} +{% if port_channel_interface.switchport.tool.truncation.enabled is arista.avd.defined %} {% set tool_truncation_cli = "switchport tool truncation" %} -{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} -{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} +{% if port_channel_interface.switchport.tool.truncation.size is arista.avd.defined %} +{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ port_channel_interface.switchport.tool.truncation.size %} {% endif %} {{ tool_truncation_cli }} {% endif %} @@ -194,6 +199,9 @@ interface {{ port_channel_interface.name }} {% set tool_groups = port_channel_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} switchport tool group set {{ tool_groups }} {% endif %} +{% if port_channel_interface.switchport.tool.dot1q_remove_outer_vlan_tag is arista.avd.defined %} + switchport tool dot1q remove outer {{ port_channel_interface.switchport.tool.dot1q_remove_outer_vlan_tag }} +{% endif %} {% if port_channel_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} switchport tool dzgre preserve {% endif %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json index 5b32f08fe0f..b43d0c2c4f1 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json @@ -5831,11 +5831,13 @@ "properties": { "src": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the source.", "title": "Src" }, "dest": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the destination.", "title": "Dest" } @@ -5854,43 +5856,46 @@ "properties": { "vxlan_strip": { "type": "boolean", - "description": "Strip VXLAN encapsulation header.", + "description": "Strip VXLAN encapsulation header.\n`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.\n`mpls_pop_all` takes precedence.", "title": "VxLAN Strip" }, - "gre_strip": { - "type": "boolean", - "description": "Strip GRE encapsulation header.", - "title": "Gre Strip" - }, "gre": { - "type": "object", - "properties": { - "destination": { - "description": "Destination IP address of tunnel packets.", - "type": "string", - "title": "Destination" - }, - "source": { - "description": "Source IP address of tunnel packets.", - "type": "string", - "title": "Source" + "type": "array", + "items": { + "type": "object", + "properties": { + "strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Strip" + }, + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets. Applied only when destination is defined.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + } }, - "protocol": { - "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", - "title": "Protocol" + "required": [ + "strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} } }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, "title": "Gre" } }, - "required": [ - "gre_strip" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} @@ -5917,12 +5922,12 @@ "properties": { "dot1br_strip": { "type": "boolean", - "description": "Remove a 802.1 BR tag in packet header.", + "description": "Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.", "title": "dot1br Strip" }, "vn_tag_strip": { "type": "boolean", - "description": "Remove a VN-tag in packet header.", + "description": "Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.", "title": "VN Tag Strip" } }, @@ -6004,6 +6009,11 @@ "description": "Tool groups for the interface.", "title": "Groups" }, + "dot1q_remove_outer_vlan_tag": { + "type": "string", + "description": "Indices of vlan tags to be removed.\nRange: 1-2", + "title": "Dot1Q Remove Outer VLAN Tag" + }, "dzgre_preserve": { "type": "boolean", "description": "Preserve the DzGRE header.", @@ -16219,11 +16229,13 @@ "properties": { "src": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the source.", "title": "Src" }, "dest": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the destination.", "title": "Dest" } @@ -16242,50 +16254,53 @@ "properties": { "vxlan_strip": { "type": "boolean", - "description": "Strip VXLAN encapsulation header.", + "description": "Strip VXLAN encapsulation header.\n`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.\n`mpls_pop_all` takes precedence.", "title": "VxLAN Strip" }, - "gre_strip": { - "type": "boolean", - "description": "Strip GRE encapsulation header.", - "title": "Gre Strip" - }, "gre": { - "type": "object", - "properties": { - "destination": { - "description": "Destination IP address of tunnel packets.", - "type": "string", - "title": "Destination" - }, - "source": { - "description": "Source IP address of tunnel packets.", - "type": "string", - "title": "Source" - }, - "protocol": { - "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", - "title": "Protocol" + "type": "array", + "items": { + "type": "object", + "properties": { + "strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Strip" + }, + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets. Applied only when destination is defined.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } }, - "feature_header_length": { - "description": "Feature header length in bytes.", - "type": "integer", - "minimum": 1, - "maximum": 16, - "title": "Feature Header Length" + "required": [ + "strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} } }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, "title": "Gre" } }, - "required": [ - "gre_strip" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} @@ -16312,12 +16327,12 @@ "properties": { "dot1br_strip": { "type": "boolean", - "description": "Remove a 802.1 BR tag in packet header.", + "description": "Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.", "title": "dot1br Strip" }, "vn_tag_strip": { "type": "boolean", - "description": "Remove a VN-tag in packet header.", + "description": "Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.", "title": "VN Tag Strip" } }, @@ -16399,6 +16414,11 @@ "description": "Tool groups for the interface.", "title": "Groups" }, + "dot1q_remove_outer_vlan_tag": { + "type": "string", + "description": "Indices of vlan tags to be removed.\nRange: 1-2", + "title": "Dot1Q Remove Outer VLAN Tag" + }, "dzgre_preserve": { "type": "boolean", "description": "Preserve the DzGRE header.", 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 72349a0fed4..98e90020bb1 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 @@ -3511,35 +3511,45 @@ keys: keys: src: type: str + pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ description: MAC address for the source. dest: type: str required: true + pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ description: MAC address for the destination. encapsulation: type: dict keys: vxlan_strip: type: bool - description: Strip VXLAN encapsulation header. - gre_strip: - type: bool - required: true - description: Strip GRE encapsulation header. + description: 'Strip VXLAN encapsulation header. + + `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually + exclusive. + + `mpls_pop_all` takes precedence.' gre: - type: dict - keys: - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. - type: str - protocol: - type: str - description: 'Protocol type in GRE header. + type: list + items: + type: dict + keys: + strip: + type: bool + required: true + description: Strip GRE encapsulation header. + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. Applied + only when destination is defined. + type: str + protocol: + type: str + description: 'Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF' + Protocol range: 0x0000-0xFFFF' tool: type: dict keys: @@ -3551,10 +3561,12 @@ keys: keys: dot1br_strip: type: bool - description: Remove a 802.1 BR tag in packet header. + description: Remove a 802.1 BR tag in packet header. 'mpls_pop_all' + takes precedence over 'dot1br_strip' in EOS. vn_tag_strip: type: bool - description: Remove a VN-tag in packet header. + description: Remove a VN-tag in packet header. 'mpls_pop_all' + takes precedence over 'vn_tag_strip' in EOS. allowed_vlan: type: str convert_types: @@ -3596,6 +3608,13 @@ keys: items: type: str description: Tool groups for the interface. + dot1q_remove_outer_vlan_tag: + type: str + convert_types: + - int + description: 'Indices of vlan tags to be removed. + + Range: 1-2' dzgre_preserve: type: bool description: Preserve the DzGRE header. @@ -9554,42 +9573,52 @@ keys: keys: src: type: str + pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ description: MAC address for the source. dest: type: str required: true + pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ description: MAC address for the destination. encapsulation: type: dict keys: vxlan_strip: type: bool - description: Strip VXLAN encapsulation header. - gre_strip: - type: bool - required: true - description: Strip GRE encapsulation header. + description: 'Strip VXLAN encapsulation header. + + `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually + exclusive. + + `mpls_pop_all` takes precedence.' gre: - type: dict - keys: - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. - type: str - protocol: - type: str - description: 'Protocol type in GRE header. + type: list + items: + type: dict + keys: + strip: + type: bool + required: true + description: Strip GRE encapsulation header. + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. Applied + only when destination is defined. + type: str + protocol: + type: str + description: 'Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF' - feature_header_length: - description: Feature header length in bytes. - type: int - convert_types: - - str - min: 1 - max: 16 + Protocol range: 0x0000-0xFFFF' + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 tool: type: dict keys: @@ -9601,10 +9630,12 @@ keys: keys: dot1br_strip: type: bool - description: Remove a 802.1 BR tag in packet header. + description: Remove a 802.1 BR tag in packet header. 'mpls_pop_all' + takes precedence over 'dot1br_strip' in EOS. vn_tag_strip: type: bool - description: Remove a VN-tag in packet header. + description: Remove a VN-tag in packet header. 'mpls_pop_all' + takes precedence over 'vn_tag_strip' in EOS. allowed_vlan: type: str convert_types: @@ -9646,6 +9677,13 @@ keys: items: type: str description: Tool groups for the interface. + dot1q_remove_outer_vlan_tag: + type: str + convert_types: + - int + description: 'Indices of vlan tags to be removed. + + Range: 1-2' dzgre_preserve: type: bool description: Preserve the DzGRE header. 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 b8065b33ea0..b4dd4a8fce5 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 @@ -1496,35 +1496,42 @@ keys: keys: src: type: str + pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" description: MAC address for the source. dest: type: str required: true + pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" description: MAC address for the destination. encapsulation: type: dict keys: vxlan_strip: type: bool - description: Strip VXLAN encapsulation header. - gre_strip: - type: bool - required: true - description: Strip GRE encapsulation header. + description: |- + Strip VXLAN encapsulation header. + `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive. + `mpls_pop_all` takes precedence. gre: - type: dict - keys: - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. - type: str - protocol: - type: str - description: |- - Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF + type: list + items: + type: dict + keys: + strip: + type: bool + required: true + description: Strip GRE encapsulation header. + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. Applied only when destination is defined. + type: str + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF tool: type: dict keys: @@ -1536,10 +1543,10 @@ keys: keys: dot1br_strip: type: bool - description: Remove a 802.1 BR tag in packet header. + description: Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. vn_tag_strip: type: bool - description: Remove a VN-tag in packet header. + description: Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS. allowed_vlan: type: str convert_types: @@ -1581,6 +1588,13 @@ keys: items: type: str description: Tool groups for the interface. + dot1q_remove_outer_vlan_tag: + type: str + convert_types: + - int + description: |- + Indices of vlan tags to be removed. + Range: 1-2 dzgre_preserve: type: bool description: Preserve the DzGRE header. 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 1250e5b00b4..36b0ef5213b 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 @@ -911,42 +911,49 @@ keys: keys: src: type: str + pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" description: MAC address for the source. dest: type: str required: true + pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" description: MAC address for the destination. encapsulation: type: dict keys: vxlan_strip: type: bool - description: Strip VXLAN encapsulation header. - gre_strip: - type: bool - required: true - description: Strip GRE encapsulation header. + description: |- + Strip VXLAN encapsulation header. + `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive. + `mpls_pop_all` takes precedence. gre: - type: dict - keys: - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. - type: str - protocol: - type: str - description: |- - Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF - feature_header_length: - description: Feature header length in bytes. - type: int - convert_types: - - str - min: 1 - max: 16 + type: list + items: + type: dict + keys: + strip: + type: bool + required: true + description: Strip GRE encapsulation header. + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. Applied only when destination is defined. + type: str + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 tool: type: dict keys: @@ -958,10 +965,10 @@ keys: keys: dot1br_strip: type: bool - description: Remove a 802.1 BR tag in packet header. + description: Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. vn_tag_strip: type: bool - description: Remove a VN-tag in packet header. + description: Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS. allowed_vlan: type: str convert_types: @@ -1003,6 +1010,13 @@ keys: items: type: str description: Tool groups for the interface. + dot1q_remove_outer_vlan_tag: + type: str + convert_types: + - int + description: |- + Indices of vlan tags to be removed. + Range: 1-2 dzgre_preserve: type: bool description: Preserve the DzGRE header. diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json index 489d95ddc26..b5d29cd36ac 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json @@ -11391,11 +11391,13 @@ "properties": { "src": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the source.", "title": "Src" }, "dest": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the destination.", "title": "Dest" } @@ -11414,43 +11416,46 @@ "properties": { "vxlan_strip": { "type": "boolean", - "description": "Strip VXLAN encapsulation header.", + "description": "Strip VXLAN encapsulation header.\n`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.\n`mpls_pop_all` takes precedence.", "title": "VxLAN Strip" }, - "gre_strip": { - "type": "boolean", - "description": "Strip GRE encapsulation header.", - "title": "Gre Strip" - }, "gre": { - "type": "object", - "properties": { - "destination": { - "description": "Destination IP address of tunnel packets.", - "type": "string", - "title": "Destination" - }, - "source": { - "description": "Source IP address of tunnel packets.", - "type": "string", - "title": "Source" + "type": "array", + "items": { + "type": "object", + "properties": { + "strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Strip" + }, + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets. Applied only when destination is defined.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + } }, - "protocol": { - "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", - "title": "Protocol" + "required": [ + "strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} } }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, "title": "Gre" } }, - "required": [ - "gre_strip" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} @@ -11477,12 +11482,12 @@ "properties": { "dot1br_strip": { "type": "boolean", - "description": "Remove a 802.1 BR tag in packet header.", + "description": "Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.", "title": "dot1br Strip" }, "vn_tag_strip": { "type": "boolean", - "description": "Remove a VN-tag in packet header.", + "description": "Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.", "title": "VN Tag Strip" } }, @@ -11564,6 +11569,11 @@ "description": "Tool groups for the interface.", "title": "Groups" }, + "dot1q_remove_outer_vlan_tag": { + "type": "string", + "description": "Indices of vlan tags to be removed.\nRange: 1-2", + "title": "Dot1Q Remove Outer VLAN Tag" + }, "dzgre_preserve": { "type": "boolean", "description": "Preserve the DzGRE header.", @@ -14575,11 +14585,13 @@ "properties": { "src": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the source.", "title": "Src" }, "dest": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the destination.", "title": "Dest" } @@ -14598,50 +14610,53 @@ "properties": { "vxlan_strip": { "type": "boolean", - "description": "Strip VXLAN encapsulation header.", + "description": "Strip VXLAN encapsulation header.\n`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.\n`mpls_pop_all` takes precedence.", "title": "VxLAN Strip" }, - "gre_strip": { - "type": "boolean", - "description": "Strip GRE encapsulation header.", - "title": "Gre Strip" - }, "gre": { - "type": "object", - "properties": { - "destination": { - "description": "Destination IP address of tunnel packets.", - "type": "string", - "title": "Destination" - }, - "source": { - "description": "Source IP address of tunnel packets.", - "type": "string", - "title": "Source" - }, - "protocol": { - "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", - "title": "Protocol" + "type": "array", + "items": { + "type": "object", + "properties": { + "strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Strip" + }, + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets. Applied only when destination is defined.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } }, - "feature_header_length": { - "description": "Feature header length in bytes.", - "type": "integer", - "minimum": 1, - "maximum": 16, - "title": "Feature Header Length" + "required": [ + "strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} } }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, "title": "Gre" } }, - "required": [ - "gre_strip" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} @@ -14668,12 +14683,12 @@ "properties": { "dot1br_strip": { "type": "boolean", - "description": "Remove a 802.1 BR tag in packet header.", + "description": "Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.", "title": "dot1br Strip" }, "vn_tag_strip": { "type": "boolean", - "description": "Remove a VN-tag in packet header.", + "description": "Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.", "title": "VN Tag Strip" } }, @@ -14755,6 +14770,11 @@ "description": "Tool groups for the interface.", "title": "Groups" }, + "dot1q_remove_outer_vlan_tag": { + "type": "string", + "description": "Indices of vlan tags to be removed.\nRange: 1-2", + "title": "Dot1Q Remove Outer VLAN Tag" + }, "dzgre_preserve": { "type": "boolean", "description": "Preserve the DzGRE header.", @@ -17789,11 +17809,13 @@ "properties": { "src": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the source.", "title": "Src" }, "dest": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the destination.", "title": "Dest" } @@ -17812,43 +17834,46 @@ "properties": { "vxlan_strip": { "type": "boolean", - "description": "Strip VXLAN encapsulation header.", + "description": "Strip VXLAN encapsulation header.\n`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.\n`mpls_pop_all` takes precedence.", "title": "VxLAN Strip" }, - "gre_strip": { - "type": "boolean", - "description": "Strip GRE encapsulation header.", - "title": "Gre Strip" - }, "gre": { - "type": "object", - "properties": { - "destination": { - "description": "Destination IP address of tunnel packets.", - "type": "string", - "title": "Destination" - }, - "source": { - "description": "Source IP address of tunnel packets.", - "type": "string", - "title": "Source" + "type": "array", + "items": { + "type": "object", + "properties": { + "strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Strip" + }, + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets. Applied only when destination is defined.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + } }, - "protocol": { - "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", - "title": "Protocol" + "required": [ + "strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} } }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, "title": "Gre" } }, - "required": [ - "gre_strip" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} @@ -17875,12 +17900,12 @@ "properties": { "dot1br_strip": { "type": "boolean", - "description": "Remove a 802.1 BR tag in packet header.", + "description": "Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.", "title": "dot1br Strip" }, "vn_tag_strip": { "type": "boolean", - "description": "Remove a VN-tag in packet header.", + "description": "Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.", "title": "VN Tag Strip" } }, @@ -17962,6 +17987,11 @@ "description": "Tool groups for the interface.", "title": "Groups" }, + "dot1q_remove_outer_vlan_tag": { + "type": "string", + "description": "Indices of vlan tags to be removed.\nRange: 1-2", + "title": "Dot1Q Remove Outer VLAN Tag" + }, "dzgre_preserve": { "type": "boolean", "description": "Preserve the DzGRE header.", @@ -24632,11 +24662,13 @@ "properties": { "src": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the source.", "title": "Src" }, "dest": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the destination.", "title": "Dest" } @@ -24655,43 +24687,46 @@ "properties": { "vxlan_strip": { "type": "boolean", - "description": "Strip VXLAN encapsulation header.", + "description": "Strip VXLAN encapsulation header.\n`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.\n`mpls_pop_all` takes precedence.", "title": "VxLAN Strip" }, - "gre_strip": { - "type": "boolean", - "description": "Strip GRE encapsulation header.", - "title": "Gre Strip" - }, "gre": { - "type": "object", - "properties": { - "destination": { - "description": "Destination IP address of tunnel packets.", - "type": "string", - "title": "Destination" - }, - "source": { - "description": "Source IP address of tunnel packets.", - "type": "string", - "title": "Source" + "type": "array", + "items": { + "type": "object", + "properties": { + "strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Strip" + }, + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets. Applied only when destination is defined.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + } }, - "protocol": { - "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", - "title": "Protocol" + "required": [ + "strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} } }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, "title": "Gre" } }, - "required": [ - "gre_strip" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} @@ -24718,12 +24753,12 @@ "properties": { "dot1br_strip": { "type": "boolean", - "description": "Remove a 802.1 BR tag in packet header.", + "description": "Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.", "title": "dot1br Strip" }, "vn_tag_strip": { "type": "boolean", - "description": "Remove a VN-tag in packet header.", + "description": "Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.", "title": "VN Tag Strip" } }, @@ -24805,6 +24840,11 @@ "description": "Tool groups for the interface.", "title": "Groups" }, + "dot1q_remove_outer_vlan_tag": { + "type": "string", + "description": "Indices of vlan tags to be removed.\nRange: 1-2", + "title": "Dot1Q Remove Outer VLAN Tag" + }, "dzgre_preserve": { "type": "boolean", "description": "Preserve the DzGRE header.", @@ -35020,11 +35060,13 @@ "properties": { "src": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the source.", "title": "Src" }, "dest": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the destination.", "title": "Dest" } @@ -35043,50 +35085,53 @@ "properties": { "vxlan_strip": { "type": "boolean", - "description": "Strip VXLAN encapsulation header.", + "description": "Strip VXLAN encapsulation header.\n`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.\n`mpls_pop_all` takes precedence.", "title": "VxLAN Strip" }, - "gre_strip": { - "type": "boolean", - "description": "Strip GRE encapsulation header.", - "title": "Gre Strip" - }, "gre": { - "type": "object", - "properties": { - "destination": { - "description": "Destination IP address of tunnel packets.", - "type": "string", - "title": "Destination" - }, - "source": { - "description": "Source IP address of tunnel packets.", - "type": "string", - "title": "Source" - }, - "protocol": { - "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", - "title": "Protocol" + "type": "array", + "items": { + "type": "object", + "properties": { + "strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Strip" + }, + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets. Applied only when destination is defined.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } }, - "feature_header_length": { - "description": "Feature header length in bytes.", - "type": "integer", - "minimum": 1, - "maximum": 16, - "title": "Feature Header Length" + "required": [ + "strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} } }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, "title": "Gre" } }, - "required": [ - "gre_strip" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} @@ -35113,12 +35158,12 @@ "properties": { "dot1br_strip": { "type": "boolean", - "description": "Remove a 802.1 BR tag in packet header.", + "description": "Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.", "title": "dot1br Strip" }, "vn_tag_strip": { "type": "boolean", - "description": "Remove a VN-tag in packet header.", + "description": "Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.", "title": "VN Tag Strip" } }, @@ -35200,6 +35245,11 @@ "description": "Tool groups for the interface.", "title": "Groups" }, + "dot1q_remove_outer_vlan_tag": { + "type": "string", + "description": "Indices of vlan tags to be removed.\nRange: 1-2", + "title": "Dot1Q Remove Outer VLAN Tag" + }, "dzgre_preserve": { "type": "boolean", "description": "Preserve the DzGRE header.", @@ -53993,11 +54043,13 @@ "properties": { "src": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the source.", "title": "Src" }, "dest": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the destination.", "title": "Dest" } @@ -54016,50 +54068,53 @@ "properties": { "vxlan_strip": { "type": "boolean", - "description": "Strip VXLAN encapsulation header.", + "description": "Strip VXLAN encapsulation header.\n`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.\n`mpls_pop_all` takes precedence.", "title": "VxLAN Strip" }, - "gre_strip": { - "type": "boolean", - "description": "Strip GRE encapsulation header.", - "title": "Gre Strip" - }, "gre": { - "type": "object", - "properties": { - "destination": { - "description": "Destination IP address of tunnel packets.", - "type": "string", - "title": "Destination" - }, - "source": { - "description": "Source IP address of tunnel packets.", - "type": "string", - "title": "Source" - }, - "protocol": { - "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", - "title": "Protocol" + "type": "array", + "items": { + "type": "object", + "properties": { + "strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Strip" + }, + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets. Applied only when destination is defined.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } }, - "feature_header_length": { - "description": "Feature header length in bytes.", - "type": "integer", - "minimum": 1, - "maximum": 16, - "title": "Feature Header Length" + "required": [ + "strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} } }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, "title": "Gre" } }, - "required": [ - "gre_strip" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} @@ -54086,12 +54141,12 @@ "properties": { "dot1br_strip": { "type": "boolean", - "description": "Remove a 802.1 BR tag in packet header.", + "description": "Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.", "title": "dot1br Strip" }, "vn_tag_strip": { "type": "boolean", - "description": "Remove a VN-tag in packet header.", + "description": "Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.", "title": "VN Tag Strip" } }, @@ -54173,6 +54228,11 @@ "description": "Tool groups for the interface.", "title": "Groups" }, + "dot1q_remove_outer_vlan_tag": { + "type": "string", + "description": "Indices of vlan tags to be removed.\nRange: 1-2", + "title": "Dot1Q Remove Outer VLAN Tag" + }, "dzgre_preserve": { "type": "boolean", "description": "Preserve the DzGRE header.", @@ -57207,11 +57267,13 @@ "properties": { "src": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the source.", "title": "Src" }, "dest": { "type": "string", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", "description": "MAC address for the destination.", "title": "Dest" } @@ -57230,43 +57292,46 @@ "properties": { "vxlan_strip": { "type": "boolean", - "description": "Strip VXLAN encapsulation header.", + "description": "Strip VXLAN encapsulation header.\n`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.\n`mpls_pop_all` takes precedence.", "title": "VxLAN Strip" }, - "gre_strip": { - "type": "boolean", - "description": "Strip GRE encapsulation header.", - "title": "Gre Strip" - }, "gre": { - "type": "object", - "properties": { - "destination": { - "description": "Destination IP address of tunnel packets.", - "type": "string", - "title": "Destination" - }, - "source": { - "description": "Source IP address of tunnel packets.", - "type": "string", - "title": "Source" + "type": "array", + "items": { + "type": "object", + "properties": { + "strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Strip" + }, + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets. Applied only when destination is defined.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + } }, - "protocol": { - "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", - "title": "Protocol" + "required": [ + "strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} } }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, "title": "Gre" } }, - "required": [ - "gre_strip" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} @@ -57293,12 +57358,12 @@ "properties": { "dot1br_strip": { "type": "boolean", - "description": "Remove a 802.1 BR tag in packet header.", + "description": "Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.", "title": "dot1br Strip" }, "vn_tag_strip": { "type": "boolean", - "description": "Remove a VN-tag in packet header.", + "description": "Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.", "title": "VN Tag Strip" } }, @@ -57380,6 +57445,11 @@ "description": "Tool groups for the interface.", "title": "Groups" }, + "dot1q_remove_outer_vlan_tag": { + "type": "string", + "description": "Indices of vlan tags to be removed.\nRange: 1-2", + "title": "Dot1Q Remove Outer VLAN Tag" + }, "dzgre_preserve": { "type": "boolean", "description": "Preserve the DzGRE header.", From a51a5870d0ab62573cae296f2dccc595494adee3 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Tue, 16 Jul 2024 18:32:38 +0530 Subject: [PATCH 04/32] Fixing comments --- .../docs/tables/ethernet-interfaces.md | 18 +++++++--- .../docs/tables/port-channel-interfaces.md | 18 +++++++--- .../schema/eos_cli_config_gen.jsonschema.json | 10 ++++-- .../schema/eos_cli_config_gen.schema.yml | 18 ++++++++-- .../ethernet_interfaces.schema.yml | 9 ++++- .../port_channel_interfaces.schema.yml | 9 ++++- .../schema/eos_designs.jsonschema.json | 35 +++++++++++++++---- 7 files changed, 94 insertions(+), 23 deletions(-) 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 c7eb9084369..8ff109166ae 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 @@ -407,9 +407,9 @@ | [        vlans](## "ethernet_interfaces.[].switchport.port_security.vlans") | List, items: Dictionary | | | | | | [          - range](## "ethernet_interfaces.[].switchport.port_security.vlans.[].range") | String | Required, Unique | | | VLAN ID or range(s) of VLAN IDs, <1-4094>.
Example:
- 3
- 1,3
- 1-10
| | [            mac_address_maximum](## "ethernet_interfaces.[].switchport.port_security.vlans.[].mac_address_maximum") | Integer | | | | | - | [      tap](## "ethernet_interfaces.[].switchport.tap") | Dictionary | | | | | - | [        allowed_vlan](## "ethernet_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | - | [        default](## "ethernet_interfaces.[].switchport.tap.default") | Dictionary | | | | | + | [      tap](## "ethernet_interfaces.[].switchport.tap") | Dictionary | | | | In tap mode, the interface operates as a tap port.
Tap ports receive traffic for replication on one or more tool ports. | + | [        allowed_vlan](## "ethernet_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range(s) of VLAN IDs within range 1-4094. | + | [        default](## "ethernet_interfaces.[].switchport.tap.default") | Dictionary | | | | Default tap destination config. | | [          groups](## "ethernet_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.groups.[]") | String | | | | | | [          interfaces](## "ethernet_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. | @@ -434,7 +434,7 @@ | [              destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].destination") | String | | | | Destination IP address of tunnel packets. | | [              source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | | [              protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | - | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | | + | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | | [          dot1br_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. | @@ -1200,10 +1200,15 @@ # - 1-10 - range: mac_address_maximum: + + # In tap mode, the interface operates as a tap port. + # Tap ports receive traffic for replication on one or more tool ports. tap: - # VLAN ID or range of VLAN IDs within range 1-4094. + # VLAN ID or range(s) of VLAN IDs within range 1-4094. allowed_vlan: + + # Default tap destination config. default: # Tap group names for the interface. @@ -1262,6 +1267,9 @@ # Protocol type in GRE header. # Protocol range: 0x0000-0xFFFF protocol: + + # In tool mode, the interface operates as a tool port. + # Tool ports replicate traffic received by tap ports. tool: # Pop all MPLS labels. 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 79066990904..378eb3a5f9d 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 @@ -246,9 +246,9 @@ | [        enable](## "port_channel_interfaces.[].sflow.egress.enable") | Boolean | | | | | | [        unmodified_enable](## "port_channel_interfaces.[].sflow.egress.unmodified_enable") | Boolean | | | | | | [    switchport](## "port_channel_interfaces.[].switchport") | Dictionary | | | | | - | [      tap](## "port_channel_interfaces.[].switchport.tap") | Dictionary | | | | | - | [        allowed_vlan](## "port_channel_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | - | [        default](## "port_channel_interfaces.[].switchport.tap.default") | Dictionary | | | | | + | [      tap](## "port_channel_interfaces.[].switchport.tap") | Dictionary | | | | In tap mode, the interface operates as a tap port.
Tap ports receive traffic for replication on one or more tool ports. | + | [        allowed_vlan](## "port_channel_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range(s) of VLAN IDs within range 1-4094. | + | [        default](## "port_channel_interfaces.[].switchport.tap.default") | Dictionary | | | | Default tap destination config. | | [          groups](## "port_channel_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.groups.[]") | String | | | | | | [          interfaces](## "port_channel_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. | @@ -274,7 +274,7 @@ | [              source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | | [              protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | | [              feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | - | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | | + | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | | [          dot1br_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. | @@ -755,10 +755,15 @@ enable: unmodified_enable: switchport: + + # In tap mode, the interface operates as a tap port. + # Tap ports receive traffic for replication on one or more tool ports. tap: - # VLAN ID or range of VLAN IDs within range 1-4094. + # VLAN ID or range(s) of VLAN IDs within range 1-4094. allowed_vlan: + + # Default tap destination config. default: # Tap group names for the interface. @@ -820,6 +825,9 @@ # Feature header length in bytes. feature_header_length: + + # In tool mode, the interface operates as a tool port. + # Tool ports replicate traffic received by tap ports. tool: # Pop all MPLS labels. diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json index b43d0c2c4f1..44a2c4b9dee 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json @@ -5725,14 +5725,16 @@ "title": "Port Security" }, "tap": { + "description": "In tap mode, the interface operates as a tap port.\nTap ports receive traffic for replication on one or more tool ports.", "type": "object", "properties": { "allowed_vlan": { "type": "string", - "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "description": "VLAN ID or range(s) of VLAN IDs within range 1-4094.", "title": "Allowed VLAN" }, "default": { + "description": "Default tap destination config.", "type": "object", "properties": { "groups": { @@ -5910,6 +5912,7 @@ "title": "Tap" }, "tool": { + "description": "In tool mode, the interface operates as a tool port.\nTool ports replicate traffic received by tap ports.", "type": "object", "properties": { "mpls_pop_all": { @@ -16123,14 +16126,16 @@ "type": "object", "properties": { "tap": { + "description": "In tap mode, the interface operates as a tap port.\nTap ports receive traffic for replication on one or more tool ports.", "type": "object", "properties": { "allowed_vlan": { "type": "string", - "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "description": "VLAN ID or range(s) of VLAN IDs within range 1-4094.", "title": "Allowed VLAN" }, "default": { + "description": "Default tap destination config.", "type": "object", "properties": { "groups": { @@ -16315,6 +16320,7 @@ "title": "Tap" }, "tool": { + "description": "In tool mode, the interface operates as a tool port.\nTool ports replicate traffic received by tap ports.", "type": "object", "properties": { "mpls_pop_all": { 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 98e90020bb1..e590057535a 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 @@ -3440,14 +3440,18 @@ keys: convert_types: - str tap: + description: 'In tap mode, the interface operates as a tap port. + + Tap ports receive traffic for replication on one or more tool ports.' type: dict keys: allowed_vlan: type: str convert_types: - int - description: VLAN ID or range of VLAN IDs within range 1-4094. + description: VLAN ID or range(s) of VLAN IDs within range 1-4094. default: + description: Default tap destination config. type: dict keys: groups: @@ -3551,6 +3555,9 @@ keys: Protocol range: 0x0000-0xFFFF' tool: + description: 'In tool mode, the interface operates as a tool port. + + Tool ports replicate traffic received by tap ports.' type: dict keys: mpls_pop_all: @@ -9502,14 +9509,18 @@ keys: type: dict keys: tap: + description: 'In tap mode, the interface operates as a tap port. + + Tap ports receive traffic for replication on one or more tool ports.' type: dict keys: allowed_vlan: type: str convert_types: - int - description: VLAN ID or range of VLAN IDs within range 1-4094. + description: VLAN ID or range(s) of VLAN IDs within range 1-4094. default: + description: Default tap destination config. type: dict keys: groups: @@ -9620,6 +9631,9 @@ keys: min: 1 max: 16 tool: + description: 'In tool mode, the interface operates as a tool port. + + Tool ports replicate traffic received by tap ports.' type: dict keys: mpls_pop_all: 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 b4dd4a8fce5..a75135c9917 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 @@ -1426,14 +1426,18 @@ keys: convert_types: - str tap: + description: |- + In tap mode, the interface operates as a tap port. + Tap ports receive traffic for replication on one or more tool ports. type: dict keys: allowed_vlan: type: str convert_types: - int - description: VLAN ID or range of VLAN IDs within range 1-4094. + description: VLAN ID or range(s) of VLAN IDs within range 1-4094. default: + description: Default tap destination config. type: dict keys: groups: @@ -1533,6 +1537,9 @@ keys: Protocol type in GRE header. Protocol range: 0x0000-0xFFFF tool: + description: |- + In tool mode, the interface operates as a tool port. + Tool ports replicate traffic received by tap ports. type: dict keys: mpls_pop_all: 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 36b0ef5213b..a2472612546 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 @@ -841,14 +841,18 @@ keys: type: dict keys: tap: + description: |- + In tap mode, the interface operates as a tap port. + Tap ports receive traffic for replication on one or more tool ports. type: dict keys: allowed_vlan: type: str convert_types: - int - description: VLAN ID or range of VLAN IDs within range 1-4094. + description: VLAN ID or range(s) of VLAN IDs within range 1-4094. default: + description: Default tap destination config. type: dict keys: groups: @@ -955,6 +959,9 @@ keys: min: 1 max: 16 tool: + description: |- + In tool mode, the interface operates as a tool port. + Tool ports replicate traffic received by tap ports. type: dict keys: mpls_pop_all: diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json index b5d29cd36ac..6eb93cb6604 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json @@ -11285,14 +11285,16 @@ "title": "Port Security" }, "tap": { + "description": "In tap mode, the interface operates as a tap port.\nTap ports receive traffic for replication on one or more tool ports.", "type": "object", "properties": { "allowed_vlan": { "type": "string", - "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "description": "VLAN ID or range(s) of VLAN IDs within range 1-4094.", "title": "Allowed VLAN" }, "default": { + "description": "Default tap destination config.", "type": "object", "properties": { "groups": { @@ -11470,6 +11472,7 @@ "title": "Tap" }, "tool": { + "description": "In tool mode, the interface operates as a tool port.\nTool ports replicate traffic received by tap ports.", "type": "object", "properties": { "mpls_pop_all": { @@ -14479,14 +14482,16 @@ "type": "object", "properties": { "tap": { + "description": "In tap mode, the interface operates as a tap port.\nTap ports receive traffic for replication on one or more tool ports.", "type": "object", "properties": { "allowed_vlan": { "type": "string", - "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "description": "VLAN ID or range(s) of VLAN IDs within range 1-4094.", "title": "Allowed VLAN" }, "default": { + "description": "Default tap destination config.", "type": "object", "properties": { "groups": { @@ -14671,6 +14676,7 @@ "title": "Tap" }, "tool": { + "description": "In tool mode, the interface operates as a tool port.\nTool ports replicate traffic received by tap ports.", "type": "object", "properties": { "mpls_pop_all": { @@ -17703,14 +17709,16 @@ "title": "Port Security" }, "tap": { + "description": "In tap mode, the interface operates as a tap port.\nTap ports receive traffic for replication on one or more tool ports.", "type": "object", "properties": { "allowed_vlan": { "type": "string", - "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "description": "VLAN ID or range(s) of VLAN IDs within range 1-4094.", "title": "Allowed VLAN" }, "default": { + "description": "Default tap destination config.", "type": "object", "properties": { "groups": { @@ -17888,6 +17896,7 @@ "title": "Tap" }, "tool": { + "description": "In tool mode, the interface operates as a tool port.\nTool ports replicate traffic received by tap ports.", "type": "object", "properties": { "mpls_pop_all": { @@ -24556,14 +24565,16 @@ "title": "Port Security" }, "tap": { + "description": "In tap mode, the interface operates as a tap port.\nTap ports receive traffic for replication on one or more tool ports.", "type": "object", "properties": { "allowed_vlan": { "type": "string", - "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "description": "VLAN ID or range(s) of VLAN IDs within range 1-4094.", "title": "Allowed VLAN" }, "default": { + "description": "Default tap destination config.", "type": "object", "properties": { "groups": { @@ -24741,6 +24752,7 @@ "title": "Tap" }, "tool": { + "description": "In tool mode, the interface operates as a tool port.\nTool ports replicate traffic received by tap ports.", "type": "object", "properties": { "mpls_pop_all": { @@ -34954,14 +34966,16 @@ "type": "object", "properties": { "tap": { + "description": "In tap mode, the interface operates as a tap port.\nTap ports receive traffic for replication on one or more tool ports.", "type": "object", "properties": { "allowed_vlan": { "type": "string", - "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "description": "VLAN ID or range(s) of VLAN IDs within range 1-4094.", "title": "Allowed VLAN" }, "default": { + "description": "Default tap destination config.", "type": "object", "properties": { "groups": { @@ -35146,6 +35160,7 @@ "title": "Tap" }, "tool": { + "description": "In tool mode, the interface operates as a tool port.\nTool ports replicate traffic received by tap ports.", "type": "object", "properties": { "mpls_pop_all": { @@ -53937,14 +53952,16 @@ "type": "object", "properties": { "tap": { + "description": "In tap mode, the interface operates as a tap port.\nTap ports receive traffic for replication on one or more tool ports.", "type": "object", "properties": { "allowed_vlan": { "type": "string", - "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "description": "VLAN ID or range(s) of VLAN IDs within range 1-4094.", "title": "Allowed VLAN" }, "default": { + "description": "Default tap destination config.", "type": "object", "properties": { "groups": { @@ -54129,6 +54146,7 @@ "title": "Tap" }, "tool": { + "description": "In tool mode, the interface operates as a tool port.\nTool ports replicate traffic received by tap ports.", "type": "object", "properties": { "mpls_pop_all": { @@ -57161,14 +57179,16 @@ "title": "Port Security" }, "tap": { + "description": "In tap mode, the interface operates as a tap port.\nTap ports receive traffic for replication on one or more tool ports.", "type": "object", "properties": { "allowed_vlan": { "type": "string", - "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "description": "VLAN ID or range(s) of VLAN IDs within range 1-4094.", "title": "Allowed VLAN" }, "default": { + "description": "Default tap destination config.", "type": "object", "properties": { "groups": { @@ -57346,6 +57366,7 @@ "title": "Tap" }, "tool": { + "description": "In tool mode, the interface operates as a tool port.\nTool ports replicate traffic received by tap ports.", "type": "object", "properties": { "mpls_pop_all": { From 7e799866e09f622a146cb1026a5c679daea00b2e Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 22 Jul 2024 16:31:08 +0530 Subject: [PATCH 05/32] Fix test-case for protocol --- .../documentation/devices/ethernet-interfaces.md | 4 ++-- .../devices/port-channel-interfaces.md | 4 ++-- .../intended/configs/ethernet-interfaces.cfg | 4 ++-- .../intended/configs/port-channel-interfaces.cfg | 4 ++-- .../inventory/host_vars/ethernet-interfaces.yml | 4 ++-- .../host_vars/port-channel-interfaces.yml | 4 ++-- .../docs/tables/ethernet-interfaces.md | 4 ++-- .../docs/tables/port-channel-interfaces.md | 4 ++-- .../schema/eos_cli_config_gen.jsonschema.json | 4 ++-- .../schema/eos_cli_config_gen.schema.yml | 4 ++-- .../ethernet_interfaces.schema.yml | 2 +- .../port_channel_interfaces.schema.yml | 4 ++-- .../schema/eos_designs.jsonschema.json | 14 +++++++------- 13 files changed, 30 insertions(+), 30 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md index da3baf724aa..46fe2a89aa1 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md @@ -368,8 +368,8 @@ interface Ethernet1 switchport tap mpls pop all switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0000 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0001 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md index f4d9d77d413..6b1426cac21 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md @@ -517,8 +517,8 @@ interface Port-Channel100 switchport tap mpls pop all switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0000 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0010 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg index e6aeacae14c..47908c852ca 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg @@ -21,8 +21,8 @@ interface Ethernet1 switchport tap mpls pop all switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0000 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0001 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg index 75fba704f2a..362cd0937ce 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg @@ -171,8 +171,8 @@ interface Port-Channel100 switchport tap mpls pop all switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0000 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0010 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml index 5564d2b3cd8..ba6b0314f26 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml @@ -70,10 +70,10 @@ ethernet_interfaces: source: 1.1.1.2 protocol: "0x0000" - strip: true - protocol: "0x0000" + protocol: "0x0001" - strip: true destination: 2.1.1.2 - protocol: "0x0000" + protocol: "0x0010" tool: mpls_pop_all: true encapsulation: diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml index 80ec936ff65..560e6d4539c 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml @@ -145,10 +145,10 @@ port_channel_interfaces: source: 1.1.1.2 protocol: "0x0000" - strip: true - protocol: "0x0000" + protocol: "0x0010" - strip: true destination: 2.1.1.2 - protocol: "0x0000" + protocol: "0x0001" tool: mpls_pop_all: true encapsulation: 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 8ff109166ae..8195348a241 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 @@ -433,7 +433,7 @@ | [            - strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].strip") | Boolean | Required | | | Strip GRE encapsulation header. | | [              destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].destination") | String | | | | Destination IP address of tunnel packets. | | [              source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | - | [              protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | + | [              protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. It should be unique. | | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | @@ -1265,7 +1265,7 @@ source: # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF + # Protocol range: 0x0000-0xFFFF. It should be unique. protocol: # In tool mode, the interface operates as a tool port. 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 378eb3a5f9d..d3ac5cedd0b 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 @@ -272,7 +272,7 @@ | [            - strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].strip") | Boolean | Required | | | Strip GRE encapsulation header. | | [              destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].destination") | String | | | | Destination IP address of tunnel packets. | | [              source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | - | [              protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | + | [              protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. It should be unique. | | [              feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | @@ -820,7 +820,7 @@ source: # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF + # Protocol range: 0x0000-0xFFFF. It should be unique. protocol: # Feature header length in bytes. diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json index 44a2c4b9dee..10d7489e603 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json @@ -5883,7 +5883,7 @@ }, "protocol": { "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF. It should be unique.", "title": "Protocol" } }, @@ -16284,7 +16284,7 @@ }, "protocol": { "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF. It should be unique.", "title": "Protocol" }, "feature_header_length": { 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 e590057535a..06cdb9ab7ca 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 @@ -3553,7 +3553,7 @@ keys: type: str description: 'Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF' + Protocol range: 0x0000-0xFFFF. It should be unique.' tool: description: 'In tool mode, the interface operates as a tool port. @@ -9622,7 +9622,7 @@ keys: type: str description: 'Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF' + Protocol range: 0x0000-0xFFFF. It should be unique.' feature_header_length: description: Feature header length in bytes. type: int 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 a75135c9917..955a0561232 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 @@ -1535,7 +1535,7 @@ keys: type: str description: |- Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF + Protocol range: 0x0000-0xFFFF. It should be unique. tool: description: |- In tool mode, the interface operates as a tool port. 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 a2472612546..135b59142ac 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 @@ -946,11 +946,11 @@ keys: source: description: Source IP address of tunnel packets. Applied only when destination is defined. type: str - protocol: + protocol: type: str description: |- Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF + Protocol range: 0x0000-0xFFFF. It should be unique. feature_header_length: description: Feature header length in bytes. type: int diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json index 6eb93cb6604..d596efc8d6c 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json @@ -11443,7 +11443,7 @@ }, "protocol": { "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF. It should be unique.", "title": "Protocol" } }, @@ -14640,7 +14640,7 @@ }, "protocol": { "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF. It should be unique.", "title": "Protocol" }, "feature_header_length": { @@ -17867,7 +17867,7 @@ }, "protocol": { "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF. It should be unique.", "title": "Protocol" } }, @@ -24723,7 +24723,7 @@ }, "protocol": { "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF. It should be unique.", "title": "Protocol" } }, @@ -35124,7 +35124,7 @@ }, "protocol": { "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF. It should be unique.", "title": "Protocol" }, "feature_header_length": { @@ -54110,7 +54110,7 @@ }, "protocol": { "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF. It should be unique.", "title": "Protocol" }, "feature_header_length": { @@ -57337,7 +57337,7 @@ }, "protocol": { "type": "string", - "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF. It should be unique.", "title": "Protocol" } }, From 86c2d871466c6c9aec29e06c365df9158356129c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 11:04:01 +0000 Subject: [PATCH 06/32] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../schema/schema_fragments/port_channel_interfaces.schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 135b59142ac..9d973b5442d 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 @@ -946,7 +946,7 @@ keys: source: description: Source IP address of tunnel packets. Applied only when destination is defined. type: str - protocol: + protocol: type: str description: |- Protocol type in GRE header. From 846d64111c8ce343b798e8ae59c3d7f8e8aec8c5 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 22 Jul 2024 18:05:49 +0530 Subject: [PATCH 07/32] Fixing coverage --- .../devices/ethernet-interfaces.md | 8 +++++++ .../devices/port-channel-interfaces.md | 8 +++++++ .../intended/configs/ethernet-interfaces.cfg | 8 +++++++ .../configs/port-channel-interfaces.cfg | 8 +++++++ .../host_vars/ethernet-interfaces.yml | 22 ++++++++++++++++++- .../host_vars/port-channel-interfaces.yml | 22 +++++++++++++++++++ 6 files changed, 75 insertions(+), 1 deletion(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md index 46fe2a89aa1..5c4f832187b 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md @@ -370,6 +370,7 @@ interface Ethernet1 switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip + switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -458,6 +459,13 @@ interface Ethernet4 shutdown mtu 9100 no switchport + switchport tap identity 5 + switchport tap mac-address dest 01:00:00:00:00:00 + switchport tap encapsulation vxlan strip + switchport tool identity dot1q + switchport tool identity qinq source dzgre policy inner port + switchport tap truncation + switchport tool truncation 160 snmp trap link-change ipv6 enable ipv6 address 2020::2020/64 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md index 6b1426cac21..f738f54d3ed 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md @@ -519,6 +519,7 @@ interface Port-Channel100 switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip + switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -541,6 +542,13 @@ interface Port-Channel100.101 logging event link-status mtu 1500 encapsulation dot1q vlan 101 + switchport tap identity 3 inner 10 + switchport tap mac-address dest 01:00:00:00:00:00 + switchport tap encapsulation vxlan strip + switchport tool identity dot1q + switchport tool identity dot1q source dzgre policy + switchport tap truncation 120 + switchport tool truncation ip address 10.1.1.3/31 ! interface Port-Channel100.102 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg index 47908c852ca..cb240bdee0e 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg @@ -23,6 +23,7 @@ interface Ethernet1 switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip + switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -111,6 +112,13 @@ interface Ethernet4 shutdown mtu 9100 no switchport + switchport tap identity 5 + switchport tap mac-address dest 01:00:00:00:00:00 + switchport tap encapsulation vxlan strip + switchport tool identity dot1q + switchport tool identity qinq source dzgre policy inner port + switchport tap truncation + switchport tool truncation 160 snmp trap link-change ipv6 enable ipv6 address 2020::2020/64 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg index 362cd0937ce..76557eed934 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg @@ -173,6 +173,7 @@ interface Port-Channel100 switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip + switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -195,6 +196,13 @@ interface Port-Channel100.101 logging event link-status mtu 1500 encapsulation dot1q vlan 101 + switchport tap identity 3 inner 10 + switchport tap mac-address dest 01:00:00:00:00:00 + switchport tap encapsulation vxlan strip + switchport tool identity dot1q + switchport tool identity dot1q source dzgre policy + switchport tap truncation 120 + switchport tool truncation ip address 10.1.1.3/31 ! interface Port-Channel100.102 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml index ba6b0314f26..c5676e63653 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml @@ -62,7 +62,6 @@ ethernet_interfaces: dest: 01:00:00:00:00:00 src: 01:23:45:67:89:ab encapsulation: - vxlan_strip: true gre: - strip: true - strip: true @@ -74,6 +73,10 @@ ethernet_interfaces: - strip: true destination: 2.1.1.2 protocol: "0x0010" + - strip: false + - strip: true + destination: 2.1.1.3 + source: 2.1.1.4 tool: mpls_pop_all: true encapsulation: @@ -232,6 +235,23 @@ ethernet_interfaces: boundaries: - boundary: ff00::/16 - boundary: ff01::/16 + switchport: + tap: + identity: + port_id: 5 + mac_address: + dest: 01:00:00:00:00:00 + encapsulation: + vxlan_strip: true + truncation: + enabled: true + tool: + identity: + tag: dot1q + qinq_dzgre_source: policy inner port + truncation: + enabled: true + size: 160 - name: Ethernet5 description: Molecule Routing diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml index 560e6d4539c..af024d56915 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml @@ -149,6 +149,10 @@ port_channel_interfaces: - strip: true destination: 2.1.1.2 protocol: "0x0001" + - strip: false + - strip: true + destination: 1.1.1.3 + source: 1.1.1.4 tool: mpls_pop_all: true encapsulation: @@ -177,6 +181,24 @@ port_channel_interfaces: mtu: 1500 ip_address: 10.1.1.3/31 encapsulation_dot1q_vlan: 101 + switchport: + tap: + identity: + port_id: 3 + inner_port_id: 10 + mac_address: + dest: 01:00:00:00:00:00 + encapsulation: + vxlan_strip: true + truncation: + enabled: true + size: 120 + tool: + truncation: + enabled: true + identity: + tag: dot1q + dot1q_dzgre_source: policy - name: Port-Channel100.102 type: l3dot1q From 1bedd6b8cf7e34af1a3f1e60d326e3616d6dcf4d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 13:24:22 +0000 Subject: [PATCH 08/32] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../eos_cli_config_gen/docs/tables/ethernet-interfaces.md | 4 ++-- .../eos_cli_config_gen/docs/tables/port-channel-interfaces.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 1e79cc06593..5fed060a27b 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 @@ -431,8 +431,8 @@ | [          enabled](## "ethernet_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | | [          size](## "ethernet_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "ethernet_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | - | [          src](## "ethernet_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ | MAC address for the source. | - | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | Pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ | MAC address for the destination. | + | [          src](## "ethernet_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | + | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | List, items: Dictionary | | | | | 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 d8f00efe5af..d03be11eb7c 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 @@ -265,8 +265,8 @@ | [          enabled](## "port_channel_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | | [          size](## "port_channel_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "port_channel_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | - | [          src](## "port_channel_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ | MAC address for the source. | - | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | Pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ | MAC address for the destination. | + | [          src](## "port_channel_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | + | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | List, items: Dictionary | | | | | From 53b649d8812dcfed78d1e30a3468ad97a9d50b83 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Wed, 7 Aug 2024 12:12:40 +0530 Subject: [PATCH 09/32] Fixing template --- .../j2templates/eos/ethernet-interfaces.j2 | 5 +++-- .../j2templates/eos/port-channel-interfaces.j2 | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) 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 92001a82150..443789d142e 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 @@ -177,6 +177,7 @@ interface {{ ethernet_interface.name }} {% endif %} {{ tap_mac_address_cli }} {% endif %} +{# The position of "mpls_pop_all" does not match the EOS CLI to implement this "elif" with "vxlan_strip" #} {% if ethernet_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} switchport tap mpls pop all {% elif ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} @@ -224,14 +225,14 @@ interface {{ ethernet_interface.name }} {% elif ethernet_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} switchport tool identity qinq source dzgre {{ ethernet_interface.switchport.tool.identity.qinq_dzgre_source }} {% endif %} -{% if ethernet_interface.switchport.tap.truncation.enabled is arista.avd.defined %} +{% if ethernet_interface.switchport.tap.truncation.enabled is arista.avd.defined(true) %} {% set tap_truncation_cli = "switchport tap truncation" %} {% if ethernet_interface.switchport.tap.truncation.size is arista.avd.defined %} {% set tap_truncation_cli = tap_truncation_cli ~ " " ~ ethernet_interface.switchport.tap.truncation.size %} {% endif %} {{ tap_truncation_cli }} {% endif %} -{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined %} +{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} {% set tool_truncation_cli = "switchport tool truncation" %} {% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} {% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} 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 d2cd7753744..b38c195e747 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 @@ -125,6 +125,7 @@ interface {{ port_channel_interface.name }} {% endif %} {{ tap_mac_address_cli }} {% endif %} +{# The position of "mpls_pop_all" does not match the EOS CLI to implement this "elif" with "vxlan_strip" #} {% if port_channel_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} switchport tap mpls pop all {% elif port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} @@ -172,14 +173,14 @@ interface {{ port_channel_interface.name }} {% elif port_channel_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} switchport tool identity qinq source dzgre {{ port_channel_interface.switchport.tool.identity.qinq_dzgre_source }} {% endif %} -{% if port_channel_interface.switchport.tap.truncation.enabled is arista.avd.defined %} +{% if port_channel_interface.switchport.tap.truncation.enabled is arista.avd.defined(true) %} {% set tap_truncation_cli = "switchport tap truncation" %} {% if port_channel_interface.switchport.tap.truncation.size is arista.avd.defined %} {% set tap_truncation_cli = tap_truncation_cli ~ " " ~ port_channel_interface.switchport.tap.truncation.size %} {% endif %} {{ tap_truncation_cli }} {% endif %} -{% if port_channel_interface.switchport.tool.truncation.enabled is arista.avd.defined %} +{% if port_channel_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} {% set tool_truncation_cli = "switchport tool truncation" %} {% if port_channel_interface.switchport.tool.truncation.size is arista.avd.defined %} {% set tool_truncation_cli = tool_truncation_cli ~ " " ~ port_channel_interface.switchport.tool.truncation.size %} From e1c2fe384a01f25782e6ada66ee92c46a1b01542 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Wed, 7 Aug 2024 17:14:38 +0530 Subject: [PATCH 10/32] Adding feature_header_lentgh and re_encapsulation_ethernet_header for switchport.tap.encapsulation.gre --- .../devices/ethernet-interfaces.md | 2 ++ .../devices/port-channel-interfaces.md | 2 ++ .../intended/configs/ethernet-interfaces.cfg | 2 ++ .../configs/port-channel-interfaces.cfg | 2 ++ .../host_vars/ethernet-interfaces.yml | 7 +++++ .../host_vars/port-channel-interfaces.yml | 7 +++++ .../docs/tables/ethernet-interfaces.md | 10 +++++++ .../docs/tables/port-channel-interfaces.md | 8 ++++- .../j2templates/eos/ethernet-interfaces.j2 | 17 +++++++---- .../eos/port-channel-interfaces.j2 | 17 +++++++---- .../schema/eos_cli_config_gen.schema.yml | 29 ++++++++++++++++++- .../ethernet_interfaces.schema.yml | 14 +++++++++ .../port_channel_interfaces.schema.yml | 10 ++++++- 13 files changed, 114 insertions(+), 13 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md index 5c4f832187b..6c5c0ab64a1 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md @@ -371,6 +371,8 @@ interface Ethernet1 switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md index f738f54d3ed..18cae210f44 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md @@ -520,6 +520,8 @@ interface Port-Channel100 switchport tap encapsulation gre protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg index cb240bdee0e..86e614d7ef0 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg @@ -24,6 +24,8 @@ interface Ethernet1 switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg index 76557eed934..fdaa8144b31 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg @@ -174,6 +174,8 @@ interface Port-Channel100 switchport tap encapsulation gre protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml index c5676e63653..07b80a23074 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml @@ -77,6 +77,13 @@ ethernet_interfaces: - strip: true destination: 2.1.1.3 source: 2.1.1.4 + - strip: true + protocol: "0x0002" + feature_header_length: 3 + - strip: true + protocol: "0x0003" + feature_header_length: 2 + re_encapsulation_ethernet_header: true tool: mpls_pop_all: true encapsulation: diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml index 4b2875a845c..3d168fda430 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml @@ -153,6 +153,13 @@ port_channel_interfaces: - strip: true destination: 1.1.1.3 source: 1.1.1.4 + - strip: true + protocol: "0x0002" + feature_header_length: 3 + - strip: true + protocol: "0x0003" + feature_header_length: 2 + re_encapsulation_ethernet_header: true tool: mpls_pop_all: true encapsulation: 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 5fed060a27b..7807f26879a 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 @@ -440,6 +440,8 @@ | [              destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].destination") | String | | | | Destination IP address of tunnel packets. | | [              source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | | [              protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. It should be unique. | + | [              feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [              re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | @@ -1282,6 +1284,14 @@ # Protocol range: 0x0000-0xFFFF. It should be unique. protocol: + # Feature header length in bytes. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + feature_header_length: + + # Extra ethernet header to prepend to the terminated packet. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + re_encapsulation_ethernet_header: + # In tool mode, the interface operates as a tool port. # Tool ports replicate traffic received by tap ports. tool: 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 d03be11eb7c..0cfe5409d87 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 @@ -274,7 +274,8 @@ | [              destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].destination") | String | | | | Destination IP address of tunnel packets. | | [              source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | | [              protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. It should be unique. | - | [              feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | + | [              feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [              re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | @@ -816,8 +817,13 @@ protocol: # Feature header length in bytes. + # This setting does not reflect in the EOS running-config for protocol 0x0000. feature_header_length: + # Extra ethernet header to prepend to the terminated packet. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + re_encapsulation_ethernet_header: + # In tool mode, the interface operates as a tool port. # Tool ports replicate traffic received by tap ports. tool: 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 443789d142e..0b6015f6270 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 @@ -192,13 +192,20 @@ interface {{ ethernet_interface.name }} {% if gre_strip_config.source is arista.avd.defined %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} {% endif %} -{% if gre_strip_config.protocol is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} -{% endif %} -{% elif gre_strip_config.protocol is arista.avd.defined and gre_strip_config.destination is not arista.avd.defined %} +{% endif %} +{% if gre_strip_config.protocol is arista.avd.defined %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} +{% if gre_strip_config.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} +{% endif %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if gre_strip_config.protocol is arista.avd.defined and + gre_strip_config.feature_header_length is arista.avd.defined and + gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} - {{ tap_encapsulation_cli }} strip + {{ tap_encapsulation_cli }} {% endif %} {% endfor %} {% 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 b38c195e747..c56251f6d29 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 @@ -140,13 +140,20 @@ interface {{ port_channel_interface.name }} {% if gre_strip_config.source is arista.avd.defined %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} {% endif %} -{% if gre_strip_config.protocol is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} -{% endif %} -{% elif gre_strip_config.protocol is arista.avd.defined and gre_strip_config.destination is not arista.avd.defined %} +{% endif %} +{% if gre_strip_config.protocol is arista.avd.defined %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} +{% if gre_strip_config.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} +{% endif %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if gre_strip_config.protocol is arista.avd.defined and + gre_strip_config.feature_header_length is arista.avd.defined and + gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} - {{ tap_encapsulation_cli }} strip + {{ tap_encapsulation_cli }} {% endif %} {% endfor %} {% 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 9b628835445..bf9fa19c474 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 @@ -3670,6 +3670,23 @@ keys: description: 'Protocol type in GRE header. Protocol range: 0x0000-0xFFFF. It should be unique.' + feature_header_length: + description: 'Feature header length in bytes. + + This setting does not reflect in the EOS running-config + for protocol 0x0000.' + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: 'Extra ethernet header to prepend to the + terminated packet. + + This setting does not reflect in the EOS running-config + for protocol 0x0000.' tool: description: 'In tool mode, the interface operates as a tool port. @@ -9787,12 +9804,22 @@ keys: Protocol range: 0x0000-0xFFFF. It should be unique.' feature_header_length: - description: Feature header length in bytes. + description: 'Feature header length in bytes. + + This setting does not reflect in the EOS running-config + for protocol 0x0000.' type: int convert_types: - str min: 1 max: 16 + re_encapsulation_ethernet_header: + type: bool + description: 'Extra ethernet header to prepend to the + terminated packet. + + This setting does not reflect in the EOS running-config + for protocol 0x0000.' tool: description: 'In tool mode, the interface operates as a tool port. 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 3c4812a5a75..c6b19179609 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 @@ -1557,6 +1557,20 @@ keys: description: |- Protocol type in GRE header. Protocol range: 0x0000-0xFFFF. It should be unique. + feature_header_length: + description: |- + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol 0x0000. + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: |- + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS running-config for protocol 0x0000. tool: description: |- In tool mode, the interface operates as a tool port. 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 7d064a4d584..9bc8654ef3b 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 @@ -945,12 +945,20 @@ keys: Protocol type in GRE header. Protocol range: 0x0000-0xFFFF. It should be unique. feature_header_length: - description: Feature header length in bytes. + description: |- + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol 0x0000. type: int convert_types: - str min: 1 max: 16 + re_encapsulation_ethernet_header: + type: bool + description: |- + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS running-config for protocol 0x0000. + tool: description: |- In tool mode, the interface operates as a tool port. From e1ab14cec3044b9f8f898967070dd09a34b6f42b Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 14 Oct 2024 12:06:36 +0530 Subject: [PATCH 11/32] Fixing tap.identity --- .../host_vars/ethernet-interfaces.yml | 6 ++--- .../host_vars/port-channel-interfaces.yml | 6 ++--- .../docs/tables/ethernet-interfaces.md | 12 +++++----- .../docs/tables/port-channel-interfaces.md | 12 +++++----- .../j2templates/eos/ethernet-interfaces.j2 | 8 +++---- .../eos/port-channel-interfaces.j2 | 8 +++---- .../schema/eos_cli_config_gen.schema.yml | 24 +++++++++++-------- .../ethernet_interfaces.schema.yml | 10 ++++---- .../port_channel_interfaces.schema.yml | 10 ++++---- 9 files changed, 50 insertions(+), 46 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml index c9075205b61..99c15eeb6f7 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml @@ -1429,8 +1429,8 @@ ethernet_interfaces: - port-channel10 - ethernet4 identity: - port_id: 3 - inner_port_id: 5 + id: 3 + inner_vlan: 5 mpls_pop_all: true native_vlan: 10 truncation: @@ -1485,7 +1485,7 @@ ethernet_interfaces: switchport: tap: identity: - port_id: 5 + id: 5 mac_address: dest: 01:00:00:00:00:00 encapsulation: diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml index fcd7640e994..7be47cc8b5e 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml @@ -240,8 +240,8 @@ port_channel_interfaces: switchport: tap: identity: - port_id: 3 - inner_port_id: 10 + id: 3 + inner_vlan: 10 mac_address: dest: 01:00:00:00:00:00 encapsulation: @@ -772,7 +772,7 @@ port_channel_interfaces: - port-channel10 - ethernet4 identity: - port_id: 3 + id: 3 mpls_pop_all: true native_vlan: 10 truncation: 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 09c5f0b2255..130fb200562 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 @@ -503,8 +503,8 @@ | [          nexthop_groups](## "ethernet_interfaces.[].switchport.tap.default.nexthop_groups") | List, items: String | | | | Default nexthop-group names. | | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.nexthop_groups.[]") | String | | | | | | [        identity](## "ethernet_interfaces.[].switchport.tap.identity") | Dictionary | | | | | - | [          port_id](## "ethernet_interfaces.[].switchport.tap.identity.port_id") | Integer | | | Min: 1
Max: 4094 | Tap port ID tag. | - | [          inner_port_id](## "ethernet_interfaces.[].switchport.tap.identity.inner_port_id") | Integer | | | Min: 1
Max: 4094 | Inner tap port ID tag. | + | [          id](## "ethernet_interfaces.[].switchport.tap.identity.id") | Integer | | | Min: 1
Max: 65535 | Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535). | + | [          inner_vlan](## "ethernet_interfaces.[].switchport.tap.identity.inner_vlan") | Integer | | | Min: 1
Max: 4094 | Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094). | | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tap.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        native_vlan](## "ethernet_interfaces.[].switchport.tap.native_vlan") | Integer | | | Min: 1
Max: 4094 | Native VLAN ID when interface is in tap mode. | | [        truncation](## "ethernet_interfaces.[].switchport.tap.truncation") | Dictionary | | | | | @@ -1602,11 +1602,11 @@ - identity: - # Tap port ID tag. - port_id: + # Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535). + id: - # Inner tap port ID tag. - inner_port_id: + # Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094). + inner_vlan: # Pop all MPLS labels. mpls_pop_all: 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 98b8b9bba4f..72740896fae 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 @@ -329,8 +329,8 @@ | [          nexthop_groups](## "port_channel_interfaces.[].switchport.tap.default.nexthop_groups") | List, items: String | | | | Default nexthop-group names. | | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.nexthop_groups.[]") | String | | | | | | [        identity](## "port_channel_interfaces.[].switchport.tap.identity") | Dictionary | | | | | - | [          port_id](## "port_channel_interfaces.[].switchport.tap.identity.port_id") | Integer | | | Min: 1
Max: 4094 | Tap port ID tag. | - | [          inner_port_id](## "port_channel_interfaces.[].switchport.tap.identity.inner_port_id") | Integer | | | Min: 1
Max: 4094 | Inner tap port ID tag. | + | [          id](## "port_channel_interfaces.[].switchport.tap.identity.id") | Integer | | | Min: 1
Max: 65535 | Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535). | + | [          inner_vlan](## "port_channel_interfaces.[].switchport.tap.identity.inner_vlan") | Integer | | | Min: 1
Max: 4094 | Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094). | | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tap.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        native_vlan](## "port_channel_interfaces.[].switchport.tap.native_vlan") | Integer | | | Min: 1
Max: 4094 | Native VLAN ID when interface is in tap mode. | | [        truncation](## "port_channel_interfaces.[].switchport.tap.truncation") | Dictionary | | | | | @@ -1094,11 +1094,11 @@ - identity: - # Tap port ID tag. - port_id: + # Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535). + id: - # Inner tap port ID tag. - inner_port_id: + # Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094). + inner_vlan: # Pop all MPLS labels. mpls_pop_all: 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 0e95702b217..271a76e454a 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 @@ -1108,10 +1108,10 @@ interface {{ ethernet_interface.name }} {% if ethernet_interface.switchport.tap.native_vlan is arista.avd.defined %} switchport tap native vlan {{ ethernet_interface.switchport.tap.native_vlan }} {% endif %} -{% if ethernet_interface.switchport.tap.identity.port_id is arista.avd.defined %} -{% set tap_identity_cli = "switchport tap identity " ~ ethernet_interface.switchport.tap.identity.port_id %} -{% if ethernet_interface.switchport.tap.identity.inner_port_id is arista.avd.defined %} -{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ ethernet_interface.switchport.tap.identity.inner_port_id %} +{% if ethernet_interface.switchport.tap.identity.id is arista.avd.defined %} +{% set tap_identity_cli = "switchport tap identity " ~ ethernet_interface.switchport.tap.identity.id %} +{% if ethernet_interface.switchport.tap.identity.inner_vlan is arista.avd.defined %} +{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ ethernet_interface.switchport.tap.identity.inner_vlan %} {% endif %} {{ tap_identity_cli }} {% 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 c1bd658da55..1237047ff92 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 @@ -729,10 +729,10 @@ interface {{ port_channel_interface.name }} {% if port_channel_interface.switchport.tap.native_vlan is arista.avd.defined %} switchport tap native vlan {{ port_channel_interface.switchport.tap.native_vlan }} {% endif %} -{% if port_channel_interface.switchport.tap.identity.port_id is arista.avd.defined %} -{% set tap_identity_cli = "switchport tap identity " ~ port_channel_interface.switchport.tap.identity.port_id %} -{% if port_channel_interface.switchport.tap.identity.inner_port_id is arista.avd.defined %} -{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ port_channel_interface.switchport.tap.identity.inner_port_id %} +{% if port_channel_interface.switchport.tap.identity.id is arista.avd.defined %} +{% set tap_identity_cli = "switchport tap identity " ~ port_channel_interface.switchport.tap.identity.id %} +{% if port_channel_interface.switchport.tap.identity.inner_vlan is arista.avd.defined %} +{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ port_channel_interface.switchport.tap.identity.inner_vlan %} {% endif %} {{ tap_identity_cli }} {% 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 12dfd58e7df..8e59a9ffbd6 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 @@ -4070,15 +4070,17 @@ keys: identity: type: dict keys: - port_id: + id: type: int convert_types: - str min: 1 - max: 4094 - description: Tap port ID tag. - inner_port_id: - description: Inner tap port ID tag. + max: 65535 + description: Tap port VLAN ID (1-4094) or DzGRE extended ID + (1-65535). + inner_vlan: + description: Tap port inner VLAN ID. Only applicable if `id` + is a VLAN ID (1-4094). type: int convert_types: - str @@ -10676,15 +10678,17 @@ keys: identity: type: dict keys: - port_id: + id: type: int convert_types: - str min: 1 - max: 4094 - description: Tap port ID tag. - inner_port_id: - description: Inner tap port ID tag. + max: 65535 + description: Tap port VLAN ID (1-4094) or DzGRE extended ID + (1-65535). + inner_vlan: + description: Tap port inner VLAN ID. Only applicable if `id` + is a VLAN ID (1-4094). type: int convert_types: - str 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 86a894a0137..43df3ee0ebd 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 @@ -1955,15 +1955,15 @@ keys: identity: type: dict keys: - port_id: + id: type: int convert_types: - str min: 1 - max: 4094 - description: Tap port ID tag. - inner_port_id: - description: Inner tap port ID tag. + max: 65535 + description: Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535). + inner_vlan: + description: Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094). type: int convert_types: - str 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 c636528c89a..22b860828c2 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 @@ -1374,15 +1374,15 @@ keys: identity: type: dict keys: - port_id: + id: type: int convert_types: - str min: 1 - max: 4094 - description: Tap port ID tag. - inner_port_id: - description: Inner tap port ID tag. + max: 65535 + description: Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535). + inner_vlan: + description: Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094). type: int convert_types: - str From 00e7b535c272508711809e6b8a4351c8f6bff068 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 14 Oct 2024 12:27:23 +0530 Subject: [PATCH 12/32] Fixing order --- .../devices/port-channel-interfaces.md | 2 +- .../configs/port-channel-interfaces.cfg | 2 +- .../host_vars/port-channel-interfaces.yml | 2 +- .../j2templates/eos/ethernet-interfaces.j2 | 210 +++++++++--------- .../eos/port-channel-interfaces.j2 | 16 +- 5 files changed, 116 insertions(+), 116 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md index df20180dd57..101353a7fa9 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md @@ -502,7 +502,7 @@ interface Port-Channel16 switchport port-security violation protect log switchport port-security mac-address maximum 100 spanning-tree guard none - switchport backup-link Port-Channel100.102 prefer vlan 20 + switchport backup-link Port-Channel100 prefer vlan 20 ! interface Port-Channel17 description PBR Description diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg index ab848c4a673..f6d63908e9e 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg @@ -122,7 +122,7 @@ interface Port-Channel16 switchport port-security violation protect log switchport port-security mac-address maximum 100 spanning-tree guard none - switchport backup-link Port-Channel100.102 prefer vlan 20 + switchport backup-link Port-Channel100 prefer vlan 20 ! interface Port-Channel17 description PBR Description diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml index 7be47cc8b5e..7cddd026de6 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml @@ -91,7 +91,7 @@ port_channel_interfaces: - from: 23 dot1q_tunnel_to: 22 backup_link: - interface: Port-Channel100.102 + interface: Port-Channel100 prefer_vlan: 20 - name: Port-Channel3 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 271a76e454a..2db24d6928f 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 @@ -899,6 +899,111 @@ interface {{ ethernet_interface.name }} priority {{ ethernet_interface.sync_e.priority }} {% endif %} {% endif %} +{% if ethernet_interface.switchport.tap.native_vlan is arista.avd.defined %} + switchport tap native vlan {{ ethernet_interface.switchport.tap.native_vlan }} +{% endif %} +{% if ethernet_interface.switchport.tap.identity.id is arista.avd.defined %} +{% set tap_identity_cli = "switchport tap identity " ~ ethernet_interface.switchport.tap.identity.id %} +{% if ethernet_interface.switchport.tap.identity.inner_vlan is arista.avd.defined %} +{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ ethernet_interface.switchport.tap.identity.inner_vlan %} +{% endif %} + {{ tap_identity_cli }} +{% endif %} +{% if ethernet_interface.switchport.tap.mac_address.dest is arista.avd.defined %} +{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ ethernet_interface.switchport.tap.mac_address.dest %} +{% if ethernet_interface.switchport.tap.mac_address.src is arista.avd.defined %} +{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ ethernet_interface.switchport.tap.mac_address.src %} +{% endif %} + {{ tap_mac_address_cli }} +{% endif %} +{# The position of "mpls_pop_all" does not match the EOS CLI to implement this "elif" with "vxlan_strip" #} +{% if ethernet_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} + switchport tap mpls pop all +{% elif ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} + switchport tap encapsulation vxlan strip +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} +{% for gre_strip_config in ethernet_interface.switchport.tap.encapsulation.gre %} +{% if gre_strip_config.strip is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} +{% if gre_strip_config.destination is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} +{% if gre_strip_config.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} +{% endif %} +{% endif %} +{% if gre_strip_config.protocol is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} +{% if gre_strip_config.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} +{% endif %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if gre_strip_config.protocol is arista.avd.defined and + gre_strip_config.feature_header_length is arista.avd.defined and + gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} +{% endif %} + {{ tap_encapsulation_cli }} +{% endif %} +{% endfor %} +{% endif %} +{% if ethernet_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} + switchport tool mpls pop all +{% endif %} +{% if ethernet_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} + switchport tool encapsulation vn-tag strip +{% endif %} +{% if ethernet_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} + switchport tool encapsulation dot1br strip +{% endif %} +{% if ethernet_interface.switchport.tap.allowed_vlan is arista.avd.defined %} + switchport tap allowed vlan {{ ethernet_interface.switchport.tap.allowed_vlan }} +{% endif %} +{% if ethernet_interface.switchport.tool.allowed_vlan is arista.avd.defined %} + switchport tool allowed vlan {{ ethernet_interface.switchport.tool.allowed_vlan }} +{% endif %} +{% if ethernet_interface.switchport.tool.identity.tag is arista.avd.defined %} + switchport tool identity {{ ethernet_interface.switchport.tool.identity.tag }} +{% endif %} +{% if ethernet_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} + switchport tool identity dot1q source dzgre {{ ethernet_interface.switchport.tool.identity.dot1q_dzgre_source }} +{% elif ethernet_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} + switchport tool identity qinq source dzgre {{ ethernet_interface.switchport.tool.identity.qinq_dzgre_source }} +{% endif %} +{% if ethernet_interface.switchport.tap.truncation.enabled is arista.avd.defined(true) %} +{% set tap_truncation_cli = "switchport tap truncation" %} +{% if ethernet_interface.switchport.tap.truncation.size is arista.avd.defined %} +{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ ethernet_interface.switchport.tap.truncation.size %} +{% endif %} + {{ tap_truncation_cli }} +{% endif %} +{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} +{% set tool_truncation_cli = "switchport tool truncation" %} +{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} +{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} +{% endif %} + {{ tool_truncation_cli }} +{% endif %} +{% if ethernet_interface.switchport.tap.default.groups is arista.avd.defined %} + switchport tap default group {{ ethernet_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} +{% endif %} +{% if ethernet_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} + switchport tap default nexthop-group {{ ethernet_interface.switchport.tap.default.nexthop_groups | arista.avd.natural_sort | join(" ") }} +{% endif %} +{% for interface in ethernet_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} + switchport tap default interface {{ interface }} +{% endfor %} +{% if ethernet_interface.switchport.tool.groups is arista.avd.defined %} +{% set tool_groups = ethernet_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} + switchport tool group set {{ tool_groups }} +{% endif %} +{% if ethernet_interface.switchport.tool.dot1q_remove_outer_vlan_tag is arista.avd.defined %} + switchport tool dot1q remove outer {{ ethernet_interface.switchport.tool.dot1q_remove_outer_vlan_tag }} +{% endif %} +{% if ethernet_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} + switchport tool dzgre preserve +{% 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 }} @@ -1105,111 +1210,6 @@ interface {{ ethernet_interface.name }} {{ auth_failure_fallback_mba }} {% endif %} {% endif %} -{% if ethernet_interface.switchport.tap.native_vlan is arista.avd.defined %} - switchport tap native vlan {{ ethernet_interface.switchport.tap.native_vlan }} -{% endif %} -{% if ethernet_interface.switchport.tap.identity.id is arista.avd.defined %} -{% set tap_identity_cli = "switchport tap identity " ~ ethernet_interface.switchport.tap.identity.id %} -{% if ethernet_interface.switchport.tap.identity.inner_vlan is arista.avd.defined %} -{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ ethernet_interface.switchport.tap.identity.inner_vlan %} -{% endif %} - {{ tap_identity_cli }} -{% endif %} -{% if ethernet_interface.switchport.tap.mac_address.dest is arista.avd.defined %} -{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ ethernet_interface.switchport.tap.mac_address.dest %} -{% if ethernet_interface.switchport.tap.mac_address.src is arista.avd.defined %} -{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ ethernet_interface.switchport.tap.mac_address.src %} -{% endif %} - {{ tap_mac_address_cli }} -{% endif %} -{# The position of "mpls_pop_all" does not match the EOS CLI to implement this "elif" with "vxlan_strip" #} -{% if ethernet_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} - switchport tap mpls pop all -{% elif ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} - switchport tap encapsulation vxlan strip -{% endif %} -{% if ethernet_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} -{% for gre_strip_config in ethernet_interface.switchport.tap.encapsulation.gre %} -{% if gre_strip_config.strip is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} -{% if gre_strip_config.destination is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} -{% if gre_strip_config.source is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} -{% endif %} -{% endif %} -{% if gre_strip_config.protocol is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} -{% if gre_strip_config.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} -{% endif %} -{% endif %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if gre_strip_config.protocol is arista.avd.defined and - gre_strip_config.feature_header_length is arista.avd.defined and - gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} - {{ tap_encapsulation_cli }} -{% endif %} -{% endfor %} -{% endif %} -{% if ethernet_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} - switchport tool mpls pop all -{% endif %} -{% if ethernet_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} - switchport tool encapsulation vn-tag strip -{% endif %} -{% if ethernet_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} - switchport tool encapsulation dot1br strip -{% endif %} -{% if ethernet_interface.switchport.tap.allowed_vlan is arista.avd.defined %} - switchport tap allowed vlan {{ ethernet_interface.switchport.tap.allowed_vlan }} -{% endif %} -{% if ethernet_interface.switchport.tool.allowed_vlan is arista.avd.defined %} - switchport tool allowed vlan {{ ethernet_interface.switchport.tool.allowed_vlan }} -{% endif %} -{% if ethernet_interface.switchport.tool.identity.tag is arista.avd.defined %} - switchport tool identity {{ ethernet_interface.switchport.tool.identity.tag }} -{% endif %} -{% if ethernet_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} - switchport tool identity dot1q source dzgre {{ ethernet_interface.switchport.tool.identity.dot1q_dzgre_source }} -{% elif ethernet_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} - switchport tool identity qinq source dzgre {{ ethernet_interface.switchport.tool.identity.qinq_dzgre_source }} -{% endif %} -{% if ethernet_interface.switchport.tap.truncation.enabled is arista.avd.defined(true) %} -{% set tap_truncation_cli = "switchport tap truncation" %} -{% if ethernet_interface.switchport.tap.truncation.size is arista.avd.defined %} -{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ ethernet_interface.switchport.tap.truncation.size %} -{% endif %} - {{ tap_truncation_cli }} -{% endif %} -{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} -{% set tool_truncation_cli = "switchport tool truncation" %} -{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} -{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} -{% endif %} - {{ tool_truncation_cli }} -{% endif %} -{% if ethernet_interface.switchport.tap.default.groups is arista.avd.defined %} - switchport tap default group {{ ethernet_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} -{% endif %} -{% if ethernet_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} - switchport tap default nexthop-group {{ ethernet_interface.switchport.tap.default.nexthop_groups | arista.avd.natural_sort | join(" ") }} -{% endif %} -{% for interface in ethernet_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} - switchport tap default interface {{ interface }} -{% endfor %} -{% if ethernet_interface.switchport.tool.groups is arista.avd.defined %} -{% set tool_groups = ethernet_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} - switchport tool group set {{ tool_groups }} -{% endif %} -{% if ethernet_interface.switchport.tool.dot1q_remove_outer_vlan_tag is arista.avd.defined %} - switchport tool dot1q remove outer {{ ethernet_interface.switchport.tool.dot1q_remove_outer_vlan_tag }} -{% endif %} -{% if ethernet_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} - switchport tool dzgre preserve -{% endif %} {% if ethernet_interface.eos_cli is arista.avd.defined %} {{ ethernet_interface.eos_cli | indent(3, false) }} {% 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 1237047ff92..97b6aa2aa14 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 @@ -718,14 +718,6 @@ interface {{ port_channel_interface.name }} switchport backup dest-macaddr {{ port_channel_interface.switchport.backup.dest_macaddr }} {% endif %} {% 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 }} -{% endif %} -{% endfor %} -{% if port_channel_interface.vmtracer is arista.avd.defined(true) %} - vmtracer vmware-esx -{% endif %} {% if port_channel_interface.switchport.tap.native_vlan is arista.avd.defined %} switchport tap native vlan {{ port_channel_interface.switchport.tap.native_vlan }} {% endif %} @@ -831,6 +823,14 @@ interface {{ port_channel_interface.name }} {% if port_channel_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} switchport tool dzgre preserve {% 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 }} +{% endif %} +{% endfor %} +{% if port_channel_interface.vmtracer is arista.avd.defined(true) %} + vmtracer vmware-esx +{% endif %} {% if port_channel_interface.eos_cli is arista.avd.defined %} {{ port_channel_interface.eos_cli | indent(3, false) }} {% endif %} From 48a5683e5dce078aab3395dc9f00cd03ee8a7e74 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 21 Oct 2024 17:18:31 +0530 Subject: [PATCH 13/32] Added outer tap/tool defined check --- .../j2templates/eos/ethernet-interfaces.j2 | 152 +++++++++--------- .../eos/port-channel-interfaces.j2 | 152 +++++++++--------- 2 files changed, 154 insertions(+), 150 deletions(-) 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 2db24d6928f..7ff55da49f8 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 @@ -899,110 +899,112 @@ interface {{ ethernet_interface.name }} priority {{ ethernet_interface.sync_e.priority }} {% endif %} {% endif %} -{% if ethernet_interface.switchport.tap.native_vlan is arista.avd.defined %} +{% if ethernet_interface.switchport.tap is arista.avd.defined or ethernet_interface.switchport.tool is arista.avd.defined %} +{% if ethernet_interface.switchport.tap.native_vlan is arista.avd.defined %} switchport tap native vlan {{ ethernet_interface.switchport.tap.native_vlan }} -{% endif %} -{% if ethernet_interface.switchport.tap.identity.id is arista.avd.defined %} -{% set tap_identity_cli = "switchport tap identity " ~ ethernet_interface.switchport.tap.identity.id %} -{% if ethernet_interface.switchport.tap.identity.inner_vlan is arista.avd.defined %} -{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ ethernet_interface.switchport.tap.identity.inner_vlan %} {% endif %} +{% if ethernet_interface.switchport.tap.identity.id is arista.avd.defined %} +{% set tap_identity_cli = "switchport tap identity " ~ ethernet_interface.switchport.tap.identity.id %} +{% if ethernet_interface.switchport.tap.identity.inner_vlan is arista.avd.defined %} +{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ ethernet_interface.switchport.tap.identity.inner_vlan %} +{% endif %} {{ tap_identity_cli }} -{% endif %} -{% if ethernet_interface.switchport.tap.mac_address.dest is arista.avd.defined %} -{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ ethernet_interface.switchport.tap.mac_address.dest %} -{% if ethernet_interface.switchport.tap.mac_address.src is arista.avd.defined %} -{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ ethernet_interface.switchport.tap.mac_address.src %} {% endif %} +{% if ethernet_interface.switchport.tap.mac_address.dest is arista.avd.defined %} +{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ ethernet_interface.switchport.tap.mac_address.dest %} +{% if ethernet_interface.switchport.tap.mac_address.src is arista.avd.defined %} +{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ ethernet_interface.switchport.tap.mac_address.src %} +{% endif %} {{ tap_mac_address_cli }} -{% endif %} +{% endif %} {# The position of "mpls_pop_all" does not match the EOS CLI to implement this "elif" with "vxlan_strip" #} -{% if ethernet_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} +{% if ethernet_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} switchport tap mpls pop all -{% elif ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} +{% elif ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} switchport tap encapsulation vxlan strip -{% endif %} -{% if ethernet_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} -{% for gre_strip_config in ethernet_interface.switchport.tap.encapsulation.gre %} -{% if gre_strip_config.strip is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} -{% if gre_strip_config.destination is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} -{% if gre_strip_config.source is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} +{% for gre_strip_config in ethernet_interface.switchport.tap.encapsulation.gre %} +{% if gre_strip_config.strip is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} +{% if gre_strip_config.destination is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} +{% if gre_strip_config.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} +{% endif %} {% endif %} -{% endif %} -{% if gre_strip_config.protocol is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} -{% if gre_strip_config.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} +{% if gre_strip_config.protocol is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} +{% if gre_strip_config.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} +{% endif %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if gre_strip_config.protocol is arista.avd.defined and + gre_strip_config.feature_header_length is arista.avd.defined and + gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} -{% endif %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if gre_strip_config.protocol is arista.avd.defined and - gre_strip_config.feature_header_length is arista.avd.defined and - gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} {{ tap_encapsulation_cli }} -{% endif %} -{% endfor %} -{% endif %} -{% if ethernet_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} +{% endif %} +{% endfor %} +{% endif %} +{% if ethernet_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} switchport tool mpls pop all -{% endif %} -{% if ethernet_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} +{% endif %} +{% if ethernet_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} switchport tool encapsulation vn-tag strip -{% endif %} -{% if ethernet_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} +{% endif %} +{% if ethernet_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} switchport tool encapsulation dot1br strip -{% endif %} -{% if ethernet_interface.switchport.tap.allowed_vlan is arista.avd.defined %} +{% endif %} +{% if ethernet_interface.switchport.tap.allowed_vlan is arista.avd.defined %} switchport tap allowed vlan {{ ethernet_interface.switchport.tap.allowed_vlan }} -{% endif %} -{% if ethernet_interface.switchport.tool.allowed_vlan is arista.avd.defined %} +{% endif %} +{% if ethernet_interface.switchport.tool.allowed_vlan is arista.avd.defined %} switchport tool allowed vlan {{ ethernet_interface.switchport.tool.allowed_vlan }} -{% endif %} -{% if ethernet_interface.switchport.tool.identity.tag is arista.avd.defined %} +{% endif %} +{% if ethernet_interface.switchport.tool.identity.tag is arista.avd.defined %} switchport tool identity {{ ethernet_interface.switchport.tool.identity.tag }} -{% endif %} -{% if ethernet_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} +{% endif %} +{% if ethernet_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} switchport tool identity dot1q source dzgre {{ ethernet_interface.switchport.tool.identity.dot1q_dzgre_source }} -{% elif ethernet_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} +{% elif ethernet_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} switchport tool identity qinq source dzgre {{ ethernet_interface.switchport.tool.identity.qinq_dzgre_source }} -{% endif %} -{% if ethernet_interface.switchport.tap.truncation.enabled is arista.avd.defined(true) %} -{% set tap_truncation_cli = "switchport tap truncation" %} -{% if ethernet_interface.switchport.tap.truncation.size is arista.avd.defined %} -{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ ethernet_interface.switchport.tap.truncation.size %} {% endif %} +{% if ethernet_interface.switchport.tap.truncation.enabled is arista.avd.defined(true) %} +{% set tap_truncation_cli = "switchport tap truncation" %} +{% if ethernet_interface.switchport.tap.truncation.size is arista.avd.defined %} +{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ ethernet_interface.switchport.tap.truncation.size %} +{% endif %} {{ tap_truncation_cli }} -{% endif %} -{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} -{% set tool_truncation_cli = "switchport tool truncation" %} -{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} -{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} {% endif %} +{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} +{% set tool_truncation_cli = "switchport tool truncation" %} +{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} +{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} +{% endif %} {{ tool_truncation_cli }} -{% endif %} -{% if ethernet_interface.switchport.tap.default.groups is arista.avd.defined %} +{% endif %} +{% if ethernet_interface.switchport.tap.default.groups is arista.avd.defined %} switchport tap default group {{ ethernet_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} -{% endif %} -{% if ethernet_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} +{% endif %} +{% if ethernet_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} switchport tap default nexthop-group {{ ethernet_interface.switchport.tap.default.nexthop_groups | arista.avd.natural_sort | join(" ") }} -{% endif %} -{% for interface in ethernet_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} +{% endif %} +{% for interface in ethernet_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} switchport tap default interface {{ interface }} -{% endfor %} -{% if ethernet_interface.switchport.tool.groups is arista.avd.defined %} -{% set tool_groups = ethernet_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} +{% endfor %} +{% if ethernet_interface.switchport.tool.groups is arista.avd.defined %} +{% set tool_groups = ethernet_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} switchport tool group set {{ tool_groups }} -{% endif %} -{% if ethernet_interface.switchport.tool.dot1q_remove_outer_vlan_tag is arista.avd.defined %} +{% endif %} +{% if ethernet_interface.switchport.tool.dot1q_remove_outer_vlan_tag is arista.avd.defined %} switchport tool dot1q remove outer {{ ethernet_interface.switchport.tool.dot1q_remove_outer_vlan_tag }} -{% endif %} -{% if ethernet_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} +{% endif %} +{% if ethernet_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} switchport tool dzgre preserve +{% endif %} {% 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 %} 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 97b6aa2aa14..576e842088c 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 @@ -718,110 +718,112 @@ interface {{ port_channel_interface.name }} switchport backup dest-macaddr {{ port_channel_interface.switchport.backup.dest_macaddr }} {% endif %} {% endif %} -{% if port_channel_interface.switchport.tap.native_vlan is arista.avd.defined %} +{% if port_channel_interface.switchport.tap is arista.avd.defined or port_channel_interface.switchport.tool is arista.avd.defined %} +{% if port_channel_interface.switchport.tap.native_vlan is arista.avd.defined %} switchport tap native vlan {{ port_channel_interface.switchport.tap.native_vlan }} -{% endif %} -{% if port_channel_interface.switchport.tap.identity.id is arista.avd.defined %} -{% set tap_identity_cli = "switchport tap identity " ~ port_channel_interface.switchport.tap.identity.id %} -{% if port_channel_interface.switchport.tap.identity.inner_vlan is arista.avd.defined %} -{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ port_channel_interface.switchport.tap.identity.inner_vlan %} {% endif %} +{% if port_channel_interface.switchport.tap.identity.id is arista.avd.defined %} +{% set tap_identity_cli = "switchport tap identity " ~ port_channel_interface.switchport.tap.identity.id %} +{% if port_channel_interface.switchport.tap.identity.inner_vlan is arista.avd.defined %} +{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ port_channel_interface.switchport.tap.identity.inner_vlan %} +{% endif %} {{ tap_identity_cli }} -{% endif %} -{% if port_channel_interface.switchport.tap.mac_address.dest is arista.avd.defined %} -{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ port_channel_interface.switchport.tap.mac_address.dest %} -{% if port_channel_interface.switchport.tap.mac_address.src is arista.avd.defined %} -{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ port_channel_interface.switchport.tap.mac_address.src %} {% endif %} +{% if port_channel_interface.switchport.tap.mac_address.dest is arista.avd.defined %} +{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ port_channel_interface.switchport.tap.mac_address.dest %} +{% if port_channel_interface.switchport.tap.mac_address.src is arista.avd.defined %} +{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ port_channel_interface.switchport.tap.mac_address.src %} +{% endif %} {{ tap_mac_address_cli }} -{% endif %} +{% endif %} {# The position of "mpls_pop_all" does not match the EOS CLI to implement this "elif" with "vxlan_strip" #} -{% if port_channel_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} +{% if port_channel_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} switchport tap mpls pop all -{% elif port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} +{% elif port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} switchport tap encapsulation vxlan strip -{% endif %} -{% if port_channel_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} -{% for gre_strip_config in port_channel_interface.switchport.tap.encapsulation.gre %} -{% if gre_strip_config.strip is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} -{% if gre_strip_config.destination is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} -{% if gre_strip_config.source is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} +{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} +{% for gre_strip_config in port_channel_interface.switchport.tap.encapsulation.gre %} +{% if gre_strip_config.strip is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} +{% if gre_strip_config.destination is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} +{% if gre_strip_config.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} +{% endif %} {% endif %} -{% endif %} -{% if gre_strip_config.protocol is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} -{% if gre_strip_config.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} +{% if gre_strip_config.protocol is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} +{% if gre_strip_config.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} +{% endif %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if gre_strip_config.protocol is arista.avd.defined and + gre_strip_config.feature_header_length is arista.avd.defined and + gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} -{% endif %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if gre_strip_config.protocol is arista.avd.defined and - gre_strip_config.feature_header_length is arista.avd.defined and - gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} {{ tap_encapsulation_cli }} -{% endif %} -{% endfor %} -{% endif %} -{% if port_channel_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} +{% endif %} +{% endfor %} +{% endif %} +{% if port_channel_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} switchport tool mpls pop all -{% endif %} -{% if port_channel_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} +{% endif %} +{% if port_channel_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} switchport tool encapsulation vn-tag strip -{% endif %} -{% if port_channel_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} +{% endif %} +{% if port_channel_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} switchport tool encapsulation dot1br strip -{% endif %} -{% if port_channel_interface.switchport.tap.allowed_vlan is arista.avd.defined %} +{% endif %} +{% if port_channel_interface.switchport.tap.allowed_vlan is arista.avd.defined %} switchport tap allowed vlan {{ port_channel_interface.switchport.tap.allowed_vlan }} -{% endif %} -{% if port_channel_interface.switchport.tool.allowed_vlan is arista.avd.defined %} +{% endif %} +{% if port_channel_interface.switchport.tool.allowed_vlan is arista.avd.defined %} switchport tool allowed vlan {{ port_channel_interface.switchport.tool.allowed_vlan }} -{% endif %} -{% if port_channel_interface.switchport.tool.identity.tag is arista.avd.defined %} +{% endif %} +{% if port_channel_interface.switchport.tool.identity.tag is arista.avd.defined %} switchport tool identity {{ port_channel_interface.switchport.tool.identity.tag }} -{% endif %} -{% if port_channel_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} +{% endif %} +{% if port_channel_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} switchport tool identity dot1q source dzgre {{ port_channel_interface.switchport.tool.identity.dot1q_dzgre_source }} -{% elif port_channel_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} +{% elif port_channel_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} switchport tool identity qinq source dzgre {{ port_channel_interface.switchport.tool.identity.qinq_dzgre_source }} -{% endif %} -{% if port_channel_interface.switchport.tap.truncation.enabled is arista.avd.defined(true) %} -{% set tap_truncation_cli = "switchport tap truncation" %} -{% if port_channel_interface.switchport.tap.truncation.size is arista.avd.defined %} -{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ port_channel_interface.switchport.tap.truncation.size %} {% endif %} +{% if port_channel_interface.switchport.tap.truncation.enabled is arista.avd.defined(true) %} +{% set tap_truncation_cli = "switchport tap truncation" %} +{% if port_channel_interface.switchport.tap.truncation.size is arista.avd.defined %} +{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ port_channel_interface.switchport.tap.truncation.size %} +{% endif %} {{ tap_truncation_cli }} -{% endif %} -{% if port_channel_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} -{% set tool_truncation_cli = "switchport tool truncation" %} -{% if port_channel_interface.switchport.tool.truncation.size is arista.avd.defined %} -{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ port_channel_interface.switchport.tool.truncation.size %} {% endif %} +{% if port_channel_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} +{% set tool_truncation_cli = "switchport tool truncation" %} +{% if port_channel_interface.switchport.tool.truncation.size is arista.avd.defined %} +{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ port_channel_interface.switchport.tool.truncation.size %} +{% endif %} {{ tool_truncation_cli }} -{% endif %} -{% if port_channel_interface.switchport.tap.default.groups is arista.avd.defined %} +{% endif %} +{% if port_channel_interface.switchport.tap.default.groups is arista.avd.defined %} switchport tap default group {{ port_channel_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} -{% endif %} -{% if port_channel_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} +{% endif %} +{% if port_channel_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} switchport tap default nexthop-group {{ port_channel_interface.switchport.tap.default.nexthop_groups | arista.avd.natural_sort | join(" ") }} -{% endif %} -{% for interface in port_channel_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} +{% endif %} +{% for interface in port_channel_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} switchport tap default interface {{ interface }} -{% endfor %} -{% if port_channel_interface.switchport.tool.groups is arista.avd.defined %} -{% set tool_groups = port_channel_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} +{% endfor %} +{% if port_channel_interface.switchport.tool.groups is arista.avd.defined %} +{% set tool_groups = port_channel_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} switchport tool group set {{ tool_groups }} -{% endif %} -{% if port_channel_interface.switchport.tool.dot1q_remove_outer_vlan_tag is arista.avd.defined %} +{% endif %} +{% if port_channel_interface.switchport.tool.dot1q_remove_outer_vlan_tag is arista.avd.defined %} switchport tool dot1q remove outer {{ port_channel_interface.switchport.tool.dot1q_remove_outer_vlan_tag }} -{% endif %} -{% if port_channel_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} +{% endif %} +{% if port_channel_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} switchport tool dzgre preserve +{% endif %} {% 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 %} From 008dcef9bf4ce4b9fe02f0bd2734f31d0d4536d8 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Thu, 7 Nov 2024 17:25:17 +0530 Subject: [PATCH 14/32] Moving host_vars --- .../devices/ethernet-interfaces.md | 1299 ----------------- .../documentation/devices/host1.md | 902 ++++++++++++ .../devices/port-channel-interfaces.md | 945 ------------ .../intended/configs/ethernet-interfaces.cfg | 840 ----------- .../intended/configs/host1.cfg | 608 ++++++++ .../configs/port-channel-interfaces.cfg | 613 -------- .../{ => host1}/ethernet-interfaces.yml | 0 .../{ => host1}/port-channel-interfaces.yml | 0 .../eos_cli_config_gen/inventory/hosts.yml | 2 - 9 files changed, 1510 insertions(+), 3699 deletions(-) delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg rename ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/{ => host1}/ethernet-interfaces.yml (100%) rename ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/{ => host1}/port-channel-interfaces.yml (100%) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md deleted file mode 100644 index 4d5efd742a5..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md +++ /dev/null @@ -1,1299 +0,0 @@ -# ethernet-interfaces - -## Table of Contents - -- [Management](#management) - - [Management Interfaces](#management-interfaces) -- [DHCP Server](#dhcp-server) - - [DHCP Server Interfaces](#dhcp-server-interfaces) -- [Monitoring](#monitoring) - - [SFlow](#sflow) -- [Interfaces](#interfaces) - - [Ethernet Interfaces](#ethernet-interfaces-1) -- [BFD](#bfd) - - [BFD Interfaces](#bfd-interfaces) -- [MPLS](#mpls) - - [MPLS Interfaces](#mpls-interfaces) -- [Multicast](#multicast) - - [PIM Sparse Mode](#pim-sparse-mode) -- [802.1X Port Security](#8021x-port-security) - - [802.1X Summary](#8021x-summary) -- [Power Over Ethernet (PoE)](#power-over-ethernet-poe) - - [PoE Summary](#poe-summary) -- [Quality Of Service](#quality-of-service) - - [QOS Interfaces](#qos-interfaces) - -## Management - -### Management Interfaces - -#### Management Interfaces Summary - -##### IPv4 - -| Management Interface | Description | Type | VRF | IP Address | Gateway | -| -------------------- | ----------- | ---- | --- | ---------- | ------- | -| Management1 | OOB_MANAGEMENT | oob | MGMT | 10.73.255.122/24 | 10.73.255.2 | - -##### IPv6 - -| Management Interface | Description | Type | VRF | IPv6 Address | IPv6 Gateway | -| -------------------- | ----------- | ---- | --- | ------------ | ------------ | -| Management1 | OOB_MANAGEMENT | oob | MGMT | - | - | - -#### Management Interfaces Device Configuration - -```eos -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 -``` - -## DHCP Server - -### DHCP Server Interfaces - -| Interface name | DHCP IPv4 | DHCP IPv6 | -| -------------- | --------- | --------- | -| Ethernet64 | True | True | - -## Monitoring - -### SFlow - -#### SFlow Summary - -sFlow is disabled. - -#### SFlow Interfaces - -| Interface | Ingress Enabled | Egress Enabled | -| --------- | --------------- | -------------- | -| Ethernet50 | True | - | -| Ethernet51 | - | True | -| Ethernet52 | True | True (unmodified) | -| Ethernet53 | False | False | -| Ethernet54 | False | False (unmodified) | - -## Interfaces - -### Ethernet Interfaces - -#### Ethernet Interfaces Summary - -##### L2 - -| Interface | Description | Mode | VLANs | Native VLAN | Trunk Group | Channel-Group | -| --------- | ----------- | ---- | ----- | ----------- | ----------- | ------------- | -| Ethernet1 | P2P_LINK_TO_DC1-SPINE1_Ethernet1 | dot1q-tunnel | 110-111,200,210-211 | tag | g1, g2 | - | -| Ethernet2 | SRV-POD02_Eth1 | trunk | 110-111,210-211 | - | - | - | -| Ethernet3 | P2P_LINK_TO_DC1-SPINE2_Ethernet2 | trunk | - | 5 | - | - | -| Ethernet5 | Molecule Routing | - | 220 | - | - | - | -| Ethernet6 | SRV-POD02_Eth1 | trunk | 110-111,210-211 | - | - | - | -| Ethernet7 | Molecule L2 | - | - | - | - | - | -| Ethernet11 | interface_in_mode_access_accepting_tagged_LACP | access | 200 | - | - | - | -| Ethernet12 | interface_with_dot1q_tunnel | dot1q-tunnel | 300 | - | - | - | -| Ethernet13 | interface_in_mode_access_with_voice | trunk phone | - | 100 | - | - | -| Ethernet14 | SRV-POD02_Eth1 | trunk | 110-111,210-211 | - | - | - | -| Ethernet15 | PVLAN Promiscuous Access - only one secondary | access | 110 | - | - | - | -| Ethernet16 | PVLAN Promiscuous Trunk - vlan translation out | trunk | 110-112 | - | - | - | -| Ethernet17 | PVLAN Secondary Trunk | trunk | 110-112 | - | - | - | -| Ethernet19 | Switched port with no LLDP rx/tx | access | 110 | - | - | - | -| Ethernet21 | 200MBit/s shape | - | - | - | - | - | -| Ethernet22 | 10% shape | - | - | - | - | - | -| Ethernet23 | Error-correction encoding | - | - | - | - | - | -| Ethernet24 | Disable error-correction encoding | - | - | - | - | - | -| Ethernet25 | Molecule MAC | - | - | - | - | - | -| Ethernet27 | EVPN-Vxlan single-active redundancy | - | - | - | - | - | -| Ethernet28 | EVPN-MPLS multihoming | - | - | - | - | - | -| Ethernet29 | DOT1X Testing - auto phone true | - | - | - | - | - | -| Ethernet30 | DOT1X Testing - force-authorized phone false | - | - | - | - | - | -| Ethernet31 | DOT1X Testing - force-unauthorized - no phone | - | - | - | - | - | -| Ethernet32 | DOT1X Testing - auto reauthentication | - | - | - | - | - | -| Ethernet33 | DOT1X Testing - pae mode authenticator | - | - | - | - | - | -| Ethernet34 | DOT1X Testing - authentication_failure allow | - | - | - | - | - | -| Ethernet35 | DOT1X Testing - authentication_failure drop | - | - | - | - | - | -| Ethernet36 | DOT1X Testing - host-mode single-host | - | - | - | - | - | -| Ethernet37 | DOT1X Testing - host-mode multi-host | - | - | - | - | - | -| Ethernet38 | DOT1X Testing - host-mode multi-host authenticated | - | - | - | - | - | -| Ethernet39 | DOT1X Testing - mac_based_authentication host-mode common true | - | - | - | - | - | -| Ethernet40 | DOT1X Testing - mac_based_authentication always | - | - | - | - | - | -| Ethernet41 | DOT1X Testing - mac_based_authentication always and host-mode common | - | - | - | - | - | -| Ethernet42 | DOT1X Testing - mac_based_authentication | - | - | - | - | - | -| Ethernet43 | DOT1X Testing - timeout values | - | - | - | - | - | -| Ethernet44 | DOT1X Testing - reauthorization_request_limit | - | - | - | - | - | -| Ethernet45 | DOT1X Testing - all features | - | - | - | - | - | -| Ethernet46 | native-vlan-tag-precedence | trunk | - | tag | - | - | -| Ethernet48 | Load Interval | - | - | - | - | - | -| Ethernet50 | SFlow Interface Testing - SFlow ingress enabled | - | - | - | - | - | -| Ethernet51 | SFlow Interface Testing - SFlow egress enabled | - | - | - | - | - | -| Ethernet52 | SFlow Interface Testing - SFlow ingress and egress unmodified enabled | - | - | - | - | - | -| Ethernet53 | SFlow Interface Testing - SFlow ingress and egress disabled | - | - | - | - | - | -| Ethernet54 | SFlow Interface Testing - SFlow ingress and egress unmodified disabled | - | - | - | - | - | -| Ethernet56 | Interface with poe commands and limit in class | - | - | - | - | - | -| Ethernet57 | Interface with poe commands and limit in watts | - | - | - | - | - | -| Ethernet58 | Interface with poe disabled and no other poe keys | - | - | - | - | - | -| Ethernet60 | IP NAT Testing | - | - | - | - | - | -| Ethernet61 | interface_in_mode_access_with_voice | trunk phone | - | 100 | - | - | -| Ethernet62 | interface_in_mode_access_with_voice | trunk phone | - | 100 | - | - | -| Ethernet67 | Custom_Transceiver_Frequency | - | - | - | - | - | -| Ethernet68 | Custom_Transceiver_Frequency | - | - | - | - | - | -| Ethernet69 | IP NAT service-profile | - | - | - | - | - | - -*Inherited from Port-Channel Interface - -##### Encapsulation Dot1q Interfaces - -| Interface | Description | Vlan ID | Dot1q VLAN Tag | Dot1q Inner VLAN Tag | -| --------- | ----------- | ------- | -------------- | -------------------- | -| Ethernet8.101 | to WAN-ISP-01 Ethernet2.101 - VRF-C1 | - | 101 | - | -| Ethernet67.1 | Test_encapsulation_dot1q | - | 4 | 34 | - -##### Flexible Encapsulation Interfaces - -| Interface | Description | Vlan ID | Client Encapsulation | Client Inner Encapsulation | Client VLAN | Client Outer VLAN Tag | Client Inner VLAN Tag | Network Encapsulation | Network Inner Encapsulation | Network VLAN | Network Outer VLAN Tag | Network Inner VLAN Tag | -| --------- | ----------- | ------- | --------------- | --------------------- | ----------- | --------------------- | --------------------- | ---------------- | ---------------------- |------------ | ---------------------- | ---------------------- | -| Ethernet26.1 | TENANT_A pseudowire 1 interface | - | unmatched | - | - | - | - | - | - | - | - | - | -| Ethernet26.100 | TENANT_A pseudowire 1 interface | 10 | dot1q | - | 100 | - | - | client | - | - | - | - | -| Ethernet26.200 | TENANT_A pseudowire 2 interface | - | dot1q | - | 200 | - | - | - | - | - | - | - | -| Ethernet26.300 | TENANT_A pseudowire 3 interface | - | dot1q | - | 300 | - | - | dot1q | - | 400 | - | - | -| Ethernet26.400 | TENANT_A pseudowire 3 interface | - | dot1q | - | - | 400 | 20 | dot1q | - | - | 401 | 21 | -| Ethernet26.500 | TENANT_A pseudowire 3 interface | - | dot1q | - | - | 500 | 50 | client | - | - | - | - | -| Ethernet68.1 | Test_encapsulation_vlan1 | - | dot1q | dot1q | - | 23 | 45 | dot1ad | dot1ad | - | 32 | 54 | -| Ethernet68.2 | Test_encapsulation_vlan2 | - | dot1q | - | 10 | - | - | dot1q | - | - | 32 | 54 | -| Ethernet68.3 | Test_encapsulation_vlan3 | - | dot1ad | - | 12 | - | - | dot1q | - | 25 | - | - | -| Ethernet68.4 | Test_encapsulation_vlan4 | - | dot1ad | dot1q | - | 35 | 60 | dot1q | dot1ad | - | 53 | 6 | -| Ethernet68.5 | Test_encapsulation_vlan5 | - | dot1ad | - | - | 35 | 60 | dot1ad | - | - | 52 | 62 | -| Ethernet68.6 | Test_encapsulation_vlan6 | - | dot1ad | - | - | 35 | 60 | client | - | - | - | - | -| Ethernet68.7 | Test_encapsulation_vlan7 | - | untagged | - | - | - | - | dot1ad | - | - | 35 | 60 | -| Ethernet68.8 | Test_encapsulation_vlan8 | - | untagged | - | - | - | - | dot1q | - | - | 35 | 60 | -| Ethernet68.9 | Test_encapsulation_vlan9 | - | untagged | - | - | - | - | untagged | - | - | - | - | -| Ethernet68.10 | Test_encapsulation_vlan9 | - | dot1q | - | - | 14 | 11 | client inner | - | - | - | - | - -##### Private VLAN - -| Interface | PVLAN Mapping | Secondary Trunk | -| --------- | ------------- | ----------------| -| Ethernet1 | 20-30 | True | -| Ethernet2 | - | False | -| Ethernet15 | 111 | - | -| Ethernet17 | - | True | - -##### VLAN Translations - -| Interface | Direction | From VLAN ID(s) | To VLAN ID | From Inner VLAN ID | To Inner VLAN ID | Network | Dot1q-tunnel | -| --------- | --------- | --------------- | ---------- | ------------------ | ---------------- | ------- | ------------ | -| Ethernet1 | both | 12 | 20 | - | - | - | - | -| Ethernet1 | both | 24 | 46 | 78 | - | True | - | -| Ethernet1 | both | 24 | 46 | 78 | - | False | - | -| Ethernet1 | both | 43 | 30 | - | - | - | True | -| Ethernet1 | in | 10 | 24 | - | - | - | - | -| Ethernet1 | in | 23 | 45 | - | - | - | True | -| Ethernet1 | in | 37 | 49 | 56 | - | - | - | -| Ethernet1 | out | 10 | 45 | - | 34 | - | - | -| Ethernet1 | out | 34 | 50 | - | - | - | - | -| Ethernet1 | out | 45 | all | - | - | - | True | -| Ethernet1 | out | 55 | - | - | - | - | - | -| Ethernet3 | out | 23 | 50 | - | - | - | True | -| Ethernet16 | out | 111-112 | 110 | - | - | - | - | - -##### TCP MSS Clamping - -| Interface | Ipv4 Segment Size | Ipv6 Segment Size | Direction | -| --------- | ----------------- | ----------------- | --------- | -| Ethernet1 | 70 | 75 | egress | -| Ethernet2 | 70 | - | ingress | -| Ethernet3 | - | 65 | - | -| Ethernet4 | 65 | - | - | - -##### Transceiver Settings - -| Interface | Transceiver Frequency | Media Override | -| --------- | --------------------- | -------------- | -| Ethernet7 | - | 100gbase-ar4 | -| Ethernet67 | 190050.000 | - | -| Ethernet68 | 190080.000 ghz | 100gbase-ar4 | - -##### Link Tracking Groups - -| Interface | Group Name | Direction | -| --------- | ---------- | --------- | -| Ethernet1 | EVPN_MH_ES1 | upstream | -| Ethernet3 | EVPN_MH_ES2 | downstream | - -##### Phone Interfaces - -| Interface | Mode | Native VLAN | Phone VLAN | Phone VLAN Mode | -| --------- | ---- | ----------- | ---------- | --------------- | -| Ethernet1 | dot1q-tunnel | 5 | 110 | tagged | -| Ethernet13 | trunk phone | 100 | 70 | untagged | -| Ethernet61 | trunk phone | 100 | 70 | untagged phone | -| Ethernet62 | trunk phone | 100 | 70 | tagged phone | - -##### Multicast Routing - -| Interface | IP Version | Static Routes Allowed | Multicast Boundaries | -| --------- | ---------- | --------------------- | -------------------- | -| Ethernet2 | IPv4 | True | ACL_MULTICAST | -| Ethernet2 | IPv6 | - | ACL_V6_MULTICAST | -| Ethernet4 | IPv4 | True | 224.0.1.0/24, 224.0.2.0/24 | -| Ethernet4 | IPv6 | - | ff00::/16, ff01::/16 | -| Ethernet9 | IPv4 | - | ACL_MULTICAST | -| Ethernet9 | IPv6 | True | - | - -##### IPv4 - -| Interface | Description | Channel Group | IP Address | VRF | MTU | Shutdown | ACL In | ACL Out | -| --------- | ----------- | ------------- | ---------- | ----| ---- | -------- | ------ | ------- | -| Ethernet1 | P2P_LINK_TO_DC1-SPINE1_Ethernet1 | - | 172.31.255.1/31 | default | 1500 | - | - | - | -| Ethernet2 | SRV-POD02_Eth1 | - | 10.1.255.3/24 | default | - | - | - | - | -| Ethernet3 | P2P_LINK_TO_DC1-SPINE2_Ethernet2 | - | 172.31.128.1/31 | default | 1500 | - | - | - | -| Ethernet8.101 | to WAN-ISP-01 Ethernet2.101 - VRF-C1 | - | 172.31.128.1/31 | default | - | - | - | - | -| Ethernet9 | interface_with_mpls_enabled | - | 172.31.128.9/31 | default | - | - | - | - | -| Ethernet10 | interface_with_mpls_disabled | - | 172.31.128.10/31 | default | - | - | - | - | -| Ethernet18 | PBR Description | - | 192.0.2.1/31 | default | 1500 | - | - | - | -| Ethernet47 | IP Helper | - | 172.31.255.1/31 | default | - | - | - | - | -| Ethernet63 | DHCP client interface | - | dhcp | default | - | - | - | - | -| Ethernet64 | DHCP server interface | - | 192.168.42.42/24 | default | - | - | - | - | -| Ethernet65 | Multiple VRIDs | - | 192.0.2.2/25 | default | - | False | - | - | -| Ethernet66 | Multiple VRIDs and tracking | - | 192.0.2.2/25 | default | - | False | - | - | - -##### IP NAT: Source Static - -| Interface | Direction | Original IP | Original Port | Access List | Translated IP | Translated Port | Protocol | Group | Priority | Comment | -| --------- | --------- | ----------- | ------------- | ----------- | ------------- | --------------- | -------- | ----- | -------- | ------- | -| Ethernet60 | - | 3.0.0.1 | - | - | 4.0.0.1 | - | - | - | 0 | - | -| Ethernet60 | - | 3.0.0.2 | 22 | - | 4.0.0.2 | - | - | - | 0 | - | -| Ethernet60 | - | 3.0.0.3 | 22 | - | 4.0.0.3 | 23 | - | - | 0 | - | -| Ethernet60 | - | 3.0.0.4 | 22 | - | 4.0.0.4 | 23 | UDP | - | 0 | - | -| Ethernet60 | - | 3.0.0.5 | 22 | - | 4.0.0.5 | 23 | TCP | 1 | 0 | - | -| Ethernet60 | - | 3.0.0.6 | 22 | - | 4.0.0.6 | 23 | TCP | 2 | 5 | Comment Test | -| Ethernet60 | - | 3.0.0.7 | - | ACL21 | 4.0.0.7 | - | - | - | 0 | - | -| Ethernet60 | ingress | 3.0.0.8 | - | - | 4.0.0.8 | - | - | - | 0 | - | - -##### IP NAT: Source Dynamic - -| Interface | Access List | NAT Type | Pool Name | Priority | Comment | -| --------- | ----------- | -------- | --------- | -------- | ------- | -| Ethernet60 | ACL11 | pool | POOL11 | 0 | - | -| Ethernet60 | ACL12 | pool | POOL11 | 0 | POOL11 shared with ACL11/12 | -| Ethernet60 | ACL13 | pool | POOL13 | 10 | - | -| Ethernet60 | ACL14 | pool | POOL14 | 1 | Priority low end | -| Ethernet60 | ACL15 | pool | POOL15 | 4294967295 | Priority high end | -| Ethernet60 | ACL16 | pool | POOL16 | 0 | Priority default | -| Ethernet60 | ACL17 | overload | - | 10 | Priority_10 | -| Ethernet60 | ACL18 | pool-address-only | POOL18 | 10 | Priority_10 | -| Ethernet60 | ACL19 | pool-full-cone | POOL19 | 10 | Priority_10 | - -##### IP NAT: Destination Static - -| Interface | Direction | Original IP | Original Port | Access List | Translated IP | Translated Port | Protocol | Group | Priority | Comment | -| --------- | --------- | ----------- | ------------- | ----------- | ------------- | --------------- | -------- | ----- | -------- | ------- | -| Ethernet60 | - | 1.0.0.1 | - | - | 2.0.0.1 | - | - | - | 0 | - | -| Ethernet60 | - | 1.0.0.2 | 22 | - | 2.0.0.2 | - | - | - | 0 | - | -| Ethernet60 | - | 1.0.0.3 | 22 | - | 2.0.0.3 | 23 | - | - | 0 | - | -| Ethernet60 | - | 1.0.0.4 | 22 | - | 2.0.0.4 | 23 | udp | - | 0 | - | -| Ethernet60 | - | 1.0.0.5 | 22 | - | 2.0.0.5 | 23 | tcp | 1 | 0 | - | -| Ethernet60 | - | 1.0.0.6 | 22 | - | 2.0.0.6 | 23 | tcp | 2 | 5 | Comment Test | -| Ethernet60 | - | 1.0.0.7 | - | ACL21 | 2.0.0.7 | - | - | - | 0 | - | -| Ethernet60 | egress | 239.0.0.1 | - | - | 239.0.0.2 | - | - | - | 0 | - | - -##### IP NAT: Destination Dynamic - -| Interface | Access List | Pool Name | Priority | Comment | -| --------- | ----------- | --------- | -------- | ------- | -| Ethernet60 | ACL1 | POOL1 | 0 | - | -| Ethernet60 | ACL2 | POOL1 | 0 | POOL1 shared with ACL1/2 | -| Ethernet60 | ACL3 | POOL3 | 10 | - | -| Ethernet60 | ACL4 | POOL4 | 1 | Priority low end | -| Ethernet60 | ACL5 | POOL5 | 4294967295 | Priority high end | -| Ethernet60 | ACL6 | POOL6 | 0 | Priority default | - -##### IP NAT: Interfaces configured via profile - -| Interface | Profile | -| --------- |-------- | -| Ethernet69 | TEST-NAT-PROFILE | - -##### IPv6 - -| Interface | Description | Channel Group | IPv6 Address | VRF | MTU | Shutdown | ND RA Disabled | Managed Config Flag | IPv6 ACL In | IPv6 ACL Out | -| --------- | ----------- | --------------| ------------ | --- | --- | -------- | -------------- | -------------------| ----------- | ------------ | -| Ethernet3 | P2P_LINK_TO_DC1-SPINE2_Ethernet2 | - | 2002:ABDC::1/64 | default | 1500 | - | - | - | - | - | -| Ethernet4 | Molecule IPv6 | - | 2020::2020/64 | default | 9100 | True | True | True | IPv6_ACL_IN | IPv6_ACL_OUT | -| Ethernet8.101 | to WAN-ISP-01 Ethernet2.101 - VRF-C1 | - | 2002:ABDC::1/64 | default | - | - | - | - | - | - | -| Ethernet55 | DHCPv6 Relay Testing | - | a0::1/64 | default | - | False | - | - | - | - | -| Ethernet65 | Multiple VRIDs | - | 2001:db8::2/64 | default | - | False | - | - | - | - | -| Ethernet66 | Multiple VRIDs and tracking | - | 2001:db8::2/64 | default | - | False | - | - | - | - | - -##### VRRP Details - -| Interface | VRRP-ID | Priority | Advertisement Interval | Preempt | Tracked Object Name(s) | Tracked Object Action(s) | IPv4 Virtual IP | IPv4 VRRP Version | IPv6 Virtual IP | -| --------- | ------- | -------- | ---------------------- | --------| ---------------------- | ------------------------ | --------------- | ----------------- | --------------- | -| Ethernet65 | 1 | 105 | 2 | Enabled | - | - | 192.0.2.1 | 2 | - | -| Ethernet65 | 2 | - | - | Enabled | - | - | - | 2 | 2001:db8::1 | -| Ethernet66 | 1 | 105 | 2 | Enabled | ID1-TrackedObjectDecrement, ID1-TrackedObjectShutdown | Decrement 5, Shutdown | 192.0.2.1 | 2 | - | -| Ethernet66 | 2 | - | - | Enabled | ID2-TrackedObjectDecrement, ID2-TrackedObjectShutdown | Decrement 10, Shutdown | - | 2 | 2001:db8::1 | -| Ethernet66 | 3 | - | - | Disabled | - | - | 100.64.0.1 | 3 | - | - -##### ISIS - -| Interface | Channel Group | ISIS Instance | ISIS BFD | ISIS Metric | Mode | ISIS Circuit Type | Hello Padding | Authentication Mode | -| --------- | ------------- | ------------- | -------- | ----------- | ---- | ----------------- | ------------- | ------------------- | -| Ethernet5 | - | ISIS_TEST | True | 99 | point-to-point | level-2 | False | md5 | - -##### EVPN Multihoming - -####### EVPN Multihoming Summary - -| Interface | Ethernet Segment Identifier | Multihoming Redundancy Mode | Route Target | -| --------- | --------------------------- | --------------------------- | ------------ | -| Ethernet27 | 0000:0000:0000:0102:0304 | single-active | 00:00:01:02:03:04 | -| Ethernet28 | 0000:0000:0000:0102:0305 | all-active | 00:00:01:02:03:05 | - -####### Designated Forwarder Election Summary - -| Interface | Algorithm | Preference Value | Dont Preempt | Hold time | Subsequent Hold Time | Candidate Reachability Required | -| --------- | --------- | ---------------- | ------------ | --------- | -------------------- | ------------------------------- | -| Ethernet27 | preference | 100 | True | 10 | - | True | - -####### EVPN-MPLS summary - -| Interface | Shared Index | Tunnel Flood Filter Time | -| --------- | ------------ | ------------------------ | -| Ethernet28 | 100 | 100 | - -##### Error Correction Encoding Interfaces - -| Interface | Enabled | -| --------- | ------- | -| Ethernet23 | fire-code
reed-solomon | -| Ethernet24 | Disabled | - -#### Priority Flow Control - -| Interface | PFC | Priority | Drop/No_drop | -| Ethernet1 | True | 5 | False | -| Ethernet2 | True | 5 | True | -| Ethernet3 | False | - | - | -| Ethernet4 | True | - | - | - -#### Ethernet Interfaces Device Configuration - -```eos -! -interface Ethernet1 - description P2P_LINK_TO_DC1-SPINE1_Ethernet1 - mtu 1500 - bgp session tracker ST1 - l2 mtu 8000 - l2 mru 8000 - speed forced 100gfull - switchport access vlan 200 - switchport trunk native vlan tag - switchport phone vlan 110 - switchport phone trunk tagged - switchport vlan translation in required - switchport dot1q vlan tag required - switchport trunk allowed vlan 110-111,210-211 - switchport mode dot1q-tunnel - switchport dot1q ethertype 1536 - switchport vlan forwarding accept all - switchport trunk group g1 - switchport trunk group g2 - no switchport - switchport source-interface tx - switchport vlan translation 12 20 - switchport vlan translation 24 inner 78 network 46 - switchport vlan translation 24 inner 78 46 - switchport vlan translation 43 dot1q-tunnel 30 - switchport vlan translation in 10 24 - switchport vlan translation in 37 inner 56 49 - switchport vlan translation in 23 dot1q-tunnel 45 - switchport vlan translation out 34 50 - switchport vlan translation out 10 45 inner 34 - switchport vlan translation out 45 dot1q-tunnel all - switchport trunk private-vlan secondary - switchport pvlan mapping 20-30 - ip address 172.31.255.1/31 - ip verify unicast source reachable-via rx - bfd interval 500 min-rx 500 multiplier 5 - bfd echo - ip igmp host-proxy - ip igmp host-proxy 239.0.0.1 - ip igmp host-proxy 239.0.0.2 exclude 10.0.2.1 - ip igmp host-proxy 239.0.0.3 include 10.0.3.1 - ip igmp host-proxy 239.0.0.4 include 10.0.4.3 - ip igmp host-proxy 239.0.0.4 include 10.0.4.4 - ip igmp host-proxy 239.0.0.4 exclude 10.0.4.1 - ip igmp host-proxy 239.0.0.4 exclude 10.0.4.2 - ip igmp host-proxy access-list ACL1 - ip igmp host-proxy access-list ACL2 - ip igmp host-proxy report-interval 2 - ip igmp host-proxy version 2 - tcp mss ceiling ipv4 70 ipv6 75 egress - switchport port-security - switchport port-security mac-address maximum disabled - priority-flow-control on - priority-flow-control priority 5 drop - switchport backup-link Ethernet5 prefer vlan 10 - switchport backup preemption-delay 35 - switchport backup mac-move-burst 20 - switchport backup mac-move-burst-interval 30 - switchport backup initial-mac-move-delay 10 - switchport backup dest-macaddr 01:00:00:00:00:00 - link tracking group EVPN_MH_ES1 upstream - comment - Comment created from eos_cli under ethernet_interfaces.Ethernet1 - EOF - -! -interface Ethernet2 - description SRV-POD02_Eth1 - switchport dot1q vlan tag disallowed - switchport trunk allowed vlan 110-111,210-211 - switchport mode trunk - switchport - ip address 10.1.255.3/24 - ip address 1.1.1.3/24 secondary - ip address 1.1.1.4/24 secondary - ip address 10.0.0.254/24 secondary - ip address 192.168.1.1/24 secondary - tcp mss ceiling ipv4 70 ingress - multicast ipv4 boundary ACL_MULTICAST - multicast ipv6 boundary ACL_V6_MULTICAST out - multicast ipv4 static - switchport port-security violation protect log - switchport port-security mac-address maximum 100 - priority-flow-control on - priority-flow-control priority 5 no-drop - storm-control broadcast level pps 500 - storm-control unknown-unicast level 1 - storm-control all level 10 - spanning-tree bpduguard disable - spanning-tree bpdufilter disable -! -interface Ethernet3 - description P2P_LINK_TO_DC1-SPINE2_Ethernet2 - mtu 1500 - switchport trunk native vlan 5 - switchport mode trunk - no switchport - switchport vlan translation out 23 dot1q-tunnel 50 - no snmp trap link-change - ip address 172.31.128.1/31 - ipv6 enable - ipv6 address 2002:ABDC::1/64 - ipv6 nd prefix 2345:ABCD:3FE0::1/96 infinite 50 no-autoconfig - ipv6 nd prefix 2345:ABCD:3FE0::2/96 50 infinite - ipv6 nd prefix 2345:ABCD:3FE0::3/96 100000 no-autoconfig - tcp mss ceiling ipv6 65 - switchport port-security - no switchport port-security mac-address maximum disabled - switchport port-security vlan 1 mac-address maximum 3 - switchport port-security vlan 2 mac-address maximum 3 - switchport port-security vlan 2 mac-address maximum 4 - switchport port-security vlan 3 mac-address maximum 3 - switchport port-security vlan 22 mac-address maximum 4 - switchport port-security vlan 41 mac-address maximum 4 - switchport port-security vlan default mac-address maximum 2 - no priority-flow-control - spanning-tree guard root - switchport backup-link Ethernet4 - link tracking group EVPN_MH_ES2 downstream -! -interface Ethernet4 - description Molecule IPv6 - shutdown - mtu 9100 - no switchport - snmp trap link-change - ipv6 enable - ipv6 address 2020::2020/64 - ipv6 address FE80:FEA::AB65/64 link-local - ipv6 nd ra disabled - ipv6 nd managed-config-flag - tcp mss ceiling ipv4 65 - ipv6 access-group IPv6_ACL_IN in - ipv6 access-group IPv6_ACL_OUT out - multicast ipv4 boundary 224.0.1.0/24 out - multicast ipv4 boundary 224.0.2.0/24 - multicast ipv6 boundary ff00::/16 out - multicast ipv6 boundary ff01::/16 out - multicast ipv4 static - switchport port-security violation protect - priority-flow-control on - spanning-tree guard none -! -interface Ethernet5 - description Molecule Routing - no shutdown - mtu 9100 - switchport access vlan 220 - no switchport - ip ospf cost 99 - ip ospf network point-to-point - ip ospf authentication message-digest - ip ospf authentication-key 7 - ip ospf area 100 - ip ospf message-digest-key 1 sha512 7 - pim ipv4 sparse-mode - pim ipv4 bidirectional - pim ipv4 border-router - pim ipv4 hello interval 10 - pim ipv4 hello count 2.5 - pim ipv4 dr-priority 200 - pim ipv4 bfd - isis enable ISIS_TEST - isis bfd - isis circuit-type level-2 - isis metric 99 - no isis hello padding - isis network point-to-point - isis authentication mode md5 - isis authentication key 7 - spanning-tree guard loop -! -interface Ethernet6 - description SRV-POD02_Eth1 - logging event link-status - logging event congestion-drops - switchport trunk allowed vlan 110-111,210-211 - switchport mode trunk - switchport - logging event storm-control discards - spanning-tree bpduguard enable - spanning-tree bpdufilter enable - logging event spanning-tree -! -interface Ethernet7 - description Molecule L2 - no shutdown - mtu 7000 - switchport - ptp enable - ptp announce interval 10 - ptp announce timeout 30 - ptp delay-mechanism p2p - ptp delay-req interval 20 - ptp role master - ptp sync-message interval 5 - ptp transport layer2 - ptp vlan all - service-profile QoS - qos trust cos - qos cos 5 - storm-control broadcast level pps 10 - storm-control multicast level 50 - storm-control unknown-unicast level 10 - storm-control all level 75 - spanning-tree portfast - spanning-tree bpduguard enable - spanning-tree bpdufilter enable - vmtracer vmware-esx - transceiver media override 100gbase-ar4 -! -interface Ethernet8 - description to WAN-ISP1-01 Ethernet2 - no switchport - no lldp transmit - no lldp receive -! -interface Ethernet8.101 - description to WAN-ISP-01 Ethernet2.101 - VRF-C1 - encapsulation dot1q vlan 101 - ip address 172.31.128.1/31 - ipv6 enable - ipv6 address 2002:ABDC::1/64 -! -interface Ethernet9 - description interface_with_mpls_enabled - no switchport - ip address 172.31.128.9/31 - mpls ldp interface - multicast ipv4 boundary ACL_MULTICAST out - multicast ipv6 static - mpls ip -! -interface Ethernet10 - description interface_with_mpls_disabled - no switchport - ip address 172.31.128.10/31 - no mpls ldp interface - no mpls ip -! -interface Ethernet11 - description interface_in_mode_access_accepting_tagged_LACP - switchport access vlan 200 - switchport mode access - switchport - l2-protocol encapsulation dot1q vlan 200 -! -interface Ethernet12 - description interface_with_dot1q_tunnel - switchport access vlan 300 - switchport mode dot1q-tunnel - switchport -! -interface Ethernet13 - description interface_in_mode_access_with_voice - no logging event link-status - no logging event congestion-drops - switchport trunk native vlan 100 - switchport phone vlan 70 - switchport phone trunk untagged - switchport mode trunk phone - switchport - no logging event storm-control discards - no logging event spanning-tree -! -interface Ethernet14 - description SRV-POD02_Eth1 - logging event link-status - switchport trunk allowed vlan 110-111,210-211 - switchport mode trunk - switchport -! -interface Ethernet15 - description PVLAN Promiscuous Access - only one secondary - switchport access vlan 110 - switchport mode access - switchport - switchport pvlan mapping 111 -! -interface Ethernet16 - description PVLAN Promiscuous Trunk - vlan translation out - switchport vlan translation out required - switchport trunk allowed vlan 110-112 - switchport mode trunk - switchport - switchport vlan translation out 111-112 110 -! -interface Ethernet17 - description PVLAN Secondary Trunk - switchport trunk allowed vlan 110-112 - switchport mode trunk - switchport - switchport trunk private-vlan secondary -! -interface Ethernet18 - description PBR Description - mtu 1500 - no switchport - ip address 192.0.2.1/31 - service-policy type pbr input MyLANServicePolicy -! -interface Ethernet19 - description Switched port with no LLDP rx/tx - switchport access vlan 110 - switchport mode access - switchport - no lldp transmit - no lldp receive - lldp tlv transmit ztp vlan 666 -! -interface Ethernet20 - description Port patched through patch-panel to pseudowire - no switchport - no lldp transmit - no lldp receive -! -interface Ethernet21 - description 200MBit/s shape - switchport - no qos trust - shape rate 200000 kbps -! -interface Ethernet22 - description 10% shape - switchport - shape rate 10 percent -! -interface Ethernet23 - description Error-correction encoding - error-correction encoding fire-code - error-correction encoding reed-solomon - switchport -! -interface Ethernet24 - description Disable error-correction encoding - no error-correction encoding - switchport -! -interface Ethernet25 - description Molecule MAC - switchport - mac access-group MAC_ACL_IN in - mac access-group MAC_ACL_OUT out -! -interface Ethernet26 - no switchport -! -interface Ethernet26.1 - description TENANT_A pseudowire 1 interface - encapsulation vlan - client unmatched -! -interface Ethernet26.100 - description TENANT_A pseudowire 1 interface - vlan id 10 - encapsulation vlan - client dot1q 100 network client -! -interface Ethernet26.200 - description TENANT_A pseudowire 2 interface - encapsulation vlan - client dot1q 200 -! -interface Ethernet26.300 - description TENANT_A pseudowire 3 interface - encapsulation vlan - client dot1q 300 network dot1q 400 -! -interface Ethernet26.400 - description TENANT_A pseudowire 3 interface - encapsulation vlan - client dot1q outer 400 inner 20 network dot1q outer 401 inner 21 -! -interface Ethernet26.500 - description TENANT_A pseudowire 3 interface - encapsulation vlan - client dot1q outer 500 inner 50 network client -! -interface Ethernet27 - description EVPN-Vxlan single-active redundancy - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0000:0102:0304 - redundancy single-active - designated-forwarder election algorithm preference 100 dont-preempt - designated-forwarder election hold-time 10 - designated-forwarder election candidate reachability required - route-target import 00:00:01:02:03:04 -! -interface Ethernet28 - description EVPN-MPLS multihoming - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0000:0102:0305 - mpls tunnel flood filter time 100 - mpls shared index 100 - route-target import 00:00:01:02:03:05 -! -interface Ethernet29 - description DOT1X Testing - auto phone true - switchport - dot1x port-control auto - dot1x port-control force-authorized phone -! -interface Ethernet30 - description DOT1X Testing - force-authorized phone false - switchport - dot1x port-control force-authorized - no dot1x port-control force-authorized phone -! -interface Ethernet31 - description DOT1X Testing - force-unauthorized - no phone - switchport - dot1x port-control force-unauthorized -! -interface Ethernet32 - description DOT1X Testing - auto reauthentication - switchport - dot1x reauthentication - dot1x port-control auto -! -interface Ethernet33 - description DOT1X Testing - pae mode authenticator - switchport - dot1x pae authenticator -! -interface Ethernet34 - description DOT1X Testing - authentication_failure allow - switchport - dot1x authentication failure action traffic allow vlan 800 -! -interface Ethernet35 - description DOT1X Testing - authentication_failure drop - switchport - dot1x authentication failure action traffic drop -! -interface Ethernet36 - description DOT1X Testing - host-mode single-host - switchport - dot1x host-mode single-host -! -interface Ethernet37 - description DOT1X Testing - host-mode multi-host - switchport - dot1x host-mode multi-host -! -interface Ethernet38 - description DOT1X Testing - host-mode multi-host authenticated - switchport - dot1x host-mode multi-host authenticated -! -interface Ethernet39 - description DOT1X Testing - mac_based_authentication host-mode common true - switchport - dot1x mac based authentication host-mode common -! -interface Ethernet40 - description DOT1X Testing - mac_based_authentication always - switchport - dot1x mac based authentication always -! -interface Ethernet41 - description DOT1X Testing - mac_based_authentication always and host-mode common - switchport - dot1x mac based authentication host-mode common - dot1x mac based authentication always -! -interface Ethernet42 - description DOT1X Testing - mac_based_authentication - switchport - dot1x mac based authentication -! -interface Ethernet43 - description DOT1X Testing - timeout values - switchport - dot1x timeout quiet-period 10 - dot1x timeout reauth-timeout-ignore always - dot1x timeout tx-period 6 - dot1x timeout reauth-period server - dot1x timeout idle-host 15 seconds -! -interface Ethernet44 - description DOT1X Testing - reauthorization_request_limit - switchport - dot1x eapol disabled - dot1x reauthorization request limit 3 -! -interface Ethernet45 - description DOT1X Testing - all features - switchport - dot1x pae authenticator - dot1x authentication failure action traffic allow vlan 800 - dot1x reauthentication - dot1x port-control auto - dot1x host-mode multi-host authenticated - dot1x mac based authentication - dot1x timeout quiet-period 10 - dot1x timeout reauth-timeout-ignore always - dot1x timeout tx-period 10 - dot1x timeout reauth-period server - dot1x timeout idle-host 10 seconds - dot1x reauthorization request limit 2 - dot1x unauthorized access vlan membership egress - dot1x unauthorized native vlan membership egress - dot1x eapol authentication failure fallback mba timeout 600 -! -interface Ethernet46 - description native-vlan-tag-precedence - switchport trunk native vlan tag - switchport mode trunk - switchport -! -interface Ethernet47 - description IP Helper - no switchport - ip address 172.31.255.1/31 - ip helper-address 10.10.64.151 - ip helper-address 10.10.96.101 source-interface Loopback0 - ip helper-address 10.10.96.150 vrf MGMT source-interface Loopback0 - ip helper-address 10.10.96.151 vrf MGMT -! -interface Ethernet48 - description Load Interval - load-interval 5 - switchport -! -interface Ethernet50 - description SFlow Interface Testing - SFlow ingress enabled - switchport - sflow enable -! -interface Ethernet51 - description SFlow Interface Testing - SFlow egress enabled - switchport - sflow egress enable -! -interface Ethernet52 - description SFlow Interface Testing - SFlow ingress and egress unmodified enabled - switchport - sflow enable - sflow egress unmodified enable -! -interface Ethernet53 - description SFlow Interface Testing - SFlow ingress and egress disabled - switchport - no sflow enable - no sflow egress enable -! -interface Ethernet54 - description SFlow Interface Testing - SFlow ingress and egress unmodified disabled - switchport - no sflow enable - no sflow egress unmodified enable -! -interface Ethernet55 - description DHCPv6 Relay Testing - no shutdown - no switchport - ipv6 dhcp relay destination a0::2 link-address a0::3 - ipv6 dhcp relay destination a0::4 vrf TEST local-interface Loopback55 link-address a0::5 - ipv6 address a0::1/64 -! -interface Ethernet56 - description Interface with poe commands and limit in class - switchport - poe priority low - poe reboot action power-off - poe link down action power-off 10 seconds - poe shutdown action maintain - poe limit 30.00 watts - poe negotiation lldp disabled -! -interface Ethernet57 - description Interface with poe commands and limit in watts - switchport - poe priority critical - poe reboot action maintain - poe link down action maintain - poe shutdown action power-off - poe limit 45.00 watts fixed - poe legacy detect -! -interface Ethernet58 - description Interface with poe disabled and no other poe keys - switchport - poe disabled -! -interface Ethernet60 - description IP NAT Testing - switchport - ip nat destination static 1.0.0.1 2.0.0.1 - ip nat destination static 1.0.0.2 22 2.0.0.2 - ip nat destination static 1.0.0.3 22 2.0.0.3 23 - ip nat destination static 1.0.0.4 22 2.0.0.4 23 protocol udp - ip nat destination static 1.0.0.7 access-list ACL21 2.0.0.7 - ip nat source static 3.0.0.1 4.0.0.1 - ip nat source static 3.0.0.2 22 4.0.0.2 - ip nat source static 3.0.0.3 22 4.0.0.3 23 - ip nat source static 3.0.0.4 22 4.0.0.4 23 protocol udp - ip nat source static 3.0.0.7 access-list ACL21 4.0.0.7 - ip nat source ingress static 3.0.0.8 4.0.0.8 - ip nat destination egress static 239.0.0.1 239.0.0.2 - ip nat source static 3.0.0.5 22 4.0.0.5 23 protocol tcp group 1 - ip nat destination static 1.0.0.5 22 2.0.0.5 23 protocol tcp group 1 - ip nat source static 3.0.0.6 22 4.0.0.6 23 protocol tcp group 2 comment Comment Test - ip nat destination static 1.0.0.6 22 2.0.0.6 23 protocol tcp group 2 comment Comment Test - ip nat destination dynamic access-list ACL1 pool POOL1 - ip nat source dynamic access-list ACL11 pool POOL11 - ip nat source dynamic access-list ACL12 pool POOL11 comment POOL11 shared with ACL11/12 - ip nat source dynamic access-list ACL13 pool POOL13 priority 10 - ip nat source dynamic access-list ACL14 pool POOL14 priority 1 comment Priority low end - ip nat source dynamic access-list ACL15 pool POOL15 priority 4294967295 comment Priority high end - ip nat source dynamic access-list ACL16 pool POOL16 comment Priority default - ip nat source dynamic access-list ACL17 overload priority 10 comment Priority_10 - ip nat source dynamic access-list ACL18 pool POOL18 address-only priority 10 comment Priority_10 - ip nat source dynamic access-list ACL19 pool POOL19 full-cone priority 10 comment Priority_10 - ip nat destination dynamic access-list ACL2 pool POOL1 comment POOL1 shared with ACL1/2 - ip nat destination dynamic access-list ACL3 pool POOL3 priority 10 - ip nat destination dynamic access-list ACL4 pool POOL4 priority 1 comment Priority low end - ip nat destination dynamic access-list ACL5 pool POOL5 priority 4294967295 comment Priority high end - ip nat destination dynamic access-list ACL6 pool POOL6 comment Priority default -! -interface Ethernet61 - description interface_in_mode_access_with_voice - no logging event link-status - no logging event congestion-drops - switchport trunk native vlan 100 - switchport phone vlan 70 - switchport phone trunk untagged phone - switchport mode trunk phone - switchport - no logging event storm-control discards - no logging event spanning-tree -! -interface Ethernet62 - description interface_in_mode_access_with_voice - no logging event link-status - no logging event congestion-drops - switchport trunk native vlan 100 - switchport phone vlan 70 - switchport phone trunk tagged phone - switchport mode trunk phone - switchport - no logging event storm-control discards - no logging event spanning-tree -! -interface Ethernet63 - description DHCP client interface - no switchport - ip address dhcp - dhcp client accept default-route -! -interface Ethernet64 - description DHCP server interface - no switchport - mac timestamp replace-fcs - ip address 192.168.42.42/24 - dhcp server ipv4 - dhcp server ipv6 -! -interface Ethernet65 - description Multiple VRIDs - no shutdown - no switchport - mac timestamp header - ip address 192.0.2.2/25 - ipv6 enable - ipv6 address 2001:db8::2/64 - ipv6 address fe80::2/64 link-local - vrrp 1 priority-level 105 - vrrp 1 advertisement interval 2 - vrrp 1 preempt delay minimum 30 reload 800 - vrrp 1 ipv4 192.0.2.1 - vrrp 2 ipv6 2001:db8::1 -! -interface Ethernet66 - description Multiple VRIDs and tracking - no shutdown - no switchport - ip address 192.0.2.2/25 - ipv6 enable - ipv6 address 2001:db8::2/64 - ipv6 address fe80::2/64 link-local - vrrp 1 priority-level 105 - vrrp 1 advertisement interval 2 - vrrp 1 preempt delay minimum 30 reload 800 - vrrp 1 ipv4 192.0.2.1 - vrrp 1 tracked-object ID1-TrackedObjectDecrement decrement 5 - vrrp 1 tracked-object ID1-TrackedObjectShutdown shutdown - vrrp 2 ipv6 2001:db8::1 - vrrp 2 tracked-object ID2-TrackedObjectDecrement decrement 10 - vrrp 2 tracked-object ID2-TrackedObjectShutdown shutdown - no vrrp 3 preempt - vrrp 3 timers delay reload 900 - vrrp 3 ipv4 100.64.0.1 - vrrp 3 ipv4 version 3 -! -interface Ethernet67 - description Custom_Transceiver_Frequency - no shutdown - switchport - mac timestamp before-fcs - transceiver frequency 190050.000 -! -interface Ethernet67.1 - description Test_encapsulation_dot1q - encapsulation dot1q vlan 4 inner 34 -! -interface Ethernet68 - description Custom_Transceiver_Frequency - no shutdown - switchport - transceiver media override 100gbase-ar4 - transceiver frequency 190080.000 ghz -! -interface Ethernet68.1 - description Test_encapsulation_vlan1 - encapsulation vlan - client dot1q outer 23 inner dot1q 45 network dot1ad outer 32 inner dot1ad 54 -! -interface Ethernet68.2 - description Test_encapsulation_vlan2 - encapsulation vlan - client dot1q 10 network dot1q outer 32 inner 54 -! -interface Ethernet68.3 - description Test_encapsulation_vlan3 - encapsulation vlan - client dot1ad 12 network dot1q 25 -! -interface Ethernet68.4 - description Test_encapsulation_vlan4 - encapsulation vlan - client dot1ad outer 35 inner dot1q 60 network dot1q outer 53 inner dot1ad 6 -! -interface Ethernet68.5 - description Test_encapsulation_vlan5 - encapsulation vlan - client dot1ad outer 35 inner 60 network dot1ad outer 52 inner 62 -! -interface Ethernet68.6 - description Test_encapsulation_vlan6 - encapsulation vlan - client dot1ad outer 35 inner 60 network client -! -interface Ethernet68.7 - description Test_encapsulation_vlan7 - encapsulation vlan - client untagged network dot1ad outer 35 inner 60 -! -interface Ethernet68.8 - description Test_encapsulation_vlan8 - encapsulation vlan - client untagged network dot1q outer 35 inner 60 -! -interface Ethernet68.9 - description Test_encapsulation_vlan9 - encapsulation vlan - client untagged network untagged -! -interface Ethernet68.10 - description Test_encapsulation_vlan9 - encapsulation vlan - client dot1q outer 14 inner 11 network client inner -! -interface Ethernet69 - description IP NAT service-profile - switchport - ip nat service-profile TEST-NAT-PROFILE -! -interface Ethernet70 - description dot1x_aaa_unresponsive - no shutdown - dot1x aaa unresponsive phone action apply cached-results timeout 10 hours else traffic allow - dot1x aaa unresponsive action traffic allow vlan 10 access-list acl1 - dot1x aaa unresponsive eap response success - dot1x mac based access-list -! -interface Ethernet71 - description dot1x_aaa_unresponsive1 - no shutdown - dot1x aaa unresponsive phone action apply cached-results timeout 10 hours - dot1x aaa unresponsive action traffic allow vlan 10 access-list acl1 - dot1x aaa unresponsive eap response success - dot1x mac based access-list -! -interface Ethernet72 - description dot1x_aaa_unresponsive2 - no shutdown - dot1x aaa unresponsive action traffic allow vlan 10 access-list acl1 - dot1x aaa unresponsive eap response success - dot1x mac based access-list -! -interface Ethernet73 - description Switchport_tap_tool - switchport tap native vlan 10 - switchport tap identity 3 inner 5 - switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap mpls pop all - switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0001 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip - switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tool mpls pop all - switchport tool encapsulation vn-tag strip - switchport tool encapsulation dot1br strip - switchport tap allowed vlan 25 - switchport tool allowed vlan 23 - switchport tool identity qinq - switchport tool identity dot1q source dzgre port - switchport tap truncation 150 - switchport tool truncation - switchport tap default group g1 group g2 group g3 - switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 - switchport tap default interface ethernet4 - switchport tap default interface port-channel10 - switchport tool group set group1 group2 group3 - switchport tool dot1q remove outer 1 - switchport tool dzgre preserve -! -interface Ethernet74 - description Test_tap_tool - switchport tap identity 5 - switchport tap mac-address dest 01:00:00:00:00:00 - switchport tap encapsulation vxlan strip - switchport tool identity dot1q - switchport tool identity qinq source dzgre policy inner port - switchport tap truncation - switchport tool truncation 160 -``` - -## BFD - -### BFD Interfaces - -| Interface | Interval | Minimum RX | Multiplier | Echo | -| --------- | -------- | ---------- | ---------- | ---- | -| Ethernet1 | 500 | 500 | 5 | True | - -## MPLS - -### MPLS Interfaces - -| Interface | MPLS IP Enabled | LDP Enabled | IGP Sync | -| --------- | --------------- | ----------- | -------- | -| Ethernet9 | True | True | - | -| Ethernet10 | False | False | - | - -## Multicast - -### PIM Sparse Mode - -#### PIM Sparse Mode Enabled Interfaces - -| Interface Name | VRF Name | IP Version | Border Router | DR Priority | Local Interface | -| -------------- | -------- | ---------- | ------------- | ----------- | --------------- | -| Ethernet5 | - | IPv4 | True | 200 | - | - -## 802.1X Port Security - -### 802.1X Summary - -#### 802.1X Interfaces - -| Interface | PAE Mode | State | Phone Force Authorized | Reauthentication | Auth Failure Action | Host Mode | Mac Based Auth | Eapol | -| --------- | -------- | ------| ---------------------- | ---------------- | ------------------- | --------- | -------------- | ------ | -| Ethernet29 | - | auto | True | - | - | - | - | - | -| Ethernet30 | - | force-authorized | False | - | - | - | - | - | -| Ethernet31 | - | force-unauthorized | - | - | - | - | - | - | -| Ethernet32 | - | auto | - | True | - | - | - | - | -| Ethernet33 | authenticator | - | - | - | - | - | - | - | -| Ethernet34 | - | - | - | - | allow vlan 800 | - | - | - | -| Ethernet35 | - | - | - | - | drop | - | - | - | -| Ethernet36 | - | - | - | - | - | single-host | - | - | -| Ethernet37 | - | - | - | - | - | multi-host | - | - | -| Ethernet38 | - | - | - | - | - | multi-host | - | - | -| Ethernet39 | - | - | - | - | - | - | True | - | -| Ethernet40 | - | - | - | - | - | - | True | - | -| Ethernet41 | - | - | - | - | - | - | True | - | -| Ethernet42 | - | - | - | - | - | - | True | - | -| Ethernet43 | - | - | - | - | - | - | - | - | -| Ethernet44 | - | - | - | - | - | - | - | - | -| Ethernet45 | authenticator | auto | - | True | allow vlan 800 | multi-host | True | True | -| Ethernet70 | - | - | - | - | - | - | - | - | -| Ethernet71 | - | - | - | - | - | - | - | - | -| Ethernet72 | - | - | - | - | - | - | - | - | - -## Power Over Ethernet (PoE) - -### PoE Summary - -#### PoE Interfaces - -| Interface | PoE Enabled | Priority | Limit | Reboot Action | Link Down Action | Shutdown Action | LLDP Negotiation | Legacy Detection | -| --------- | --------- | --------- | ----------- | ----------- | ----------- | ----------- | --------- | --------- | -| Ethernet56 | True | low | 30.00 watts | power-off | power-off (delayed 10 seconds) | maintain | False | - | -| Ethernet57 | True | critical | 45.00 watts (fixed) | maintain | maintain | power-off | True | True | -| Ethernet58 | False | - | - | - | - | - | - | - | - -## Quality Of Service - -### QOS Interfaces - -| Interface | Trust | Default DSCP | Default COS | Shape rate | -| --------- | ----- | ------------ | ----------- | ---------- | -| Ethernet7 | cos | - | 5 | - | -| Ethernet21 | disabled | - | - | 200000 kbps | -| Ethernet22 | - | - | - | 10 percent | 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 365385c79c6..0f593578dbd 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 @@ -31,12 +31,21 @@ - [System Boot Device Configuration](#system-boot-device-configuration) - [Monitoring](#monitoring) - [Custom daemons](#custom-daemons) + - [SFlow](#sflow) - [Interfaces](#interfaces) - [DPS Interfaces](#dps-interfaces) + - [Ethernet Interfaces](#ethernet-interfaces) + - [Port-Channel Interfaces](#port-channel-interfaces) - [Routing](#routing) - [IP Routing](#ip-routing) - [IPv6 Routing](#ipv6-routing) - [ARP](#arp) +- [BFD](#bfd) + - [BFD Interfaces](#bfd-interfaces) +- [MPLS](#mpls) + - [MPLS Interfaces](#mpls-interfaces) +- [Multicast](#multicast) + - [PIM Sparse Mode](#pim-sparse-mode) - [Filters](#filters) - [AS Path Lists](#as-path-lists) - [802.1X Port Security](#8021x-port-security) @@ -52,6 +61,7 @@ - [Router Application-Traffic-Recognition Device Configuration](#router-application-traffic-recognition-device-configuration) - [Quality Of Service](#quality-of-service) - [QOS Class Maps](#qos-class-maps) + - [QOS Interfaces](#qos-interfaces) ## Management @@ -644,6 +654,21 @@ daemon random shutdown ``` +### SFlow + +#### SFlow Summary + +sFlow is disabled. + +#### SFlow Interfaces + +| Interface | Ingress Enabled | Egress Enabled | +| --------- | --------------- | -------------- | +| Port-Channel117 | True | True | +| Port-Channel118 | True | True (unmodified) | +| Port-Channel119 | False | False | +| Port-Channel120 | False | False (unmodified) | + ## Interfaces ### DPS Interfaces @@ -669,6 +694,848 @@ interface Dps1 load-interval 42 ``` +### Ethernet Interfaces + +#### Ethernet Interfaces Summary + +##### L2 + +| Interface | Description | Mode | VLANs | Native VLAN | Trunk Group | Channel-Group | +| --------- | ----------- | ---- | ----- | ----------- | ----------- | ------------- | +| Ethernet3 | MLAG_PEER_DC1-LEAF1B_Ethernet3 | *trunk | *2-4094 | *- | *LEAF_PEER_L3, MLAG | 3 | +| Ethernet4 | MLAG_PEER_DC1-LEAF1B_Ethernet4 | *trunk | *2-4094 | *- | *LEAF_PEER_L3, MLAG | 3 | +| Ethernet5 | DC1-AGG01_Ethernet1 | *trunk | *110,201 | *- | *- | 5 | +| Ethernet10/1 | LAG Member | *access | *110 | *- | *- | 101 | +| Ethernet10/2 | LAG Member | *trunk | *110-112 | *- | *- | 102 | +| Ethernet10/3 | LAG Member | *trunk | *110-112 | *- | *- | 103 | +| Ethernet10/4 | LAG Member LACP fallback | *trunk | *112 | *- | *- | 104 | +| Ethernet11/2 | LAG Member LACP fallback LLDP ZTP VLAN | *trunk | *112 | *- | *- | 112 | +| Ethernet15 | DC1-AGG03_Ethernet1 | *trunk | *110,201 | *- | *- | 15 | +| Ethernet16 | DC1-AGG04_Ethernet1 | *trunk | *110,201 | *10 | *- | 16 | +| Ethernet18 | LAG Member | *access | *110 | *- | *- | 109 | +| Ethernet50 | SRV-POD03_Eth1 | *trunk | *110,201 | *- | *- | 5 | + +*Inherited from Port-Channel Interface + +##### Transceiver Settings + +| Interface | Transceiver Frequency | Media Override | +| --------- | --------------------- | -------------- | +| Ethernet5 | - | 100gbase-ar4 | + +##### Phone Interfaces + +| Interface | Mode | Native VLAN | Phone VLAN | Phone VLAN Mode | +| --------- | ---- | ----------- | ---------- | --------------- | +| Port-Channel12 | trunk phone | 100 | 70 | untagged | +| Port-Channel100 | dot1q-tunnel | 5 | 110 | tagged | + +##### IPv4 + +| Interface | Description | Channel Group | IP Address | VRF | MTU | Shutdown | ACL In | ACL Out | +| --------- | ----------- | ------------- | ---------- | ----| ---- | -------- | ------ | ------- | +| Ethernet17 | LAG Member | 17 | *192.0.2.3/31 | **default | **- | **- | **- | **- | + +*Inherited from Port-Channel Interface + +##### ISIS + +| Interface | Channel Group | ISIS Instance | ISIS BFD | ISIS Metric | Mode | ISIS Circuit Type | Hello Padding | Authentication Mode | +| --------- | ------------- | ------------- | -------- | ----------- | ---- | ----------------- | ------------- | ------------------- | +| Ethernet10/10 | 110 | *ISIS_TEST | True | *99 | *point-to-point | *level-2 | *True | *text | + +*Inherited from Port-Channel Interface + +##### Error Correction Encoding Interfaces + +| Interface | Enabled | +| --------- | ------- | +| Ethernet11/1 | fire-code
reed-solomon | + +#### Ethernet Interfaces Device Configuration + +```eos +! +interface Ethernet3 + description MLAG_PEER_DC1-LEAF1B_Ethernet3 + channel-group 3 mode active +! +interface Ethernet4 + description MLAG_PEER_DC1-LEAF1B_Ethernet4 + channel-group 3 mode active +! +interface Ethernet5 + description DC1-AGG01_Ethernet1 + channel-group 5 mode active + transceiver media override 100gbase-ar4 +! +interface Ethernet8 + description MLAG_PEER_DC1-LEAF1B_Ethernet8 + channel-group 8 mode active +! +interface Ethernet10/1 + description LAG Member + channel-group 101 mode active +! +interface Ethernet10/2 + description LAG Member + channel-group 102 mode active +! +interface Ethernet10/3 + description LAG Member + channel-group 103 mode active +! +interface Ethernet10/4 + description LAG Member LACP fallback + switchport trunk allowed vlan 100 + switchport mode trunk + switchport + channel-group 104 mode active + spanning-tree portfast +! +interface Ethernet10/10 + description isis_port_channel_member + channel-group 110 mode active +! +interface Ethernet11/1 + description LAG Member with error_correction + error-correction encoding fire-code + error-correction encoding reed-solomon + channel-group 111 mode active +! +interface Ethernet11/2 + description LAG Member LACP fallback LLDP ZTP VLAN + switchport trunk allowed vlan 112 + switchport mode trunk + switchport + channel-group 112 mode active + lldp tlv transmit ztp vlan 112 + spanning-tree portfast +! +interface Ethernet15 + description DC1-AGG03_Ethernet1 + channel-group 15 mode active + lacp timer fast + lacp timer multiplier 30 +! +interface Ethernet16 + description DC1-AGG04_Ethernet1 + channel-group 16 mode active + lacp timer normal +! +interface Ethernet17 + description LAG Member + channel-group 17 mode active +! +interface Ethernet18 + description LAG Member + channel-group 109 mode active +! +interface Ethernet50 + description SRV-POD03_Eth1 + channel-group 5 mode active + no lldp transmit + no lldp receive +``` + +### Port-Channel Interfaces + +#### Port-Channel Interfaces Summary + +##### L2 + +| Interface | Description | Mode | VLANs | Native VLAN | Trunk Group | LACP Fallback Timeout | LACP Fallback Mode | MLAG ID | EVPN ESI | +| --------- | ----------- | ---- | ----- | ----------- | ------------| --------------------- | ------------------ | ------- | -------- | +| Port-Channel3 | MLAG_PEER_DC1-LEAF1B_Po3 | trunk | 2-4094 | - | LEAF_PEER_L3, MLAG | - | - | - | - | +| Port-Channel5 | DC1_L2LEAF1_Po1 | trunk | 110,201 | - | - | - | - | 5 | - | +| Port-Channel10 | SRV01_bond0 | trunk | 2-3000 | - | - | - | - | - | 0000:0000:0404:0404:0303 | +| Port-Channel12 | interface_in_mode_access_with_voice | trunk phone | - | 100 | - | - | - | - | - | +| Port-Channel13 | EVPN-Vxlan single-active redundancy | - | - | - | - | - | - | - | 0000:0000:0000:0102:0304 | +| Port-Channel14 | EVPN-MPLS multihoming | - | - | - | - | - | - | - | 0000:0000:0000:0102:0305 | +| Port-Channel15 | DC1_L2LEAF3_Po1 | trunk | 110,201 | - | - | - | - | 15 | - | +| Port-Channel16 | DC1_L2LEAF4_Po1 | trunk | 110,201 | 10 | - | - | - | 16 | - | +| Port-Channel20 | Po_in_mode_access_accepting_tagged_LACP_frames | access | 200 | - | - | - | - | - | - | +| Port-Channel50 | SRV-POD03_PortChanne1 | trunk | 1-4000 | - | - | - | - | - | 0000:0000:0303:0202:0101 | +| Port-Channel51 | ipv6_prefix | trunk | 1-500 | - | - | - | - | - | - | +| Port-Channel100 | - | dot1q-tunnel | 10-11,200 | tag | g1, g2 | - | - | - | - | +| Port-Channel101 | PVLAN Promiscuous Access - only one secondary | access | 110 | - | - | - | - | - | - | +| Port-Channel102 | PVLAN Promiscuous Trunk - vlan translation out | trunk | 110-112 | - | - | - | - | - | - | +| Port-Channel103 | PVLAN Secondary Trunk | trunk | 110-112 | - | - | - | - | - | - | +| Port-Channel104 | LACP fallback individual | trunk | 112 | - | - | 300 | individual | - | - | +| Port-Channel105 | bpdu disabled | - | - | - | - | - | - | - | - | +| Port-Channel106 | bpdu enabled | - | - | - | - | - | - | - | - | +| Port-Channel107 | bpdu true | - | - | - | - | - | - | - | - | +| Port-Channel108 | bpdu false | - | - | - | - | - | - | - | - | +| Port-Channel109 | Molecule ACLs | access | 110 | - | - | - | - | - | - | +| Port-Channel112 | LACP fallback individual | trunk | 112 | - | - | 5 | individual | - | - | +| Port-Channel115 | native-vlan-tag-precedence | trunk | - | tag | - | - | - | - | - | +| Port-Channel121 | access_port_with_no_vlans | access | - | - | - | - | - | - | - | +| Port-Channel122 | trunk_port_with_no_vlans | trunk | - | - | - | - | - | - | - | +| Port-Channel130 | IP NAT Testing | - | - | - | - | - | - | - | - | +| Port-Channel131 | dot1q-tunnel mode | dot1q-tunnel | 115 | - | - | - | - | - | - | + +##### Encapsulation Dot1q + +| Interface | Description | Vlan ID | Dot1q VLAN Tag | Dot1q Inner VLAN Tag | +| --------- | ----------- | ------- | -------------- | -------------------- | +| Port-Channel8.101 | to Dev02 Port-Channel8.101 - VRF-C1 | - | 101 | - | +| Port-Channel100.101 | IFL for TENANT01 | - | 101 | - | +| Port-Channel100.102 | IFL for TENANT02 | - | 102 | 110 | + +##### Flexible Encapsulation Interfaces + +| Interface | Description | Vlan ID | Client Encapsulation | Client Inner Encapsulation | Client VLAN | Client Outer VLAN Tag | Client Inner VLAN Tag | Network Encapsulation | Network Inner Encapsulation | Network VLAN | Network Outer VLAN Tag | Network Inner VLAN Tag | +| --------- | ----------- | ------- | --------------- | --------------------- | ----------- | --------------------- | --------------------- | ---------------- | ---------------------- | ------------ | ---------------------- | ---------------------- | +| Port-Channel111.1 | TENANT_A pseudowire 1 interface | - | unmatched | - | - | - | - | - | - | - | - | - | +| Port-Channel111.100 | TENANT_A pseudowire 2 interface | - | dot1q | - | 100 | - | - | client | - | - | - | - | +| Port-Channel111.200 | TENANT_A pseudowire 3 interface | - | dot1q | - | 200 | - | - | - | - | - | - | - | +| Port-Channel111.300 | TENANT_A pseudowire 4 interface | - | dot1q | - | 300 | - | - | dot1q | - | 400 | - | - | +| Port-Channel111.400 | TENANT_A pseudowire 3 interface | - | dot1q | - | - | 400 | 20 | dot1q | - | - | 401 | 21 | +| Port-Channel111.1000 | L2 Subinterface | 1000 | dot1q | - | 100 | - | - | client | - | - | - | - | +| Port-Channel131.1 | Test_encapsulation_vlan1 | - | dot1q | dot1q | - | 23 | 45 | dot1ad | dot1ad | - | 32 | 54 | +| Port-Channel131.2 | Test_encapsulation_vlan2 | - | dot1q | - | 10 | - | - | dot1q | - | - | 32 | 54 | +| Port-Channel131.3 | Test_encapsulation_vlan3 | - | dot1ad | - | 12 | - | - | dot1q | - | 25 | - | - | +| Port-Channel131.4 | Test_encapsulation_vlan4 | - | dot1ad | dot1q | - | 35 | 60 | dot1q | dot1ad | - | 53 | 6 | +| Port-Channel131.5 | Test_encapsulation_vlan5 | - | dot1ad | - | - | 35 | 60 | dot1ad | - | - | 52 | 62 | +| Port-Channel131.6 | Test_encapsulation_vlan6 | - | dot1ad | - | - | 35 | 60 | client | - | - | - | - | +| Port-Channel131.7 | Test_encapsulation_vlan7 | - | untagged | - | - | - | - | dot1ad | - | - | 35 | 60 | +| Port-Channel131.8 | Test_encapsulation_vlan8 | - | untagged | - | - | - | - | dot1q | - | - | 35 | 60 | +| Port-Channel131.9 | Test_encapsulation_vlan9 | - | untagged | - | - | - | - | untagged | - | - | - | - | +| Port-Channel131.10 | Test_encapsulation_vlan9 | - | dot1q | - | - | 14 | 11 | client inner | - | - | - | - | + +##### Private VLAN + +| Interface | PVLAN Mapping | Secondary Trunk | +| --------- | ------------- | ----------------| +| Port-Channel15 | - | False | +| Port-Channel100 | 20-30 | True | +| Port-Channel101 | 111 | - | +| Port-Channel103 | - | True | + +##### VLAN Translations + +| Interface | Direction | From VLAN ID(s) | To VLAN ID | From Inner VLAN ID | To Inner VLAN ID | Network | Dot1q-tunnel | +| --------- | --------- | --------------- | ---------- | ------------------ | ---------------- | ------- | ------------ | +| Port-Channel16 | out | 23 | 22 | - | - | - | True | +| Port-Channel100 | both | 12 | 20 | - | - | - | - | +| Port-Channel100 | both | 23 | 42 | 74 | - | False | - | +| Port-Channel100 | both | 24 | 46 | 78 | - | True | - | +| Port-Channel100 | both | 43 | 30 | - | - | - | True | +| Port-Channel100 | in | 23 | 45 | - | - | - | True | +| Port-Channel100 | in | 34 | 23 | - | - | - | - | +| Port-Channel100 | in | 37 | 49 | - | 56 | - | - | +| Port-Channel100 | out | 10 | 45 | - | 34 | - | - | +| Port-Channel100 | out | 34 | 50 | - | - | - | - | +| Port-Channel100 | out | 45 | all | - | - | - | True | +| Port-Channel100 | out | 55 | - | - | - | - | - | +| Port-Channel102 | out | 111-112 | 110 | - | - | - | - | + +##### EVPN Multihoming + +####### EVPN Multihoming Summary + +| Interface | Ethernet Segment Identifier | Multihoming Redundancy Mode | Route Target | +| --------- | --------------------------- | --------------------------- | ------------ | +| Port-Channel10 | 0000:0000:0404:0404:0303 | all-active | 04:04:03:03:02:02 | +| Port-Channel13 | 0000:0000:0000:0102:0304 | single-active | 00:00:01:02:03:04 | +| Port-Channel14 | 0000:0000:0000:0102:0305 | all-active | 00:00:01:02:03:05 | +| Port-Channel50 | 0000:0000:0303:0202:0101 | all-active | 03:03:02:02:01:01 | +| Port-Channel111.1000 | 0000:0000:0303:0202:0101 | all-active | 03:03:02:02:01:01 | + +####### Designated Forwarder Election Summary + +| Interface | Algorithm | Preference Value | Dont Preempt | Hold time | Subsequent Hold Time | Candidate Reachability Required | +| --------- | --------- | ---------------- | ------------ | --------- | -------------------- | ------------------------------- | +| Port-Channel13 | preference | 100 | True | 10 | - | True | + +####### EVPN-MPLS summary + +| Interface | Shared Index | Tunnel Flood Filter Time | +| --------- | ------------ | ------------------------ | +| Port-Channel14 | 100 | 100 | + +##### Link Tracking Groups + +| Interface | Group Name | Direction | +| --------- | ---------- | --------- | +| Port-Channel5 | EVPN_MH_ES1 | downstream | +| Port-Channel15 | EVPN_MH_ES2 | upstream | + +##### IPv4 + +| Interface | Description | MLAG ID | IP Address | VRF | MTU | Shutdown | ACL In | ACL Out | +| --------- | ----------- | ------- | ---------- | --- | --- | -------- | ------ | ------- | +| Port-Channel8.101 | to Dev02 Port-Channel8.101 - VRF-C1 | - | 10.1.2.3/31 | default | - | - | - | - | +| Port-Channel9 | - | - | 10.9.2.3/31 | default | - | - | - | - | +| Port-Channel17 | PBR Description | - | 192.0.2.3/31 | default | - | - | - | - | +| Port-Channel99 | MCAST | - | 192.0.2.10/31 | default | - | - | - | - | +| Port-Channel100.101 | IFL for TENANT01 | - | 10.1.1.3/31 | default | 1500 | - | - | - | +| Port-Channel100.102 | IFL for TENANT02 | - | 10.1.2.3/31 | C2 | 1500 | - | - | - | +| Port-Channel113 | interface_with_mpls_enabled | - | 172.31.128.9/31 | default | - | - | - | - | +| Port-Channel114 | interface_with_mpls_disabled | - | 172.31.128.10/31 | default | - | - | - | - | + +##### IP NAT: Source Static + +| Interface | Direction | Original IP | Original Port | Access List | Translated IP | Translated Port | Protocol | Group | Priority | Comment | +| --------- | --------- | ----------- | ------------- | ----------- | ------------- | --------------- | -------- | ----- | -------- | ------- | +| Port-Channel130 | - | 3.0.0.1 | - | - | 4.0.0.1 | - | - | - | 0 | - | + +##### IP NAT: Source Dynamic + +| Interface | Access List | NAT Type | Pool Name | Priority | Comment | +| --------- | ----------- | -------- | --------- | -------- | ------- | +| Port-Channel130 | ACL2 | pool | POOL2 | 0 | - | + +##### IP NAT: Destination Static + +| Interface | Direction | Original IP | Original Port | Access List | Translated IP | Translated Port | Protocol | Group | Priority | Comment | +| --------- | --------- | ----------- | ------------- | ----------- | ------------- | --------------- | -------- | ----- | -------- | ------- | +| Port-Channel130 | - | 1.0.0.1 | - | - | 2.0.0.1 | - | - | - | 0 | - | + +##### IP NAT: Destination Dynamic + +| Interface | Access List | Pool Name | Priority | Comment | +| --------- | ----------- | --------- | -------- | ------- | +| Port-Channel130 | ACL1 | POOL1 | 0 | - | + +##### ISIS + +| Interface | ISIS Instance | ISIS BFD | ISIS Metric | Mode | ISIS Circuit Type | Hello Padding | Authentication Mode | +| --------- | ------------- | -------- | ----------- | ---- | ----------------- | ------------- | ------------------- | +| Port-Channel110 | ISIS_TEST | True | 99 | point-to-point | level-2 | True | text | + +#### Port-Channel Interfaces Device Configuration + +```eos +! +interface Port-Channel3 + description MLAG_PEER_DC1-LEAF1B_Po3 + switchport trunk allowed vlan 2-4094 + switchport mode trunk + switchport trunk group LEAF_PEER_L3 + switchport trunk group MLAG + switchport + no snmp trap link-change + shape rate 200000 kbps +! +interface Port-Channel5 + description DC1_L2LEAF1_Po1 + bgp session tracker ST2 + switchport trunk allowed vlan 110,201 + switchport mode trunk + switchport + ip verify unicast source reachable-via rx + ip igmp host-proxy + ip igmp host-proxy 239.0.0.1 + ip igmp host-proxy 239.0.0.2 exclude 10.0.2.1 + ip igmp host-proxy 239.0.0.3 include 10.0.3.1 + ip igmp host-proxy 239.0.0.4 include 10.0.4.3 + ip igmp host-proxy 239.0.0.4 include 10.0.4.4 + ip igmp host-proxy 239.0.0.4 exclude 10.0.4.1 + ip igmp host-proxy 239.0.0.4 exclude 10.0.4.2 + ip igmp host-proxy access-list ACL1 + ip igmp host-proxy access-list ACL2 + ip igmp host-proxy report-interval 2 + ip igmp host-proxy version 2 + l2 mtu 8000 + l2 mru 8000 + mlag 5 + storm-control broadcast level 1 + storm-control multicast level 1 + storm-control unknown-unicast level 1 + link tracking group EVPN_MH_ES1 downstream + comment + Comment created from eos_cli under port_channel_interfaces.Port-Channel5 + EOF + +! +interface Port-Channel8 + description to Dev02 Port-channel 8 + no switchport + switchport port-security violation protect +! +interface Port-Channel8.101 + description to Dev02 Port-Channel8.101 - VRF-C1 + encapsulation dot1q vlan 101 + ip address 10.1.2.3/31 +! +interface Port-Channel9 + no switchport + ip address 10.9.2.3/31 + bfd interval 500 min-rx 500 multiplier 5 + bfd echo + bfd neighbor 10.1.2.4 + bfd per-link rfc-7130 + spanning-tree guard root +! +interface Port-Channel10 + description SRV01_bond0 + switchport trunk allowed vlan 2-3000 + switchport mode trunk + switchport + ! + evpn ethernet-segment + identifier 0000:0000:0404:0404:0303 + route-target import 04:04:03:03:02:02 + shape rate 50 percent +! +interface Port-Channel12 + description interface_in_mode_access_with_voice + switchport trunk native vlan 100 + switchport phone vlan 70 + switchport phone trunk untagged + switchport mode trunk phone + switchport +! +interface Port-Channel13 + description EVPN-Vxlan single-active redundancy + switchport + ! + evpn ethernet-segment + identifier 0000:0000:0000:0102:0304 + redundancy single-active + designated-forwarder election algorithm preference 100 dont-preempt + designated-forwarder election hold-time 10 + designated-forwarder election candidate reachability required + route-target import 00:00:01:02:03:04 +! +interface Port-Channel14 + description EVPN-MPLS multihoming + switchport + ! + evpn ethernet-segment + identifier 0000:0000:0000:0102:0305 + mpls tunnel flood filter time 100 + mpls shared index 100 + route-target import 00:00:01:02:03:05 +! +interface Port-Channel15 + description DC1_L2LEAF3_Po1 + switchport trunk allowed vlan 110,201 + switchport mode trunk + switchport + mlag 15 + spanning-tree guard loop + link tracking group EVPN_MH_ES2 upstream +! +interface Port-Channel16 + description DC1_L2LEAF4_Po1 + switchport trunk native vlan 10 + switchport dot1q vlan tag disallowed + switchport trunk allowed vlan 110,201 + switchport mode trunk + switchport + switchport vlan translation out 23 dot1q-tunnel 22 + snmp trap link-change + mlag 16 + switchport port-security violation protect log + switchport port-security mac-address maximum 100 + spanning-tree guard none + switchport backup-link Port-Channel100 prefer vlan 20 +! +interface Port-Channel17 + description PBR Description + no switchport + ip address 192.0.2.3/31 + service-policy type pbr input MyPolicy +! +interface Port-Channel20 + description Po_in_mode_access_accepting_tagged_LACP_frames + switchport access vlan 200 + switchport mode access + switchport + l2-protocol encapsulation dot1q vlan 200 +! +interface Port-Channel50 + description SRV-POD03_PortChanne1 + switchport trunk allowed vlan 1-4000 + switchport mode trunk + switchport + ! + evpn ethernet-segment + identifier 0000:0000:0303:0202:0101 + route-target import 03:03:02:02:01:01 + lacp system-id 0303.0202.0101 +! +interface Port-Channel51 + description ipv6_prefix + switchport trunk allowed vlan 1-500 + switchport mode trunk + switchport + ipv6 nd prefix a1::/64 infinite infinite no-autoconfig + switchport port-security + no switchport port-security mac-address maximum disabled + switchport port-security vlan 1 mac-address maximum 3 + switchport port-security vlan 2 mac-address maximum 3 + switchport port-security vlan 3 mac-address maximum 3 + switchport port-security vlan default mac-address maximum 2 +! +interface Port-Channel99 + description MCAST + no switchport + ip address 192.0.2.10/31 + pim ipv4 sparse-mode + pim ipv4 bidirectional + pim ipv4 hello interval 15 + pim ipv4 hello count 4.5 + pim ipv4 dr-priority 200 + pim ipv4 bfd +! +interface Port-Channel100 + logging event link-status + switchport access vlan 200 + switchport trunk native vlan tag + switchport phone vlan 110 + switchport phone trunk tagged + switchport vlan translation in required + switchport dot1q vlan tag required + switchport trunk allowed vlan 10-11 + switchport mode dot1q-tunnel + switchport dot1q ethertype 1536 + switchport vlan forwarding accept all + switchport trunk group g1 + switchport trunk group g2 + no switchport + switchport source-interface tx multicast + switchport vlan translation 12 20 + switchport vlan translation 23 inner 74 42 + switchport vlan translation 24 inner 78 network 46 + switchport vlan translation 43 dot1q-tunnel 30 + switchport vlan translation in 34 23 + switchport vlan translation in 37 inner 56 49 + switchport vlan translation in 23 dot1q-tunnel 45 + switchport vlan translation out 34 50 + switchport vlan translation out 10 45 inner 34 + switchport vlan translation out 45 dot1q-tunnel all + switchport trunk private-vlan secondary + switchport pvlan mapping 20-30 + switchport port-security + switchport port-security mac-address maximum disabled + switchport backup-link Port-channel51 + switchport backup preemption-delay 35 + switchport backup mac-move-burst 20 + switchport backup mac-move-burst-interval 30 + switchport backup initial-mac-move-delay 10 + switchport backup dest-macaddr 01:00:00:00:00:00 +! +interface Port-Channel100.101 + description IFL for TENANT01 + mtu 1500 + logging event link-status + encapsulation dot1q vlan 101 + ip address 10.1.1.3/31 + switchport tap identity 3 inner 10 + switchport tap mac-address dest 01:00:00:00:00:00 + switchport tap encapsulation vxlan strip + switchport tool identity dot1q + switchport tool identity dot1q source dzgre policy + switchport tap truncation 120 + switchport tool truncation +! +interface Port-Channel100.102 + description IFL for TENANT02 + mtu 1500 + no logging event link-status + encapsulation dot1q vlan 102 inner 110 + vrf C2 + ip address 10.1.2.3/31 + logging event storm-control discards +! +interface Port-Channel101 + description PVLAN Promiscuous Access - only one secondary + switchport access vlan 110 + switchport mode access + switchport + switchport pvlan mapping 111 + no qos trust +! +interface Port-Channel102 + description PVLAN Promiscuous Trunk - vlan translation out + switchport vlan translation out required + switchport trunk allowed vlan 110-112 + switchport mode trunk + switchport + switchport vlan translation out 111-112 110 +! +interface Port-Channel103 + description PVLAN Secondary Trunk + switchport trunk allowed vlan 110-112 + switchport mode trunk + switchport + switchport trunk private-vlan secondary +! +interface Port-Channel104 + description LACP fallback individual + switchport trunk allowed vlan 112 + switchport mode trunk + switchport + port-channel lacp fallback individual + port-channel lacp fallback timeout 300 +! +interface Port-Channel105 + description bpdu disabled + switchport + spanning-tree bpduguard disable + spanning-tree bpdufilter disable +! +interface Port-Channel106 + description bpdu enabled + switchport + spanning-tree bpduguard enable + spanning-tree bpdufilter enable +! +interface Port-Channel107 + description bpdu true + switchport + spanning-tree bpduguard enable + spanning-tree bpdufilter enable +! +interface Port-Channel108 + description bpdu false + switchport +! +interface Port-Channel109 + description Molecule ACLs + switchport access vlan 110 + switchport mode access + switchport + ip access-group IPV4_ACL_IN in + ip access-group IPV4_ACL_OUT out + ipv6 access-group IPV6_ACL_IN in + ipv6 access-group IPV6_ACL_OUT out + mac access-group MAC_ACL_IN in + mac access-group MAC_ACL_OUT out +! +interface Port-Channel110 + description isis_interface_knobs + no switchport + isis enable ISIS_TEST + isis bfd + isis circuit-type level-2 + isis metric 99 + isis hello padding + isis network point-to-point + isis authentication mode text + isis authentication key 7 +! +interface Port-Channel111 + description Flexencap Port-Channel + no switchport +! +interface Port-Channel111.1 + description TENANT_A pseudowire 1 interface + ! + encapsulation vlan + client unmatched +! +interface Port-Channel111.100 + description TENANT_A pseudowire 2 interface + ! + encapsulation vlan + client dot1q 100 network client +! +interface Port-Channel111.200 + description TENANT_A pseudowire 3 interface + ! + encapsulation vlan + client dot1q 200 +! +interface Port-Channel111.300 + description TENANT_A pseudowire 4 interface + ! + encapsulation vlan + client dot1q 300 network dot1q 400 +! +interface Port-Channel111.400 + description TENANT_A pseudowire 3 interface + ! + encapsulation vlan + client dot1q outer 400 inner 20 network dot1q outer 401 inner 21 +! +interface Port-Channel111.1000 + description L2 Subinterface + vlan id 1000 + ! + encapsulation vlan + client dot1q 100 network client + ! + evpn ethernet-segment + identifier 0000:0000:0303:0202:0101 + route-target import 03:03:02:02:01:01 + lacp system-id 0303.0202.0101 +! +interface Port-Channel112 + description LACP fallback individual + switchport trunk allowed vlan 112 + switchport mode trunk + switchport + port-channel lacp fallback individual + port-channel lacp fallback timeout 5 +! +interface Port-Channel113 + description interface_with_mpls_enabled + no switchport + ip address 172.31.128.9/31 + mpls ldp igp sync + mpls ldp interface + mpls ip +! +interface Port-Channel114 + description interface_with_mpls_disabled + no switchport + ip address 172.31.128.10/31 + no mpls ldp interface + no mpls ip +! +interface Port-Channel115 + description native-vlan-tag-precedence + switchport trunk native vlan tag + switchport mode trunk + switchport +! +interface Port-Channel117 + description interface_with_sflow_ingress_egress_enabled + no switchport + sflow enable + sflow egress enable +! +interface Port-Channel118 + description interface_with_sflow_ingress_egress_unmodified_enabled + no switchport + sflow enable + sflow egress unmodified enable +! +interface Port-Channel119 + description interface_with_sflow_ingress_egress_disabled + no switchport + no sflow enable + no sflow egress enable +! +interface Port-Channel120 + description interface_with_sflow_ingress_egress_unmodified_disabled + no switchport + no sflow enable + no sflow egress unmodified enable +! +interface Port-Channel121 + description access_port_with_no_vlans + switchport mode access + switchport +! +interface Port-Channel122 + description trunk_port_with_no_vlans + switchport mode trunk + switchport +! +interface Port-Channel130 + description IP NAT Testing + switchport + ip nat destination static 1.0.0.1 2.0.0.1 + ip nat source static 3.0.0.1 4.0.0.1 + ip nat destination dynamic access-list ACL1 pool POOL1 + ip nat source dynamic access-list ACL2 pool POOL2 +! +interface Port-Channel131 + description dot1q-tunnel mode + switchport access vlan 115 + switchport mode dot1q-tunnel + switchport +! +interface Port-Channel131.1 + description Test_encapsulation_vlan1 + ! + encapsulation vlan + client dot1q outer 23 inner dot1q 45 network dot1ad outer 32 inner dot1ad 54 +! +interface Port-Channel131.2 + description Test_encapsulation_vlan2 + ! + encapsulation vlan + client dot1q 10 network dot1q outer 32 inner 54 +! +interface Port-Channel131.3 + description Test_encapsulation_vlan3 + ! + encapsulation vlan + client dot1ad 12 network dot1q 25 +! +interface Port-Channel131.4 + description Test_encapsulation_vlan4 + ! + encapsulation vlan + client dot1ad outer 35 inner dot1q 60 network dot1q outer 53 inner dot1ad 6 +! +interface Port-Channel131.5 + description Test_encapsulation_vlan5 + ! + encapsulation vlan + client dot1ad outer 35 inner 60 network dot1ad outer 52 inner 62 +! +interface Port-Channel131.6 + description Test_encapsulation_vlan6 + ! + encapsulation vlan + client dot1ad outer 35 inner 60 network client +! +interface Port-Channel131.7 + description Test_encapsulation_vlan7 + ! + encapsulation vlan + client untagged network dot1ad outer 35 inner 60 +! +interface Port-Channel131.8 + description Test_encapsulation_vlan8 + ! + encapsulation vlan + client untagged network dot1q outer 35 inner 60 +! +interface Port-Channel131.9 + description Test_encapsulation_vlan9 + ! + encapsulation vlan + client untagged network untagged +! +interface Port-Channel131.10 + description Test_encapsulation_vlan9 + ! + encapsulation vlan + client dot1q outer 14 inner 11 network client inner +! +interface Port-Channel132 + profile test-interface-profile + description Test_port-channel_interface-profile +! +interface Port-Channel133 + description Test_switchport_tap_tool + switchport tap native vlan 10 + switchport tap identity 3 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap mpls pop all + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0010 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip + switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity qinq source dzgre port inner policy + switchport tap truncation + switchport tool truncation 160 + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dot1q remove outer 1-2 + switchport tool dzgre preserve +``` + ## Routing ### IP Routing @@ -738,6 +1605,33 @@ arp 43.42.42.42 DEAD.BEEF.CAFE arpa arp vrf defaulu 42.42.42.42 DEAD.BEEF.CAFE arpa ``` +## BFD + +### BFD Interfaces + +| Interface | Interval | Minimum RX | Multiplier | Echo | +| --------- | -------- | ---------- | ---------- | ---- | +| Port-Channel9 | 500 | 500 | 5 | True | + +## MPLS + +### MPLS Interfaces + +| Interface | MPLS IP Enabled | LDP Enabled | IGP Sync | +| --------- | --------------- | ----------- | -------- | +| Port-Channel113 | True | True | True | +| Port-Channel114 | False | False | - | + +## Multicast + +### PIM Sparse Mode + +#### PIM Sparse Mode Enabled Interfaces + +| Interface Name | VRF Name | IP Version | Border Router | DR Priority | Local Interface | +| -------------- | -------- | ---------- | ------------- | ----------- | --------------- | +| Port-Channel99 | - | IPv4 | - | 200 | - | + ## Filters ### AS Path Lists @@ -1057,3 +1951,11 @@ class-map type pbr match-any CM_PBR_INCLUDE ! class-map type pbr match-any CM_PBR_WITHOUT_ACCESS_GROUP ``` + +### QOS Interfaces + +| Interface | Trust | Default DSCP | Default COS | Shape rate | +| --------- | ----- | ------------ | ----------- | ---------- | +| Port-Channel3 | - | - | - | 200000 kbps | +| Port-Channel10 | - | - | - | 50 percent | +| Port-Channel101 | disabled | - | - | - | diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md deleted file mode 100644 index f8486b1a4f8..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md +++ /dev/null @@ -1,945 +0,0 @@ -# port-channel-interfaces - -## Table of Contents - -- [Management](#management) - - [Management Interfaces](#management-interfaces) -- [Monitoring](#monitoring) - - [SFlow](#sflow) -- [Interfaces](#interfaces) - - [Ethernet Interfaces](#ethernet-interfaces) - - [Port-Channel Interfaces](#port-channel-interfaces-1) -- [BFD](#bfd) - - [BFD Interfaces](#bfd-interfaces) -- [MPLS](#mpls) - - [MPLS Interfaces](#mpls-interfaces) -- [Multicast](#multicast) - - [PIM Sparse Mode](#pim-sparse-mode) -- [Quality Of Service](#quality-of-service) - - [QOS Interfaces](#qos-interfaces) - -## Management - -### Management Interfaces - -#### Management Interfaces Summary - -##### IPv4 - -| Management Interface | Description | Type | VRF | IP Address | Gateway | -| -------------------- | ----------- | ---- | --- | ---------- | ------- | -| Management1 | OOB_MANAGEMENT | oob | MGMT | 10.73.255.122/24 | 10.73.255.2 | - -##### IPv6 - -| Management Interface | Description | Type | VRF | IPv6 Address | IPv6 Gateway | -| -------------------- | ----------- | ---- | --- | ------------ | ------------ | -| Management1 | OOB_MANAGEMENT | oob | MGMT | - | - | - -#### Management Interfaces Device Configuration - -```eos -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 -``` - -## Monitoring - -### SFlow - -#### SFlow Summary - -sFlow is disabled. - -#### SFlow Interfaces - -| Interface | Ingress Enabled | Egress Enabled | -| --------- | --------------- | -------------- | -| Port-Channel117 | True | True | -| Port-Channel118 | True | True (unmodified) | -| Port-Channel119 | False | False | -| Port-Channel120 | False | False (unmodified) | - -## Interfaces - -### Ethernet Interfaces - -#### Ethernet Interfaces Summary - -##### L2 - -| Interface | Description | Mode | VLANs | Native VLAN | Trunk Group | Channel-Group | -| --------- | ----------- | ---- | ----- | ----------- | ----------- | ------------- | -| Ethernet3 | MLAG_PEER_DC1-LEAF1B_Ethernet3 | *trunk | *2-4094 | *- | *LEAF_PEER_L3, MLAG | 3 | -| Ethernet4 | MLAG_PEER_DC1-LEAF1B_Ethernet4 | *trunk | *2-4094 | *- | *LEAF_PEER_L3, MLAG | 3 | -| Ethernet5 | DC1-AGG01_Ethernet1 | *trunk | *110,201 | *- | *- | 5 | -| Ethernet10/1 | LAG Member | *access | *110 | *- | *- | 101 | -| Ethernet10/2 | LAG Member | *trunk | *110-112 | *- | *- | 102 | -| Ethernet10/3 | LAG Member | *trunk | *110-112 | *- | *- | 103 | -| Ethernet10/4 | LAG Member LACP fallback | *trunk | *112 | *- | *- | 104 | -| Ethernet11/2 | LAG Member LACP fallback LLDP ZTP VLAN | *trunk | *112 | *- | *- | 112 | -| Ethernet15 | DC1-AGG03_Ethernet1 | *trunk | *110,201 | *- | *- | 15 | -| Ethernet16 | DC1-AGG04_Ethernet1 | *trunk | *110,201 | *10 | *- | 16 | -| Ethernet18 | LAG Member | *access | *110 | *- | *- | 109 | -| Ethernet50 | SRV-POD03_Eth1 | *trunk | *110,201 | *- | *- | 5 | - -*Inherited from Port-Channel Interface - -##### Transceiver Settings - -| Interface | Transceiver Frequency | Media Override | -| --------- | --------------------- | -------------- | -| Ethernet5 | - | 100gbase-ar4 | - -##### Phone Interfaces - -| Interface | Mode | Native VLAN | Phone VLAN | Phone VLAN Mode | -| --------- | ---- | ----------- | ---------- | --------------- | -| Port-Channel12 | trunk phone | 100 | 70 | untagged | -| Port-Channel100 | dot1q-tunnel | 5 | 110 | tagged | - -##### IPv4 - -| Interface | Description | Channel Group | IP Address | VRF | MTU | Shutdown | ACL In | ACL Out | -| --------- | ----------- | ------------- | ---------- | ----| ---- | -------- | ------ | ------- | -| Ethernet17 | LAG Member | 17 | *192.0.2.3/31 | **default | **- | **- | **- | **- | - -*Inherited from Port-Channel Interface - -##### ISIS - -| Interface | Channel Group | ISIS Instance | ISIS BFD | ISIS Metric | Mode | ISIS Circuit Type | Hello Padding | Authentication Mode | -| --------- | ------------- | ------------- | -------- | ----------- | ---- | ----------------- | ------------- | ------------------- | -| Ethernet10/10 | 110 | *ISIS_TEST | True | *99 | *point-to-point | *level-2 | *True | *text | - -*Inherited from Port-Channel Interface - -##### Error Correction Encoding Interfaces - -| Interface | Enabled | -| --------- | ------- | -| Ethernet11/1 | fire-code
reed-solomon | - -#### Ethernet Interfaces Device Configuration - -```eos -! -interface Ethernet3 - description MLAG_PEER_DC1-LEAF1B_Ethernet3 - channel-group 3 mode active -! -interface Ethernet4 - description MLAG_PEER_DC1-LEAF1B_Ethernet4 - channel-group 3 mode active -! -interface Ethernet5 - description DC1-AGG01_Ethernet1 - channel-group 5 mode active - transceiver media override 100gbase-ar4 -! -interface Ethernet8 - description MLAG_PEER_DC1-LEAF1B_Ethernet8 - channel-group 8 mode active -! -interface Ethernet10/1 - description LAG Member - channel-group 101 mode active -! -interface Ethernet10/2 - description LAG Member - channel-group 102 mode active -! -interface Ethernet10/3 - description LAG Member - channel-group 103 mode active -! -interface Ethernet10/4 - description LAG Member LACP fallback - switchport trunk allowed vlan 100 - switchport mode trunk - switchport - channel-group 104 mode active - spanning-tree portfast -! -interface Ethernet10/10 - description isis_port_channel_member - channel-group 110 mode active -! -interface Ethernet11/1 - description LAG Member with error_correction - error-correction encoding fire-code - error-correction encoding reed-solomon - channel-group 111 mode active -! -interface Ethernet11/2 - description LAG Member LACP fallback LLDP ZTP VLAN - switchport trunk allowed vlan 112 - switchport mode trunk - switchport - channel-group 112 mode active - lldp tlv transmit ztp vlan 112 - spanning-tree portfast -! -interface Ethernet15 - description DC1-AGG03_Ethernet1 - channel-group 15 mode active - lacp timer fast - lacp timer multiplier 30 -! -interface Ethernet16 - description DC1-AGG04_Ethernet1 - channel-group 16 mode active - lacp timer normal -! -interface Ethernet17 - description LAG Member - channel-group 17 mode active -! -interface Ethernet18 - description LAG Member - channel-group 109 mode active -! -interface Ethernet50 - description SRV-POD03_Eth1 - channel-group 5 mode active - no lldp transmit - no lldp receive -``` - -### Port-Channel Interfaces - -#### Port-Channel Interfaces Summary - -##### L2 - -| Interface | Description | Mode | VLANs | Native VLAN | Trunk Group | LACP Fallback Timeout | LACP Fallback Mode | MLAG ID | EVPN ESI | -| --------- | ----------- | ---- | ----- | ----------- | ------------| --------------------- | ------------------ | ------- | -------- | -| Port-Channel3 | MLAG_PEER_DC1-LEAF1B_Po3 | trunk | 2-4094 | - | LEAF_PEER_L3, MLAG | - | - | - | - | -| Port-Channel5 | DC1_L2LEAF1_Po1 | trunk | 110,201 | - | - | - | - | 5 | - | -| Port-Channel10 | SRV01_bond0 | trunk | 2-3000 | - | - | - | - | - | 0000:0000:0404:0404:0303 | -| Port-Channel12 | interface_in_mode_access_with_voice | trunk phone | - | 100 | - | - | - | - | - | -| Port-Channel13 | EVPN-Vxlan single-active redundancy | - | - | - | - | - | - | - | 0000:0000:0000:0102:0304 | -| Port-Channel14 | EVPN-MPLS multihoming | - | - | - | - | - | - | - | 0000:0000:0000:0102:0305 | -| Port-Channel15 | DC1_L2LEAF3_Po1 | trunk | 110,201 | - | - | - | - | 15 | - | -| Port-Channel16 | DC1_L2LEAF4_Po1 | trunk | 110,201 | 10 | - | - | - | 16 | - | -| Port-Channel20 | Po_in_mode_access_accepting_tagged_LACP_frames | access | 200 | - | - | - | - | - | - | -| Port-Channel50 | SRV-POD03_PortChanne1 | trunk | 1-4000 | - | - | - | - | - | 0000:0000:0303:0202:0101 | -| Port-Channel51 | ipv6_prefix | trunk | 1-500 | - | - | - | - | - | - | -| Port-Channel100 | - | dot1q-tunnel | 10-11,200 | tag | g1, g2 | - | - | - | - | -| Port-Channel101 | PVLAN Promiscuous Access - only one secondary | access | 110 | - | - | - | - | - | - | -| Port-Channel102 | PVLAN Promiscuous Trunk - vlan translation out | trunk | 110-112 | - | - | - | - | - | - | -| Port-Channel103 | PVLAN Secondary Trunk | trunk | 110-112 | - | - | - | - | - | - | -| Port-Channel104 | LACP fallback individual | trunk | 112 | - | - | 300 | individual | - | - | -| Port-Channel105 | bpdu disabled | - | - | - | - | - | - | - | - | -| Port-Channel106 | bpdu enabled | - | - | - | - | - | - | - | - | -| Port-Channel107 | bpdu true | - | - | - | - | - | - | - | - | -| Port-Channel108 | bpdu false | - | - | - | - | - | - | - | - | -| Port-Channel109 | Molecule ACLs | access | 110 | - | - | - | - | - | - | -| Port-Channel112 | LACP fallback individual | trunk | 112 | - | - | 5 | individual | - | - | -| Port-Channel115 | native-vlan-tag-precedence | trunk | - | tag | - | - | - | - | - | -| Port-Channel121 | access_port_with_no_vlans | access | - | - | - | - | - | - | - | -| Port-Channel122 | trunk_port_with_no_vlans | trunk | - | - | - | - | - | - | - | -| Port-Channel130 | IP NAT Testing | - | - | - | - | - | - | - | - | -| Port-Channel131 | dot1q-tunnel mode | dot1q-tunnel | 115 | - | - | - | - | - | - | - -##### Encapsulation Dot1q - -| Interface | Description | Vlan ID | Dot1q VLAN Tag | Dot1q Inner VLAN Tag | -| --------- | ----------- | ------- | -------------- | -------------------- | -| Port-Channel8.101 | to Dev02 Port-Channel8.101 - VRF-C1 | - | 101 | - | -| Port-Channel100.101 | IFL for TENANT01 | - | 101 | - | -| Port-Channel100.102 | IFL for TENANT02 | - | 102 | 110 | - -##### Flexible Encapsulation Interfaces - -| Interface | Description | Vlan ID | Client Encapsulation | Client Inner Encapsulation | Client VLAN | Client Outer VLAN Tag | Client Inner VLAN Tag | Network Encapsulation | Network Inner Encapsulation | Network VLAN | Network Outer VLAN Tag | Network Inner VLAN Tag | -| --------- | ----------- | ------- | --------------- | --------------------- | ----------- | --------------------- | --------------------- | ---------------- | ---------------------- | ------------ | ---------------------- | ---------------------- | -| Port-Channel111.1 | TENANT_A pseudowire 1 interface | - | unmatched | - | - | - | - | - | - | - | - | - | -| Port-Channel111.100 | TENANT_A pseudowire 2 interface | - | dot1q | - | 100 | - | - | client | - | - | - | - | -| Port-Channel111.200 | TENANT_A pseudowire 3 interface | - | dot1q | - | 200 | - | - | - | - | - | - | - | -| Port-Channel111.300 | TENANT_A pseudowire 4 interface | - | dot1q | - | 300 | - | - | dot1q | - | 400 | - | - | -| Port-Channel111.400 | TENANT_A pseudowire 3 interface | - | dot1q | - | - | 400 | 20 | dot1q | - | - | 401 | 21 | -| Port-Channel111.1000 | L2 Subinterface | 1000 | dot1q | - | 100 | - | - | client | - | - | - | - | -| Port-Channel131.1 | Test_encapsulation_vlan1 | - | dot1q | dot1q | - | 23 | 45 | dot1ad | dot1ad | - | 32 | 54 | -| Port-Channel131.2 | Test_encapsulation_vlan2 | - | dot1q | - | 10 | - | - | dot1q | - | - | 32 | 54 | -| Port-Channel131.3 | Test_encapsulation_vlan3 | - | dot1ad | - | 12 | - | - | dot1q | - | 25 | - | - | -| Port-Channel131.4 | Test_encapsulation_vlan4 | - | dot1ad | dot1q | - | 35 | 60 | dot1q | dot1ad | - | 53 | 6 | -| Port-Channel131.5 | Test_encapsulation_vlan5 | - | dot1ad | - | - | 35 | 60 | dot1ad | - | - | 52 | 62 | -| Port-Channel131.6 | Test_encapsulation_vlan6 | - | dot1ad | - | - | 35 | 60 | client | - | - | - | - | -| Port-Channel131.7 | Test_encapsulation_vlan7 | - | untagged | - | - | - | - | dot1ad | - | - | 35 | 60 | -| Port-Channel131.8 | Test_encapsulation_vlan8 | - | untagged | - | - | - | - | dot1q | - | - | 35 | 60 | -| Port-Channel131.9 | Test_encapsulation_vlan9 | - | untagged | - | - | - | - | untagged | - | - | - | - | -| Port-Channel131.10 | Test_encapsulation_vlan9 | - | dot1q | - | - | 14 | 11 | client inner | - | - | - | - | - -##### Private VLAN - -| Interface | PVLAN Mapping | Secondary Trunk | -| --------- | ------------- | ----------------| -| Port-Channel15 | - | False | -| Port-Channel100 | 20-30 | True | -| Port-Channel101 | 111 | - | -| Port-Channel103 | - | True | - -##### VLAN Translations - -| Interface | Direction | From VLAN ID(s) | To VLAN ID | From Inner VLAN ID | To Inner VLAN ID | Network | Dot1q-tunnel | -| --------- | --------- | --------------- | ---------- | ------------------ | ---------------- | ------- | ------------ | -| Port-Channel16 | out | 23 | 22 | - | - | - | True | -| Port-Channel100 | both | 12 | 20 | - | - | - | - | -| Port-Channel100 | both | 23 | 42 | 74 | - | False | - | -| Port-Channel100 | both | 24 | 46 | 78 | - | True | - | -| Port-Channel100 | both | 43 | 30 | - | - | - | True | -| Port-Channel100 | in | 23 | 45 | - | - | - | True | -| Port-Channel100 | in | 34 | 23 | - | - | - | - | -| Port-Channel100 | in | 37 | 49 | - | 56 | - | - | -| Port-Channel100 | out | 10 | 45 | - | 34 | - | - | -| Port-Channel100 | out | 34 | 50 | - | - | - | - | -| Port-Channel100 | out | 45 | all | - | - | - | True | -| Port-Channel100 | out | 55 | - | - | - | - | - | -| Port-Channel102 | out | 111-112 | 110 | - | - | - | - | - -##### EVPN Multihoming - -####### EVPN Multihoming Summary - -| Interface | Ethernet Segment Identifier | Multihoming Redundancy Mode | Route Target | -| --------- | --------------------------- | --------------------------- | ------------ | -| Port-Channel10 | 0000:0000:0404:0404:0303 | all-active | 04:04:03:03:02:02 | -| Port-Channel13 | 0000:0000:0000:0102:0304 | single-active | 00:00:01:02:03:04 | -| Port-Channel14 | 0000:0000:0000:0102:0305 | all-active | 00:00:01:02:03:05 | -| Port-Channel50 | 0000:0000:0303:0202:0101 | all-active | 03:03:02:02:01:01 | -| Port-Channel111.1000 | 0000:0000:0303:0202:0101 | all-active | 03:03:02:02:01:01 | - -####### Designated Forwarder Election Summary - -| Interface | Algorithm | Preference Value | Dont Preempt | Hold time | Subsequent Hold Time | Candidate Reachability Required | -| --------- | --------- | ---------------- | ------------ | --------- | -------------------- | ------------------------------- | -| Port-Channel13 | preference | 100 | True | 10 | - | True | - -####### EVPN-MPLS summary - -| Interface | Shared Index | Tunnel Flood Filter Time | -| --------- | ------------ | ------------------------ | -| Port-Channel14 | 100 | 100 | - -##### Link Tracking Groups - -| Interface | Group Name | Direction | -| --------- | ---------- | --------- | -| Port-Channel5 | EVPN_MH_ES1 | downstream | -| Port-Channel15 | EVPN_MH_ES2 | upstream | - -##### IPv4 - -| Interface | Description | MLAG ID | IP Address | VRF | MTU | Shutdown | ACL In | ACL Out | -| --------- | ----------- | ------- | ---------- | --- | --- | -------- | ------ | ------- | -| Port-Channel8.101 | to Dev02 Port-Channel8.101 - VRF-C1 | - | 10.1.2.3/31 | default | - | - | - | - | -| Port-Channel9 | - | - | 10.9.2.3/31 | default | - | - | - | - | -| Port-Channel17 | PBR Description | - | 192.0.2.3/31 | default | - | - | - | - | -| Port-Channel99 | MCAST | - | 192.0.2.10/31 | default | - | - | - | - | -| Port-Channel100.101 | IFL for TENANT01 | - | 10.1.1.3/31 | default | 1500 | - | - | - | -| Port-Channel100.102 | IFL for TENANT02 | - | 10.1.2.3/31 | C2 | 1500 | - | - | - | -| Port-Channel113 | interface_with_mpls_enabled | - | 172.31.128.9/31 | default | - | - | - | - | -| Port-Channel114 | interface_with_mpls_disabled | - | 172.31.128.10/31 | default | - | - | - | - | - -##### IP NAT: Source Static - -| Interface | Direction | Original IP | Original Port | Access List | Translated IP | Translated Port | Protocol | Group | Priority | Comment | -| --------- | --------- | ----------- | ------------- | ----------- | ------------- | --------------- | -------- | ----- | -------- | ------- | -| Port-Channel130 | - | 3.0.0.1 | - | - | 4.0.0.1 | - | - | - | 0 | - | - -##### IP NAT: Source Dynamic - -| Interface | Access List | NAT Type | Pool Name | Priority | Comment | -| --------- | ----------- | -------- | --------- | -------- | ------- | -| Port-Channel130 | ACL2 | pool | POOL2 | 0 | - | - -##### IP NAT: Destination Static - -| Interface | Direction | Original IP | Original Port | Access List | Translated IP | Translated Port | Protocol | Group | Priority | Comment | -| --------- | --------- | ----------- | ------------- | ----------- | ------------- | --------------- | -------- | ----- | -------- | ------- | -| Port-Channel130 | - | 1.0.0.1 | - | - | 2.0.0.1 | - | - | - | 0 | - | - -##### IP NAT: Destination Dynamic - -| Interface | Access List | Pool Name | Priority | Comment | -| --------- | ----------- | --------- | -------- | ------- | -| Port-Channel130 | ACL1 | POOL1 | 0 | - | - -##### ISIS - -| Interface | ISIS Instance | ISIS BFD | ISIS Metric | Mode | ISIS Circuit Type | Hello Padding | Authentication Mode | -| --------- | ------------- | -------- | ----------- | ---- | ----------------- | ------------- | ------------------- | -| Port-Channel110 | ISIS_TEST | True | 99 | point-to-point | level-2 | True | text | - -#### Port-Channel Interfaces Device Configuration - -```eos -! -interface Port-Channel3 - description MLAG_PEER_DC1-LEAF1B_Po3 - switchport trunk allowed vlan 2-4094 - switchport mode trunk - switchport trunk group LEAF_PEER_L3 - switchport trunk group MLAG - switchport - no snmp trap link-change - shape rate 200000 kbps -! -interface Port-Channel5 - description DC1_L2LEAF1_Po1 - bgp session tracker ST2 - switchport trunk allowed vlan 110,201 - switchport mode trunk - switchport - ip verify unicast source reachable-via rx - ip igmp host-proxy - ip igmp host-proxy 239.0.0.1 - ip igmp host-proxy 239.0.0.2 exclude 10.0.2.1 - ip igmp host-proxy 239.0.0.3 include 10.0.3.1 - ip igmp host-proxy 239.0.0.4 include 10.0.4.3 - ip igmp host-proxy 239.0.0.4 include 10.0.4.4 - ip igmp host-proxy 239.0.0.4 exclude 10.0.4.1 - ip igmp host-proxy 239.0.0.4 exclude 10.0.4.2 - ip igmp host-proxy access-list ACL1 - ip igmp host-proxy access-list ACL2 - ip igmp host-proxy report-interval 2 - ip igmp host-proxy version 2 - l2 mtu 8000 - l2 mru 8000 - mlag 5 - storm-control broadcast level 1 - storm-control multicast level 1 - storm-control unknown-unicast level 1 - link tracking group EVPN_MH_ES1 downstream - comment - Comment created from eos_cli under port_channel_interfaces.Port-Channel5 - EOF - -! -interface Port-Channel8 - description to Dev02 Port-channel 8 - no switchport - switchport port-security violation protect -! -interface Port-Channel8.101 - description to Dev02 Port-Channel8.101 - VRF-C1 - encapsulation dot1q vlan 101 - ip address 10.1.2.3/31 -! -interface Port-Channel9 - no switchport - ip address 10.9.2.3/31 - bfd interval 500 min-rx 500 multiplier 5 - bfd echo - bfd neighbor 10.1.2.4 - bfd per-link rfc-7130 - spanning-tree guard root -! -interface Port-Channel10 - description SRV01_bond0 - switchport trunk allowed vlan 2-3000 - switchport mode trunk - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0404:0404:0303 - route-target import 04:04:03:03:02:02 - shape rate 50 percent -! -interface Port-Channel12 - description interface_in_mode_access_with_voice - switchport trunk native vlan 100 - switchport phone vlan 70 - switchport phone trunk untagged - switchport mode trunk phone - switchport -! -interface Port-Channel13 - description EVPN-Vxlan single-active redundancy - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0000:0102:0304 - redundancy single-active - designated-forwarder election algorithm preference 100 dont-preempt - designated-forwarder election hold-time 10 - designated-forwarder election candidate reachability required - route-target import 00:00:01:02:03:04 -! -interface Port-Channel14 - description EVPN-MPLS multihoming - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0000:0102:0305 - mpls tunnel flood filter time 100 - mpls shared index 100 - route-target import 00:00:01:02:03:05 -! -interface Port-Channel15 - description DC1_L2LEAF3_Po1 - switchport trunk allowed vlan 110,201 - switchport mode trunk - switchport - mlag 15 - spanning-tree guard loop - link tracking group EVPN_MH_ES2 upstream -! -interface Port-Channel16 - description DC1_L2LEAF4_Po1 - switchport trunk native vlan 10 - switchport dot1q vlan tag disallowed - switchport trunk allowed vlan 110,201 - switchport mode trunk - switchport - switchport vlan translation out 23 dot1q-tunnel 22 - snmp trap link-change - mlag 16 - switchport port-security violation protect log - switchport port-security mac-address maximum 100 - spanning-tree guard none - switchport backup-link Port-Channel100 prefer vlan 20 -! -interface Port-Channel17 - description PBR Description - no switchport - ip address 192.0.2.3/31 - service-policy type pbr input MyPolicy -! -interface Port-Channel20 - description Po_in_mode_access_accepting_tagged_LACP_frames - switchport access vlan 200 - switchport mode access - switchport - l2-protocol encapsulation dot1q vlan 200 -! -interface Port-Channel50 - description SRV-POD03_PortChanne1 - switchport trunk allowed vlan 1-4000 - switchport mode trunk - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0303:0202:0101 - route-target import 03:03:02:02:01:01 - lacp system-id 0303.0202.0101 -! -interface Port-Channel51 - description ipv6_prefix - switchport trunk allowed vlan 1-500 - switchport mode trunk - switchport - ipv6 nd prefix a1::/64 infinite infinite no-autoconfig - switchport port-security - no switchport port-security mac-address maximum disabled - switchport port-security vlan 1 mac-address maximum 3 - switchport port-security vlan 2 mac-address maximum 3 - switchport port-security vlan 3 mac-address maximum 3 - switchport port-security vlan default mac-address maximum 2 -! -interface Port-Channel99 - description MCAST - no switchport - ip address 192.0.2.10/31 - pim ipv4 sparse-mode - pim ipv4 bidirectional - pim ipv4 hello interval 15 - pim ipv4 hello count 4.5 - pim ipv4 dr-priority 200 - pim ipv4 bfd -! -interface Port-Channel100 - logging event link-status - switchport access vlan 200 - switchport trunk native vlan tag - switchport phone vlan 110 - switchport phone trunk tagged - switchport vlan translation in required - switchport dot1q vlan tag required - switchport trunk allowed vlan 10-11 - switchport mode dot1q-tunnel - switchport dot1q ethertype 1536 - switchport vlan forwarding accept all - switchport trunk group g1 - switchport trunk group g2 - no switchport - switchport source-interface tx multicast - switchport vlan translation 12 20 - switchport vlan translation 23 inner 74 42 - switchport vlan translation 24 inner 78 network 46 - switchport vlan translation 43 dot1q-tunnel 30 - switchport vlan translation in 34 23 - switchport vlan translation in 37 inner 56 49 - switchport vlan translation in 23 dot1q-tunnel 45 - switchport vlan translation out 34 50 - switchport vlan translation out 10 45 inner 34 - switchport vlan translation out 45 dot1q-tunnel all - switchport trunk private-vlan secondary - switchport pvlan mapping 20-30 - switchport port-security - switchport port-security mac-address maximum disabled - switchport backup-link Port-channel51 - switchport backup preemption-delay 35 - switchport backup mac-move-burst 20 - switchport backup mac-move-burst-interval 30 - switchport backup initial-mac-move-delay 10 - switchport backup dest-macaddr 01:00:00:00:00:00 -! -interface Port-Channel100.101 - description IFL for TENANT01 - mtu 1500 - logging event link-status - encapsulation dot1q vlan 101 - ip address 10.1.1.3/31 - switchport tap identity 3 inner 10 - switchport tap mac-address dest 01:00:00:00:00:00 - switchport tap encapsulation vxlan strip - switchport tool identity dot1q - switchport tool identity dot1q source dzgre policy - switchport tap truncation 120 - switchport tool truncation -! -interface Port-Channel100.102 - description IFL for TENANT02 - mtu 1500 - no logging event link-status - encapsulation dot1q vlan 102 inner 110 - vrf C2 - ip address 10.1.2.3/31 - logging event storm-control discards -! -interface Port-Channel101 - description PVLAN Promiscuous Access - only one secondary - switchport access vlan 110 - switchport mode access - switchport - switchport pvlan mapping 111 - no qos trust -! -interface Port-Channel102 - description PVLAN Promiscuous Trunk - vlan translation out - switchport vlan translation out required - switchport trunk allowed vlan 110-112 - switchport mode trunk - switchport - switchport vlan translation out 111-112 110 -! -interface Port-Channel103 - description PVLAN Secondary Trunk - switchport trunk allowed vlan 110-112 - switchport mode trunk - switchport - switchport trunk private-vlan secondary -! -interface Port-Channel104 - description LACP fallback individual - switchport trunk allowed vlan 112 - switchport mode trunk - switchport - port-channel lacp fallback individual - port-channel lacp fallback timeout 300 -! -interface Port-Channel105 - description bpdu disabled - switchport - spanning-tree bpduguard disable - spanning-tree bpdufilter disable -! -interface Port-Channel106 - description bpdu enabled - switchport - spanning-tree bpduguard enable - spanning-tree bpdufilter enable -! -interface Port-Channel107 - description bpdu true - switchport - spanning-tree bpduguard enable - spanning-tree bpdufilter enable -! -interface Port-Channel108 - description bpdu false - switchport -! -interface Port-Channel109 - description Molecule ACLs - switchport access vlan 110 - switchport mode access - switchport - ip access-group IPV4_ACL_IN in - ip access-group IPV4_ACL_OUT out - ipv6 access-group IPV6_ACL_IN in - ipv6 access-group IPV6_ACL_OUT out - mac access-group MAC_ACL_IN in - mac access-group MAC_ACL_OUT out -! -interface Port-Channel110 - description isis_interface_knobs - no switchport - isis enable ISIS_TEST - isis bfd - isis circuit-type level-2 - isis metric 99 - isis hello padding - isis network point-to-point - isis authentication mode text - isis authentication key 7 -! -interface Port-Channel111 - description Flexencap Port-Channel - no switchport -! -interface Port-Channel111.1 - description TENANT_A pseudowire 1 interface - ! - encapsulation vlan - client unmatched -! -interface Port-Channel111.100 - description TENANT_A pseudowire 2 interface - ! - encapsulation vlan - client dot1q 100 network client -! -interface Port-Channel111.200 - description TENANT_A pseudowire 3 interface - ! - encapsulation vlan - client dot1q 200 -! -interface Port-Channel111.300 - description TENANT_A pseudowire 4 interface - ! - encapsulation vlan - client dot1q 300 network dot1q 400 -! -interface Port-Channel111.400 - description TENANT_A pseudowire 3 interface - ! - encapsulation vlan - client dot1q outer 400 inner 20 network dot1q outer 401 inner 21 -! -interface Port-Channel111.1000 - description L2 Subinterface - vlan id 1000 - ! - encapsulation vlan - client dot1q 100 network client - ! - evpn ethernet-segment - identifier 0000:0000:0303:0202:0101 - route-target import 03:03:02:02:01:01 - lacp system-id 0303.0202.0101 -! -interface Port-Channel112 - description LACP fallback individual - switchport trunk allowed vlan 112 - switchport mode trunk - switchport - port-channel lacp fallback individual - port-channel lacp fallback timeout 5 -! -interface Port-Channel113 - description interface_with_mpls_enabled - no switchport - ip address 172.31.128.9/31 - mpls ldp igp sync - mpls ldp interface - mpls ip -! -interface Port-Channel114 - description interface_with_mpls_disabled - no switchport - ip address 172.31.128.10/31 - no mpls ldp interface - no mpls ip -! -interface Port-Channel115 - description native-vlan-tag-precedence - switchport trunk native vlan tag - switchport mode trunk - switchport -! -interface Port-Channel117 - description interface_with_sflow_ingress_egress_enabled - no switchport - sflow enable - sflow egress enable -! -interface Port-Channel118 - description interface_with_sflow_ingress_egress_unmodified_enabled - no switchport - sflow enable - sflow egress unmodified enable -! -interface Port-Channel119 - description interface_with_sflow_ingress_egress_disabled - no switchport - no sflow enable - no sflow egress enable -! -interface Port-Channel120 - description interface_with_sflow_ingress_egress_unmodified_disabled - no switchport - no sflow enable - no sflow egress unmodified enable -! -interface Port-Channel121 - description access_port_with_no_vlans - switchport mode access - switchport -! -interface Port-Channel122 - description trunk_port_with_no_vlans - switchport mode trunk - switchport -! -interface Port-Channel130 - description IP NAT Testing - switchport - ip nat destination static 1.0.0.1 2.0.0.1 - ip nat source static 3.0.0.1 4.0.0.1 - ip nat destination dynamic access-list ACL1 pool POOL1 - ip nat source dynamic access-list ACL2 pool POOL2 -! -interface Port-Channel131 - description dot1q-tunnel mode - switchport access vlan 115 - switchport mode dot1q-tunnel - switchport -! -interface Port-Channel131.1 - description Test_encapsulation_vlan1 - ! - encapsulation vlan - client dot1q outer 23 inner dot1q 45 network dot1ad outer 32 inner dot1ad 54 -! -interface Port-Channel131.2 - description Test_encapsulation_vlan2 - ! - encapsulation vlan - client dot1q 10 network dot1q outer 32 inner 54 -! -interface Port-Channel131.3 - description Test_encapsulation_vlan3 - ! - encapsulation vlan - client dot1ad 12 network dot1q 25 -! -interface Port-Channel131.4 - description Test_encapsulation_vlan4 - ! - encapsulation vlan - client dot1ad outer 35 inner dot1q 60 network dot1q outer 53 inner dot1ad 6 -! -interface Port-Channel131.5 - description Test_encapsulation_vlan5 - ! - encapsulation vlan - client dot1ad outer 35 inner 60 network dot1ad outer 52 inner 62 -! -interface Port-Channel131.6 - description Test_encapsulation_vlan6 - ! - encapsulation vlan - client dot1ad outer 35 inner 60 network client -! -interface Port-Channel131.7 - description Test_encapsulation_vlan7 - ! - encapsulation vlan - client untagged network dot1ad outer 35 inner 60 -! -interface Port-Channel131.8 - description Test_encapsulation_vlan8 - ! - encapsulation vlan - client untagged network dot1q outer 35 inner 60 -! -interface Port-Channel131.9 - description Test_encapsulation_vlan9 - ! - encapsulation vlan - client untagged network untagged -! -interface Port-Channel131.10 - description Test_encapsulation_vlan9 - ! - encapsulation vlan - client dot1q outer 14 inner 11 network client inner -! -interface Port-Channel132 - profile test-interface-profile - description Test_port-channel_interface-profile -! -interface Port-Channel133 - description Test_switchport_tap_tool - switchport tap native vlan 10 - switchport tap identity 3 - switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap mpls pop all - switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0010 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip - switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tool mpls pop all - switchport tool encapsulation vn-tag strip - switchport tool encapsulation dot1br strip - switchport tap allowed vlan 25 - switchport tool allowed vlan 23 - switchport tool identity qinq - switchport tool identity qinq source dzgre port inner policy - switchport tap truncation - switchport tool truncation 160 - switchport tap default group g1 group g2 group g3 - switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 - switchport tap default interface ethernet4 - switchport tap default interface port-channel10 - switchport tool group set group1 group2 group3 - switchport tool dot1q remove outer 1-2 - switchport tool dzgre preserve -``` - -## BFD - -### BFD Interfaces - -| Interface | Interval | Minimum RX | Multiplier | Echo | -| --------- | -------- | ---------- | ---------- | ---- | -| Port-Channel9 | 500 | 500 | 5 | True | - -## MPLS - -### MPLS Interfaces - -| Interface | MPLS IP Enabled | LDP Enabled | IGP Sync | -| --------- | --------------- | ----------- | -------- | -| Port-Channel113 | True | True | True | -| Port-Channel114 | False | False | - | - -## Multicast - -### PIM Sparse Mode - -#### PIM Sparse Mode Enabled Interfaces - -| Interface Name | VRF Name | IP Version | Border Router | DR Priority | Local Interface | -| -------------- | -------- | ---------- | ------------- | ----------- | --------------- | -| Port-Channel99 | - | IPv4 | - | 200 | - | - -## Quality Of Service - -### QOS Interfaces - -| Interface | Trust | Default DSCP | Default COS | Shape rate | -| --------- | ----- | ------------ | ----------- | ---------- | -| Port-Channel3 | - | - | - | 200000 kbps | -| Port-Channel10 | - | - | - | 50 percent | -| Port-Channel101 | disabled | - | - | - | diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg deleted file mode 100644 index 72163225eed..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg +++ /dev/null @@ -1,840 +0,0 @@ -! -interface Ethernet1 - description P2P_LINK_TO_DC1-SPINE1_Ethernet1 - mtu 1500 - bgp session tracker ST1 - l2 mtu 8000 - l2 mru 8000 - speed forced 100gfull - switchport access vlan 200 - switchport trunk native vlan tag - switchport phone vlan 110 - switchport phone trunk tagged - switchport vlan translation in required - switchport dot1q vlan tag required - switchport trunk allowed vlan 110-111,210-211 - switchport mode dot1q-tunnel - switchport dot1q ethertype 1536 - switchport vlan forwarding accept all - switchport trunk group g1 - switchport trunk group g2 - no switchport - switchport source-interface tx - switchport vlan translation 12 20 - switchport vlan translation 24 inner 78 network 46 - switchport vlan translation 24 inner 78 46 - switchport vlan translation 43 dot1q-tunnel 30 - switchport vlan translation in 10 24 - switchport vlan translation in 37 inner 56 49 - switchport vlan translation in 23 dot1q-tunnel 45 - switchport vlan translation out 34 50 - switchport vlan translation out 10 45 inner 34 - switchport vlan translation out 45 dot1q-tunnel all - switchport trunk private-vlan secondary - switchport pvlan mapping 20-30 - ip address 172.31.255.1/31 - ip verify unicast source reachable-via rx - bfd interval 500 min-rx 500 multiplier 5 - bfd echo - ip igmp host-proxy - ip igmp host-proxy 239.0.0.1 - ip igmp host-proxy 239.0.0.2 exclude 10.0.2.1 - ip igmp host-proxy 239.0.0.3 include 10.0.3.1 - ip igmp host-proxy 239.0.0.4 include 10.0.4.3 - ip igmp host-proxy 239.0.0.4 include 10.0.4.4 - ip igmp host-proxy 239.0.0.4 exclude 10.0.4.1 - ip igmp host-proxy 239.0.0.4 exclude 10.0.4.2 - ip igmp host-proxy access-list ACL1 - ip igmp host-proxy access-list ACL2 - ip igmp host-proxy report-interval 2 - ip igmp host-proxy version 2 - tcp mss ceiling ipv4 70 ipv6 75 egress - switchport port-security - switchport port-security mac-address maximum disabled - priority-flow-control on - priority-flow-control priority 5 drop - switchport backup-link Ethernet5 prefer vlan 10 - switchport backup preemption-delay 35 - switchport backup mac-move-burst 20 - switchport backup mac-move-burst-interval 30 - switchport backup initial-mac-move-delay 10 - switchport backup dest-macaddr 01:00:00:00:00:00 - link tracking group EVPN_MH_ES1 upstream - comment - Comment created from eos_cli under ethernet_interfaces.Ethernet1 - EOF - -! -interface Ethernet2 - description SRV-POD02_Eth1 - switchport dot1q vlan tag disallowed - switchport trunk allowed vlan 110-111,210-211 - switchport mode trunk - switchport - ip address 10.1.255.3/24 - ip address 1.1.1.3/24 secondary - ip address 1.1.1.4/24 secondary - ip address 10.0.0.254/24 secondary - ip address 192.168.1.1/24 secondary - tcp mss ceiling ipv4 70 ingress - multicast ipv4 boundary ACL_MULTICAST - multicast ipv6 boundary ACL_V6_MULTICAST out - multicast ipv4 static - switchport port-security violation protect log - switchport port-security mac-address maximum 100 - priority-flow-control on - priority-flow-control priority 5 no-drop - storm-control broadcast level pps 500 - storm-control unknown-unicast level 1 - storm-control all level 10 - spanning-tree bpduguard disable - spanning-tree bpdufilter disable -! -interface Ethernet3 - description P2P_LINK_TO_DC1-SPINE2_Ethernet2 - mtu 1500 - switchport trunk native vlan 5 - switchport mode trunk - no switchport - switchport vlan translation out 23 dot1q-tunnel 50 - no snmp trap link-change - ip address 172.31.128.1/31 - ipv6 enable - ipv6 address 2002:ABDC::1/64 - ipv6 nd prefix 2345:ABCD:3FE0::1/96 infinite 50 no-autoconfig - ipv6 nd prefix 2345:ABCD:3FE0::2/96 50 infinite - ipv6 nd prefix 2345:ABCD:3FE0::3/96 100000 no-autoconfig - tcp mss ceiling ipv6 65 - switchport port-security - no switchport port-security mac-address maximum disabled - switchport port-security vlan 1 mac-address maximum 3 - switchport port-security vlan 2 mac-address maximum 3 - switchport port-security vlan 2 mac-address maximum 4 - switchport port-security vlan 3 mac-address maximum 3 - switchport port-security vlan 22 mac-address maximum 4 - switchport port-security vlan 41 mac-address maximum 4 - switchport port-security vlan default mac-address maximum 2 - no priority-flow-control - spanning-tree guard root - switchport backup-link Ethernet4 - link tracking group EVPN_MH_ES2 downstream -! -interface Ethernet4 - description Molecule IPv6 - shutdown - mtu 9100 - no switchport - snmp trap link-change - ipv6 enable - ipv6 address 2020::2020/64 - ipv6 address FE80:FEA::AB65/64 link-local - ipv6 nd ra disabled - ipv6 nd managed-config-flag - tcp mss ceiling ipv4 65 - ipv6 access-group IPv6_ACL_IN in - ipv6 access-group IPv6_ACL_OUT out - multicast ipv4 boundary 224.0.1.0/24 out - multicast ipv4 boundary 224.0.2.0/24 - multicast ipv6 boundary ff00::/16 out - multicast ipv6 boundary ff01::/16 out - multicast ipv4 static - switchport port-security violation protect - priority-flow-control on - spanning-tree guard none -! -interface Ethernet5 - description Molecule Routing - no shutdown - mtu 9100 - switchport access vlan 220 - no switchport - ip ospf cost 99 - ip ospf network point-to-point - ip ospf authentication message-digest - ip ospf authentication-key 7 asfddja23452 - ip ospf area 100 - ip ospf message-digest-key 1 sha512 7 asfddja23452 - pim ipv4 sparse-mode - pim ipv4 bidirectional - pim ipv4 border-router - pim ipv4 hello interval 10 - pim ipv4 hello count 2.5 - pim ipv4 dr-priority 200 - pim ipv4 bfd - isis enable ISIS_TEST - isis bfd - isis circuit-type level-2 - isis metric 99 - no isis hello padding - isis network point-to-point - isis authentication mode md5 - isis authentication key 7 asfddja23452 - spanning-tree guard loop -! -interface Ethernet6 - description SRV-POD02_Eth1 - logging event link-status - logging event congestion-drops - switchport trunk allowed vlan 110-111,210-211 - switchport mode trunk - switchport - logging event storm-control discards - spanning-tree bpduguard enable - spanning-tree bpdufilter enable - logging event spanning-tree -! -interface Ethernet7 - description Molecule L2 - no shutdown - mtu 7000 - switchport - ptp enable - ptp announce interval 10 - ptp announce timeout 30 - ptp delay-mechanism p2p - ptp delay-req interval 20 - ptp role master - ptp sync-message interval 5 - ptp transport layer2 - ptp vlan all - service-profile QoS - qos trust cos - qos cos 5 - storm-control broadcast level pps 10 - storm-control multicast level 50 - storm-control unknown-unicast level 10 - storm-control all level 75 - spanning-tree portfast - spanning-tree bpduguard enable - spanning-tree bpdufilter enable - vmtracer vmware-esx - transceiver media override 100gbase-ar4 -! -interface Ethernet8 - description to WAN-ISP1-01 Ethernet2 - no switchport - no lldp transmit - no lldp receive -! -interface Ethernet8.101 - description to WAN-ISP-01 Ethernet2.101 - VRF-C1 - encapsulation dot1q vlan 101 - ip address 172.31.128.1/31 - ipv6 enable - ipv6 address 2002:ABDC::1/64 -! -interface Ethernet9 - description interface_with_mpls_enabled - no switchport - ip address 172.31.128.9/31 - mpls ldp interface - multicast ipv4 boundary ACL_MULTICAST out - multicast ipv6 static - mpls ip -! -interface Ethernet10 - description interface_with_mpls_disabled - no switchport - ip address 172.31.128.10/31 - no mpls ldp interface - no mpls ip -! -interface Ethernet11 - description interface_in_mode_access_accepting_tagged_LACP - switchport access vlan 200 - switchport mode access - switchport - l2-protocol encapsulation dot1q vlan 200 -! -interface Ethernet12 - description interface_with_dot1q_tunnel - switchport access vlan 300 - switchport mode dot1q-tunnel - switchport -! -interface Ethernet13 - description interface_in_mode_access_with_voice - no logging event link-status - no logging event congestion-drops - switchport trunk native vlan 100 - switchport phone vlan 70 - switchport phone trunk untagged - switchport mode trunk phone - switchport - no logging event storm-control discards - no logging event spanning-tree -! -interface Ethernet14 - description SRV-POD02_Eth1 - logging event link-status - switchport trunk allowed vlan 110-111,210-211 - switchport mode trunk - switchport -! -interface Ethernet15 - description PVLAN Promiscuous Access - only one secondary - switchport access vlan 110 - switchport mode access - switchport - switchport pvlan mapping 111 -! -interface Ethernet16 - description PVLAN Promiscuous Trunk - vlan translation out - switchport vlan translation out required - switchport trunk allowed vlan 110-112 - switchport mode trunk - switchport - switchport vlan translation out 111-112 110 -! -interface Ethernet17 - description PVLAN Secondary Trunk - switchport trunk allowed vlan 110-112 - switchport mode trunk - switchport - switchport trunk private-vlan secondary -! -interface Ethernet18 - description PBR Description - mtu 1500 - no switchport - ip address 192.0.2.1/31 - service-policy type pbr input MyLANServicePolicy -! -interface Ethernet19 - description Switched port with no LLDP rx/tx - switchport access vlan 110 - switchport mode access - switchport - no lldp transmit - no lldp receive - lldp tlv transmit ztp vlan 666 -! -interface Ethernet20 - description Port patched through patch-panel to pseudowire - no switchport - no lldp transmit - no lldp receive -! -interface Ethernet21 - description 200MBit/s shape - switchport - no qos trust - shape rate 200000 kbps -! -interface Ethernet22 - description 10% shape - switchport - shape rate 10 percent -! -interface Ethernet23 - description Error-correction encoding - error-correction encoding fire-code - error-correction encoding reed-solomon - switchport -! -interface Ethernet24 - description Disable error-correction encoding - no error-correction encoding - switchport -! -interface Ethernet25 - description Molecule MAC - switchport - mac access-group MAC_ACL_IN in - mac access-group MAC_ACL_OUT out -! -interface Ethernet26 - no switchport -! -interface Ethernet26.1 - description TENANT_A pseudowire 1 interface - encapsulation vlan - client unmatched -! -interface Ethernet26.100 - description TENANT_A pseudowire 1 interface - vlan id 10 - encapsulation vlan - client dot1q 100 network client -! -interface Ethernet26.200 - description TENANT_A pseudowire 2 interface - encapsulation vlan - client dot1q 200 -! -interface Ethernet26.300 - description TENANT_A pseudowire 3 interface - encapsulation vlan - client dot1q 300 network dot1q 400 -! -interface Ethernet26.400 - description TENANT_A pseudowire 3 interface - encapsulation vlan - client dot1q outer 400 inner 20 network dot1q outer 401 inner 21 -! -interface Ethernet26.500 - description TENANT_A pseudowire 3 interface - encapsulation vlan - client dot1q outer 500 inner 50 network client -! -interface Ethernet27 - description EVPN-Vxlan single-active redundancy - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0000:0102:0304 - redundancy single-active - designated-forwarder election algorithm preference 100 dont-preempt - designated-forwarder election hold-time 10 - designated-forwarder election candidate reachability required - route-target import 00:00:01:02:03:04 -! -interface Ethernet28 - description EVPN-MPLS multihoming - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0000:0102:0305 - mpls tunnel flood filter time 100 - mpls shared index 100 - route-target import 00:00:01:02:03:05 -! -interface Ethernet29 - description DOT1X Testing - auto phone true - switchport - dot1x port-control auto - dot1x port-control force-authorized phone -! -interface Ethernet30 - description DOT1X Testing - force-authorized phone false - switchport - dot1x port-control force-authorized - no dot1x port-control force-authorized phone -! -interface Ethernet31 - description DOT1X Testing - force-unauthorized - no phone - switchport - dot1x port-control force-unauthorized -! -interface Ethernet32 - description DOT1X Testing - auto reauthentication - switchport - dot1x reauthentication - dot1x port-control auto -! -interface Ethernet33 - description DOT1X Testing - pae mode authenticator - switchport - dot1x pae authenticator -! -interface Ethernet34 - description DOT1X Testing - authentication_failure allow - switchport - dot1x authentication failure action traffic allow vlan 800 -! -interface Ethernet35 - description DOT1X Testing - authentication_failure drop - switchport - dot1x authentication failure action traffic drop -! -interface Ethernet36 - description DOT1X Testing - host-mode single-host - switchport - dot1x host-mode single-host -! -interface Ethernet37 - description DOT1X Testing - host-mode multi-host - switchport - dot1x host-mode multi-host -! -interface Ethernet38 - description DOT1X Testing - host-mode multi-host authenticated - switchport - dot1x host-mode multi-host authenticated -! -interface Ethernet39 - description DOT1X Testing - mac_based_authentication host-mode common true - switchport - dot1x mac based authentication host-mode common -! -interface Ethernet40 - description DOT1X Testing - mac_based_authentication always - switchport - dot1x mac based authentication always -! -interface Ethernet41 - description DOT1X Testing - mac_based_authentication always and host-mode common - switchport - dot1x mac based authentication host-mode common - dot1x mac based authentication always -! -interface Ethernet42 - description DOT1X Testing - mac_based_authentication - switchport - dot1x mac based authentication -! -interface Ethernet43 - description DOT1X Testing - timeout values - switchport - dot1x timeout quiet-period 10 - dot1x timeout reauth-timeout-ignore always - dot1x timeout tx-period 6 - dot1x timeout reauth-period server - dot1x timeout idle-host 15 seconds -! -interface Ethernet44 - description DOT1X Testing - reauthorization_request_limit - switchport - dot1x eapol disabled - dot1x reauthorization request limit 3 -! -interface Ethernet45 - description DOT1X Testing - all features - switchport - dot1x pae authenticator - dot1x authentication failure action traffic allow vlan 800 - dot1x reauthentication - dot1x port-control auto - dot1x host-mode multi-host authenticated - dot1x mac based authentication - dot1x timeout quiet-period 10 - dot1x timeout reauth-timeout-ignore always - dot1x timeout tx-period 10 - dot1x timeout reauth-period server - dot1x timeout idle-host 10 seconds - dot1x reauthorization request limit 2 - dot1x unauthorized access vlan membership egress - dot1x unauthorized native vlan membership egress - dot1x eapol authentication failure fallback mba timeout 600 -! -interface Ethernet46 - description native-vlan-tag-precedence - switchport trunk native vlan tag - switchport mode trunk - switchport -! -interface Ethernet47 - description IP Helper - no switchport - ip address 172.31.255.1/31 - ip helper-address 10.10.64.151 - ip helper-address 10.10.96.101 source-interface Loopback0 - ip helper-address 10.10.96.150 vrf MGMT source-interface Loopback0 - ip helper-address 10.10.96.151 vrf MGMT -! -interface Ethernet48 - description Load Interval - load-interval 5 - switchport -! -interface Ethernet50 - description SFlow Interface Testing - SFlow ingress enabled - switchport - sflow enable -! -interface Ethernet51 - description SFlow Interface Testing - SFlow egress enabled - switchport - sflow egress enable -! -interface Ethernet52 - description SFlow Interface Testing - SFlow ingress and egress unmodified enabled - switchport - sflow enable - sflow egress unmodified enable -! -interface Ethernet53 - description SFlow Interface Testing - SFlow ingress and egress disabled - switchport - no sflow enable - no sflow egress enable -! -interface Ethernet54 - description SFlow Interface Testing - SFlow ingress and egress unmodified disabled - switchport - no sflow enable - no sflow egress unmodified enable -! -interface Ethernet55 - description DHCPv6 Relay Testing - no shutdown - no switchport - ipv6 dhcp relay destination a0::2 link-address a0::3 - ipv6 dhcp relay destination a0::4 vrf TEST local-interface Loopback55 link-address a0::5 - ipv6 address a0::1/64 -! -interface Ethernet56 - description Interface with poe commands and limit in class - switchport - poe priority low - poe reboot action power-off - poe link down action power-off 10 seconds - poe shutdown action maintain - poe limit 30.00 watts - poe negotiation lldp disabled -! -interface Ethernet57 - description Interface with poe commands and limit in watts - switchport - poe priority critical - poe reboot action maintain - poe link down action maintain - poe shutdown action power-off - poe limit 45.00 watts fixed - poe legacy detect -! -interface Ethernet58 - description Interface with poe disabled and no other poe keys - switchport - poe disabled -! -interface Ethernet60 - description IP NAT Testing - switchport - ip nat destination static 1.0.0.1 2.0.0.1 - ip nat destination static 1.0.0.2 22 2.0.0.2 - ip nat destination static 1.0.0.3 22 2.0.0.3 23 - ip nat destination static 1.0.0.4 22 2.0.0.4 23 protocol udp - ip nat destination static 1.0.0.7 access-list ACL21 2.0.0.7 - ip nat source static 3.0.0.1 4.0.0.1 - ip nat source static 3.0.0.2 22 4.0.0.2 - ip nat source static 3.0.0.3 22 4.0.0.3 23 - ip nat source static 3.0.0.4 22 4.0.0.4 23 protocol udp - ip nat source static 3.0.0.7 access-list ACL21 4.0.0.7 - ip nat source ingress static 3.0.0.8 4.0.0.8 - ip nat destination egress static 239.0.0.1 239.0.0.2 - ip nat source static 3.0.0.5 22 4.0.0.5 23 protocol tcp group 1 - ip nat destination static 1.0.0.5 22 2.0.0.5 23 protocol tcp group 1 - ip nat source static 3.0.0.6 22 4.0.0.6 23 protocol tcp group 2 comment Comment Test - ip nat destination static 1.0.0.6 22 2.0.0.6 23 protocol tcp group 2 comment Comment Test - ip nat destination dynamic access-list ACL1 pool POOL1 - ip nat source dynamic access-list ACL11 pool POOL11 - ip nat source dynamic access-list ACL12 pool POOL11 comment POOL11 shared with ACL11/12 - ip nat source dynamic access-list ACL13 pool POOL13 priority 10 - ip nat source dynamic access-list ACL14 pool POOL14 priority 1 comment Priority low end - ip nat source dynamic access-list ACL15 pool POOL15 priority 4294967295 comment Priority high end - ip nat source dynamic access-list ACL16 pool POOL16 comment Priority default - ip nat source dynamic access-list ACL17 overload priority 10 comment Priority_10 - ip nat source dynamic access-list ACL18 pool POOL18 address-only priority 10 comment Priority_10 - ip nat source dynamic access-list ACL19 pool POOL19 full-cone priority 10 comment Priority_10 - ip nat destination dynamic access-list ACL2 pool POOL1 comment POOL1 shared with ACL1/2 - ip nat destination dynamic access-list ACL3 pool POOL3 priority 10 - ip nat destination dynamic access-list ACL4 pool POOL4 priority 1 comment Priority low end - ip nat destination dynamic access-list ACL5 pool POOL5 priority 4294967295 comment Priority high end - ip nat destination dynamic access-list ACL6 pool POOL6 comment Priority default -! -interface Ethernet61 - description interface_in_mode_access_with_voice - no logging event link-status - no logging event congestion-drops - switchport trunk native vlan 100 - switchport phone vlan 70 - switchport phone trunk untagged phone - switchport mode trunk phone - switchport - no logging event storm-control discards - no logging event spanning-tree -! -interface Ethernet62 - description interface_in_mode_access_with_voice - no logging event link-status - no logging event congestion-drops - switchport trunk native vlan 100 - switchport phone vlan 70 - switchport phone trunk tagged phone - switchport mode trunk phone - switchport - no logging event storm-control discards - no logging event spanning-tree -! -interface Ethernet63 - description DHCP client interface - no switchport - ip address dhcp - dhcp client accept default-route -! -interface Ethernet64 - description DHCP server interface - no switchport - mac timestamp replace-fcs - ip address 192.168.42.42/24 - dhcp server ipv4 - dhcp server ipv6 -! -interface Ethernet65 - description Multiple VRIDs - no shutdown - no switchport - mac timestamp header - ip address 192.0.2.2/25 - ipv6 enable - ipv6 address 2001:db8::2/64 - ipv6 address fe80::2/64 link-local - vrrp 1 priority-level 105 - vrrp 1 advertisement interval 2 - vrrp 1 preempt delay minimum 30 reload 800 - vrrp 1 ipv4 192.0.2.1 - vrrp 2 ipv6 2001:db8::1 -! -interface Ethernet66 - description Multiple VRIDs and tracking - no shutdown - no switchport - ip address 192.0.2.2/25 - ipv6 enable - ipv6 address 2001:db8::2/64 - ipv6 address fe80::2/64 link-local - vrrp 1 priority-level 105 - vrrp 1 advertisement interval 2 - vrrp 1 preempt delay minimum 30 reload 800 - vrrp 1 ipv4 192.0.2.1 - vrrp 1 tracked-object ID1-TrackedObjectDecrement decrement 5 - vrrp 1 tracked-object ID1-TrackedObjectShutdown shutdown - vrrp 2 ipv6 2001:db8::1 - vrrp 2 tracked-object ID2-TrackedObjectDecrement decrement 10 - vrrp 2 tracked-object ID2-TrackedObjectShutdown shutdown - no vrrp 3 preempt - vrrp 3 timers delay reload 900 - vrrp 3 ipv4 100.64.0.1 - vrrp 3 ipv4 version 3 -! -interface Ethernet67 - description Custom_Transceiver_Frequency - no shutdown - switchport - mac timestamp before-fcs - transceiver frequency 190050.000 -! -interface Ethernet67.1 - description Test_encapsulation_dot1q - encapsulation dot1q vlan 4 inner 34 -! -interface Ethernet68 - description Custom_Transceiver_Frequency - no shutdown - switchport - transceiver media override 100gbase-ar4 - transceiver frequency 190080.000 ghz -! -interface Ethernet68.1 - description Test_encapsulation_vlan1 - encapsulation vlan - client dot1q outer 23 inner dot1q 45 network dot1ad outer 32 inner dot1ad 54 -! -interface Ethernet68.2 - description Test_encapsulation_vlan2 - encapsulation vlan - client dot1q 10 network dot1q outer 32 inner 54 -! -interface Ethernet68.3 - description Test_encapsulation_vlan3 - encapsulation vlan - client dot1ad 12 network dot1q 25 -! -interface Ethernet68.4 - description Test_encapsulation_vlan4 - encapsulation vlan - client dot1ad outer 35 inner dot1q 60 network dot1q outer 53 inner dot1ad 6 -! -interface Ethernet68.5 - description Test_encapsulation_vlan5 - encapsulation vlan - client dot1ad outer 35 inner 60 network dot1ad outer 52 inner 62 -! -interface Ethernet68.6 - description Test_encapsulation_vlan6 - encapsulation vlan - client dot1ad outer 35 inner 60 network client -! -interface Ethernet68.7 - description Test_encapsulation_vlan7 - encapsulation vlan - client untagged network dot1ad outer 35 inner 60 -! -interface Ethernet68.8 - description Test_encapsulation_vlan8 - encapsulation vlan - client untagged network dot1q outer 35 inner 60 -! -interface Ethernet68.9 - description Test_encapsulation_vlan9 - encapsulation vlan - client untagged network untagged -! -interface Ethernet68.10 - description Test_encapsulation_vlan9 - encapsulation vlan - client dot1q outer 14 inner 11 network client inner -! -interface Ethernet69 - description IP NAT service-profile - switchport - ip nat service-profile TEST-NAT-PROFILE -! -interface Ethernet70 - description dot1x_aaa_unresponsive - no shutdown - dot1x aaa unresponsive phone action apply cached-results timeout 10 hours else traffic allow - dot1x aaa unresponsive action traffic allow vlan 10 access-list acl1 - dot1x aaa unresponsive eap response success - dot1x mac based access-list -! -interface Ethernet71 - description dot1x_aaa_unresponsive1 - no shutdown - dot1x aaa unresponsive phone action apply cached-results timeout 10 hours - dot1x aaa unresponsive action traffic allow vlan 10 access-list acl1 - dot1x aaa unresponsive eap response success - dot1x mac based access-list -! -interface Ethernet72 - description dot1x_aaa_unresponsive2 - no shutdown - dot1x aaa unresponsive action traffic allow vlan 10 access-list acl1 - dot1x aaa unresponsive eap response success - dot1x mac based access-list -! -interface Ethernet73 - description Switchport_tap_tool - switchport tap native vlan 10 - switchport tap identity 3 inner 5 - switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap mpls pop all - switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0001 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip - switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tool mpls pop all - switchport tool encapsulation vn-tag strip - switchport tool encapsulation dot1br strip - switchport tap allowed vlan 25 - switchport tool allowed vlan 23 - switchport tool identity qinq - switchport tool identity dot1q source dzgre port - switchport tap truncation 150 - switchport tool truncation - switchport tap default group g1 group g2 group g3 - switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 - switchport tap default interface ethernet4 - switchport tap default interface port-channel10 - switchport tool group set group1 group2 group3 - switchport tool dot1q remove outer 1 - switchport tool dzgre preserve -! -interface Ethernet74 - description Test_tap_tool - switchport tap identity 5 - switchport tap mac-address dest 01:00:00:00:00:00 - switchport tap encapsulation vxlan strip - switchport tool identity dot1q - switchport tool identity qinq source dzgre policy inner port - switchport tap truncation - switchport tool truncation 160 -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 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 a705ff28115..7865c422447 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 @@ -241,6 +241,533 @@ dot1x radius av-pair dhcp vendor-class-id auth-only supplicant logging ! +interface Port-Channel3 + description MLAG_PEER_DC1-LEAF1B_Po3 + switchport trunk allowed vlan 2-4094 + switchport mode trunk + switchport trunk group LEAF_PEER_L3 + switchport trunk group MLAG + switchport + no snmp trap link-change + shape rate 200000 kbps +! +interface Port-Channel5 + description DC1_L2LEAF1_Po1 + bgp session tracker ST2 + switchport trunk allowed vlan 110,201 + switchport mode trunk + switchport + ip verify unicast source reachable-via rx + ip igmp host-proxy + ip igmp host-proxy 239.0.0.1 + ip igmp host-proxy 239.0.0.2 exclude 10.0.2.1 + ip igmp host-proxy 239.0.0.3 include 10.0.3.1 + ip igmp host-proxy 239.0.0.4 include 10.0.4.3 + ip igmp host-proxy 239.0.0.4 include 10.0.4.4 + ip igmp host-proxy 239.0.0.4 exclude 10.0.4.1 + ip igmp host-proxy 239.0.0.4 exclude 10.0.4.2 + ip igmp host-proxy access-list ACL1 + ip igmp host-proxy access-list ACL2 + ip igmp host-proxy report-interval 2 + ip igmp host-proxy version 2 + l2 mtu 8000 + l2 mru 8000 + mlag 5 + storm-control broadcast level 1 + storm-control multicast level 1 + storm-control unknown-unicast level 1 + link tracking group EVPN_MH_ES1 downstream + comment + Comment created from eos_cli under port_channel_interfaces.Port-Channel5 + EOF + +! +interface Port-Channel8 + description to Dev02 Port-channel 8 + no switchport + switchport port-security violation protect +! +interface Port-Channel8.101 + description to Dev02 Port-Channel8.101 - VRF-C1 + encapsulation dot1q vlan 101 + ip address 10.1.2.3/31 +! +interface Port-Channel9 + no switchport + ip address 10.9.2.3/31 + bfd interval 500 min-rx 500 multiplier 5 + bfd echo + bfd neighbor 10.1.2.4 + bfd per-link rfc-7130 + spanning-tree guard root +! +interface Port-Channel10 + description SRV01_bond0 + switchport trunk allowed vlan 2-3000 + switchport mode trunk + switchport + ! + evpn ethernet-segment + identifier 0000:0000:0404:0404:0303 + route-target import 04:04:03:03:02:02 + shape rate 50 percent +! +interface Port-Channel12 + description interface_in_mode_access_with_voice + switchport trunk native vlan 100 + switchport phone vlan 70 + switchport phone trunk untagged + switchport mode trunk phone + switchport +! +interface Port-Channel13 + description EVPN-Vxlan single-active redundancy + switchport + ! + evpn ethernet-segment + identifier 0000:0000:0000:0102:0304 + redundancy single-active + designated-forwarder election algorithm preference 100 dont-preempt + designated-forwarder election hold-time 10 + designated-forwarder election candidate reachability required + route-target import 00:00:01:02:03:04 +! +interface Port-Channel14 + description EVPN-MPLS multihoming + switchport + ! + evpn ethernet-segment + identifier 0000:0000:0000:0102:0305 + mpls tunnel flood filter time 100 + mpls shared index 100 + route-target import 00:00:01:02:03:05 +! +interface Port-Channel15 + description DC1_L2LEAF3_Po1 + switchport trunk allowed vlan 110,201 + switchport mode trunk + switchport + mlag 15 + spanning-tree guard loop + link tracking group EVPN_MH_ES2 upstream +! +interface Port-Channel16 + description DC1_L2LEAF4_Po1 + switchport trunk native vlan 10 + switchport dot1q vlan tag disallowed + switchport trunk allowed vlan 110,201 + switchport mode trunk + switchport + switchport vlan translation out 23 dot1q-tunnel 22 + snmp trap link-change + mlag 16 + switchport port-security violation protect log + switchport port-security mac-address maximum 100 + spanning-tree guard none + switchport backup-link Port-Channel100 prefer vlan 20 +! +interface Port-Channel17 + description PBR Description + no switchport + ip address 192.0.2.3/31 + service-policy type pbr input MyPolicy +! +interface Port-Channel20 + description Po_in_mode_access_accepting_tagged_LACP_frames + switchport access vlan 200 + switchport mode access + switchport + l2-protocol encapsulation dot1q vlan 200 +! +interface Port-Channel50 + description SRV-POD03_PortChanne1 + switchport trunk allowed vlan 1-4000 + switchport mode trunk + switchport + ! + evpn ethernet-segment + identifier 0000:0000:0303:0202:0101 + route-target import 03:03:02:02:01:01 + lacp system-id 0303.0202.0101 +! +interface Port-Channel51 + description ipv6_prefix + switchport trunk allowed vlan 1-500 + switchport mode trunk + switchport + ipv6 nd prefix a1::/64 infinite infinite no-autoconfig + switchport port-security + no switchport port-security mac-address maximum disabled + switchport port-security vlan 1 mac-address maximum 3 + switchport port-security vlan 2 mac-address maximum 3 + switchport port-security vlan 3 mac-address maximum 3 + switchport port-security vlan default mac-address maximum 2 +! +interface Port-Channel99 + description MCAST + no switchport + ip address 192.0.2.10/31 + pim ipv4 sparse-mode + pim ipv4 bidirectional + pim ipv4 hello interval 15 + pim ipv4 hello count 4.5 + pim ipv4 dr-priority 200 + pim ipv4 bfd +! +interface Port-Channel100 + logging event link-status + switchport access vlan 200 + switchport trunk native vlan tag + switchport phone vlan 110 + switchport phone trunk tagged + switchport vlan translation in required + switchport dot1q vlan tag required + switchport trunk allowed vlan 10-11 + switchport mode dot1q-tunnel + switchport dot1q ethertype 1536 + switchport vlan forwarding accept all + switchport trunk group g1 + switchport trunk group g2 + no switchport + switchport source-interface tx multicast + switchport vlan translation 12 20 + switchport vlan translation 23 inner 74 42 + switchport vlan translation 24 inner 78 network 46 + switchport vlan translation 43 dot1q-tunnel 30 + switchport vlan translation in 34 23 + switchport vlan translation in 37 inner 56 49 + switchport vlan translation in 23 dot1q-tunnel 45 + switchport vlan translation out 34 50 + switchport vlan translation out 10 45 inner 34 + switchport vlan translation out 45 dot1q-tunnel all + switchport trunk private-vlan secondary + switchport pvlan mapping 20-30 + switchport port-security + switchport port-security mac-address maximum disabled + switchport backup-link Port-channel51 + switchport backup preemption-delay 35 + switchport backup mac-move-burst 20 + switchport backup mac-move-burst-interval 30 + switchport backup initial-mac-move-delay 10 + switchport backup dest-macaddr 01:00:00:00:00:00 +! +interface Port-Channel100.101 + description IFL for TENANT01 + mtu 1500 + logging event link-status + encapsulation dot1q vlan 101 + ip address 10.1.1.3/31 + switchport tap identity 3 inner 10 + switchport tap mac-address dest 01:00:00:00:00:00 + switchport tap encapsulation vxlan strip + switchport tool identity dot1q + switchport tool identity dot1q source dzgre policy + switchport tap truncation 120 + switchport tool truncation +! +interface Port-Channel100.102 + description IFL for TENANT02 + mtu 1500 + no logging event link-status + encapsulation dot1q vlan 102 inner 110 + vrf C2 + ip address 10.1.2.3/31 + logging event storm-control discards +! +interface Port-Channel101 + description PVLAN Promiscuous Access - only one secondary + switchport access vlan 110 + switchport mode access + switchport + switchport pvlan mapping 111 + no qos trust +! +interface Port-Channel102 + description PVLAN Promiscuous Trunk - vlan translation out + switchport vlan translation out required + switchport trunk allowed vlan 110-112 + switchport mode trunk + switchport + switchport vlan translation out 111-112 110 +! +interface Port-Channel103 + description PVLAN Secondary Trunk + switchport trunk allowed vlan 110-112 + switchport mode trunk + switchport + switchport trunk private-vlan secondary +! +interface Port-Channel104 + description LACP fallback individual + switchport trunk allowed vlan 112 + switchport mode trunk + switchport + port-channel lacp fallback individual + port-channel lacp fallback timeout 300 +! +interface Port-Channel105 + description bpdu disabled + switchport + spanning-tree bpduguard disable + spanning-tree bpdufilter disable +! +interface Port-Channel106 + description bpdu enabled + switchport + spanning-tree bpduguard enable + spanning-tree bpdufilter enable +! +interface Port-Channel107 + description bpdu true + switchport + spanning-tree bpduguard enable + spanning-tree bpdufilter enable +! +interface Port-Channel108 + description bpdu false + switchport +! +interface Port-Channel109 + description Molecule ACLs + switchport access vlan 110 + switchport mode access + switchport + ip access-group IPV4_ACL_IN in + ip access-group IPV4_ACL_OUT out + ipv6 access-group IPV6_ACL_IN in + ipv6 access-group IPV6_ACL_OUT out + mac access-group MAC_ACL_IN in + mac access-group MAC_ACL_OUT out +! +interface Port-Channel110 + description isis_interface_knobs + no switchport + isis enable ISIS_TEST + isis bfd + isis circuit-type level-2 + isis metric 99 + isis hello padding + isis network point-to-point + isis authentication mode text + isis authentication key 7 asfddja23452 +! +interface Port-Channel111 + description Flexencap Port-Channel + no switchport +! +interface Port-Channel111.1 + description TENANT_A pseudowire 1 interface + ! + encapsulation vlan + client unmatched +! +interface Port-Channel111.100 + description TENANT_A pseudowire 2 interface + ! + encapsulation vlan + client dot1q 100 network client +! +interface Port-Channel111.200 + description TENANT_A pseudowire 3 interface + ! + encapsulation vlan + client dot1q 200 +! +interface Port-Channel111.300 + description TENANT_A pseudowire 4 interface + ! + encapsulation vlan + client dot1q 300 network dot1q 400 +! +interface Port-Channel111.400 + description TENANT_A pseudowire 3 interface + ! + encapsulation vlan + client dot1q outer 400 inner 20 network dot1q outer 401 inner 21 +! +interface Port-Channel111.1000 + description L2 Subinterface + vlan id 1000 + ! + encapsulation vlan + client dot1q 100 network client + ! + evpn ethernet-segment + identifier 0000:0000:0303:0202:0101 + route-target import 03:03:02:02:01:01 + lacp system-id 0303.0202.0101 +! +interface Port-Channel112 + description LACP fallback individual + switchport trunk allowed vlan 112 + switchport mode trunk + switchport + port-channel lacp fallback individual + port-channel lacp fallback timeout 5 +! +interface Port-Channel113 + description interface_with_mpls_enabled + no switchport + ip address 172.31.128.9/31 + mpls ldp igp sync + mpls ldp interface + mpls ip +! +interface Port-Channel114 + description interface_with_mpls_disabled + no switchport + ip address 172.31.128.10/31 + no mpls ldp interface + no mpls ip +! +interface Port-Channel115 + description native-vlan-tag-precedence + switchport trunk native vlan tag + switchport mode trunk + switchport +! +interface Port-Channel117 + description interface_with_sflow_ingress_egress_enabled + no switchport + sflow enable + sflow egress enable +! +interface Port-Channel118 + description interface_with_sflow_ingress_egress_unmodified_enabled + no switchport + sflow enable + sflow egress unmodified enable +! +interface Port-Channel119 + description interface_with_sflow_ingress_egress_disabled + no switchport + no sflow enable + no sflow egress enable +! +interface Port-Channel120 + description interface_with_sflow_ingress_egress_unmodified_disabled + no switchport + no sflow enable + no sflow egress unmodified enable +! +interface Port-Channel121 + description access_port_with_no_vlans + switchport mode access + switchport +! +interface Port-Channel122 + description trunk_port_with_no_vlans + switchport mode trunk + switchport +! +interface Port-Channel130 + description IP NAT Testing + switchport + ip nat destination static 1.0.0.1 2.0.0.1 + ip nat source static 3.0.0.1 4.0.0.1 + ip nat destination dynamic access-list ACL1 pool POOL1 + ip nat source dynamic access-list ACL2 pool POOL2 +! +interface Port-Channel131 + description dot1q-tunnel mode + switchport access vlan 115 + switchport mode dot1q-tunnel + switchport +! +interface Port-Channel131.1 + description Test_encapsulation_vlan1 + ! + encapsulation vlan + client dot1q outer 23 inner dot1q 45 network dot1ad outer 32 inner dot1ad 54 +! +interface Port-Channel131.2 + description Test_encapsulation_vlan2 + ! + encapsulation vlan + client dot1q 10 network dot1q outer 32 inner 54 +! +interface Port-Channel131.3 + description Test_encapsulation_vlan3 + ! + encapsulation vlan + client dot1ad 12 network dot1q 25 +! +interface Port-Channel131.4 + description Test_encapsulation_vlan4 + ! + encapsulation vlan + client dot1ad outer 35 inner dot1q 60 network dot1q outer 53 inner dot1ad 6 +! +interface Port-Channel131.5 + description Test_encapsulation_vlan5 + ! + encapsulation vlan + client dot1ad outer 35 inner 60 network dot1ad outer 52 inner 62 +! +interface Port-Channel131.6 + description Test_encapsulation_vlan6 + ! + encapsulation vlan + client dot1ad outer 35 inner 60 network client +! +interface Port-Channel131.7 + description Test_encapsulation_vlan7 + ! + encapsulation vlan + client untagged network dot1ad outer 35 inner 60 +! +interface Port-Channel131.8 + description Test_encapsulation_vlan8 + ! + encapsulation vlan + client untagged network dot1q outer 35 inner 60 +! +interface Port-Channel131.9 + description Test_encapsulation_vlan9 + ! + encapsulation vlan + client untagged network untagged +! +interface Port-Channel131.10 + description Test_encapsulation_vlan9 + ! + encapsulation vlan + client dot1q outer 14 inner 11 network client inner +! +interface Port-Channel132 + profile test-interface-profile + description Test_port-channel_interface-profile +! +interface Port-Channel133 + description Test_switchport_tap_tool + switchport tap native vlan 10 + switchport tap identity 3 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap mpls pop all + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre protocol 0x0010 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip + switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity qinq source dzgre port inner policy + switchport tap truncation + switchport tool truncation 160 + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dot1q remove outer 1-2 + switchport tool dzgre preserve +! interface Dps1 description Test DPS Interface shutdown @@ -251,6 +778,87 @@ interface Dps1 tcp mss ceiling ipv4 666 ipv6 666 ingress load-interval 42 ! +interface Ethernet3 + description MLAG_PEER_DC1-LEAF1B_Ethernet3 + channel-group 3 mode active +! +interface Ethernet4 + description MLAG_PEER_DC1-LEAF1B_Ethernet4 + channel-group 3 mode active +! +interface Ethernet5 + description DC1-AGG01_Ethernet1 + channel-group 5 mode active + transceiver media override 100gbase-ar4 +! +interface Ethernet8 + description MLAG_PEER_DC1-LEAF1B_Ethernet8 + channel-group 8 mode active +! +interface Ethernet10/1 + description LAG Member + channel-group 101 mode active +! +interface Ethernet10/2 + description LAG Member + channel-group 102 mode active +! +interface Ethernet10/3 + description LAG Member + channel-group 103 mode active +! +interface Ethernet10/4 + description LAG Member LACP fallback + switchport trunk allowed vlan 100 + switchport mode trunk + switchport + channel-group 104 mode active + spanning-tree portfast +! +interface Ethernet10/10 + description isis_port_channel_member + channel-group 110 mode active +! +interface Ethernet11/1 + description LAG Member with error_correction + error-correction encoding fire-code + error-correction encoding reed-solomon + channel-group 111 mode active +! +interface Ethernet11/2 + description LAG Member LACP fallback LLDP ZTP VLAN + switchport trunk allowed vlan 112 + switchport mode trunk + switchport + channel-group 112 mode active + lldp tlv transmit ztp vlan 112 + spanning-tree portfast +! +interface Ethernet15 + description DC1-AGG03_Ethernet1 + channel-group 15 mode active + lacp timer fast + lacp timer multiplier 30 +! +interface Ethernet16 + description DC1-AGG04_Ethernet1 + channel-group 16 mode active + lacp timer normal +! +interface Ethernet17 + description LAG Member + channel-group 17 mode active +! +interface Ethernet18 + description LAG Member + channel-group 109 mode active +! +interface Ethernet50 + description SRV-POD03_Eth1 + channel-group 5 mode active + no lldp transmit + no lldp receive +! interface Management1 description OOB_MANAGEMENT vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg deleted file mode 100644 index 5f263bb30c1..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg +++ /dev/null @@ -1,613 +0,0 @@ -! -interface Port-Channel3 - description MLAG_PEER_DC1-LEAF1B_Po3 - switchport trunk allowed vlan 2-4094 - switchport mode trunk - switchport trunk group LEAF_PEER_L3 - switchport trunk group MLAG - switchport - no snmp trap link-change - shape rate 200000 kbps -! -interface Port-Channel5 - description DC1_L2LEAF1_Po1 - bgp session tracker ST2 - switchport trunk allowed vlan 110,201 - switchport mode trunk - switchport - ip verify unicast source reachable-via rx - ip igmp host-proxy - ip igmp host-proxy 239.0.0.1 - ip igmp host-proxy 239.0.0.2 exclude 10.0.2.1 - ip igmp host-proxy 239.0.0.3 include 10.0.3.1 - ip igmp host-proxy 239.0.0.4 include 10.0.4.3 - ip igmp host-proxy 239.0.0.4 include 10.0.4.4 - ip igmp host-proxy 239.0.0.4 exclude 10.0.4.1 - ip igmp host-proxy 239.0.0.4 exclude 10.0.4.2 - ip igmp host-proxy access-list ACL1 - ip igmp host-proxy access-list ACL2 - ip igmp host-proxy report-interval 2 - ip igmp host-proxy version 2 - l2 mtu 8000 - l2 mru 8000 - mlag 5 - storm-control broadcast level 1 - storm-control multicast level 1 - storm-control unknown-unicast level 1 - link tracking group EVPN_MH_ES1 downstream - comment - Comment created from eos_cli under port_channel_interfaces.Port-Channel5 - EOF - -! -interface Port-Channel8 - description to Dev02 Port-channel 8 - no switchport - switchport port-security violation protect -! -interface Port-Channel8.101 - description to Dev02 Port-Channel8.101 - VRF-C1 - encapsulation dot1q vlan 101 - ip address 10.1.2.3/31 -! -interface Port-Channel9 - no switchport - ip address 10.9.2.3/31 - bfd interval 500 min-rx 500 multiplier 5 - bfd echo - bfd neighbor 10.1.2.4 - bfd per-link rfc-7130 - spanning-tree guard root -! -interface Port-Channel10 - description SRV01_bond0 - switchport trunk allowed vlan 2-3000 - switchport mode trunk - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0404:0404:0303 - route-target import 04:04:03:03:02:02 - shape rate 50 percent -! -interface Port-Channel12 - description interface_in_mode_access_with_voice - switchport trunk native vlan 100 - switchport phone vlan 70 - switchport phone trunk untagged - switchport mode trunk phone - switchport -! -interface Port-Channel13 - description EVPN-Vxlan single-active redundancy - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0000:0102:0304 - redundancy single-active - designated-forwarder election algorithm preference 100 dont-preempt - designated-forwarder election hold-time 10 - designated-forwarder election candidate reachability required - route-target import 00:00:01:02:03:04 -! -interface Port-Channel14 - description EVPN-MPLS multihoming - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0000:0102:0305 - mpls tunnel flood filter time 100 - mpls shared index 100 - route-target import 00:00:01:02:03:05 -! -interface Port-Channel15 - description DC1_L2LEAF3_Po1 - switchport trunk allowed vlan 110,201 - switchport mode trunk - switchport - mlag 15 - spanning-tree guard loop - link tracking group EVPN_MH_ES2 upstream -! -interface Port-Channel16 - description DC1_L2LEAF4_Po1 - switchport trunk native vlan 10 - switchport dot1q vlan tag disallowed - switchport trunk allowed vlan 110,201 - switchport mode trunk - switchport - switchport vlan translation out 23 dot1q-tunnel 22 - snmp trap link-change - mlag 16 - switchport port-security violation protect log - switchport port-security mac-address maximum 100 - spanning-tree guard none - switchport backup-link Port-Channel100 prefer vlan 20 -! -interface Port-Channel17 - description PBR Description - no switchport - ip address 192.0.2.3/31 - service-policy type pbr input MyPolicy -! -interface Port-Channel20 - description Po_in_mode_access_accepting_tagged_LACP_frames - switchport access vlan 200 - switchport mode access - switchport - l2-protocol encapsulation dot1q vlan 200 -! -interface Port-Channel50 - description SRV-POD03_PortChanne1 - switchport trunk allowed vlan 1-4000 - switchport mode trunk - switchport - ! - evpn ethernet-segment - identifier 0000:0000:0303:0202:0101 - route-target import 03:03:02:02:01:01 - lacp system-id 0303.0202.0101 -! -interface Port-Channel51 - description ipv6_prefix - switchport trunk allowed vlan 1-500 - switchport mode trunk - switchport - ipv6 nd prefix a1::/64 infinite infinite no-autoconfig - switchport port-security - no switchport port-security mac-address maximum disabled - switchport port-security vlan 1 mac-address maximum 3 - switchport port-security vlan 2 mac-address maximum 3 - switchport port-security vlan 3 mac-address maximum 3 - switchport port-security vlan default mac-address maximum 2 -! -interface Port-Channel99 - description MCAST - no switchport - ip address 192.0.2.10/31 - pim ipv4 sparse-mode - pim ipv4 bidirectional - pim ipv4 hello interval 15 - pim ipv4 hello count 4.5 - pim ipv4 dr-priority 200 - pim ipv4 bfd -! -interface Port-Channel100 - logging event link-status - switchport access vlan 200 - switchport trunk native vlan tag - switchport phone vlan 110 - switchport phone trunk tagged - switchport vlan translation in required - switchport dot1q vlan tag required - switchport trunk allowed vlan 10-11 - switchport mode dot1q-tunnel - switchport dot1q ethertype 1536 - switchport vlan forwarding accept all - switchport trunk group g1 - switchport trunk group g2 - no switchport - switchport source-interface tx multicast - switchport vlan translation 12 20 - switchport vlan translation 23 inner 74 42 - switchport vlan translation 24 inner 78 network 46 - switchport vlan translation 43 dot1q-tunnel 30 - switchport vlan translation in 34 23 - switchport vlan translation in 37 inner 56 49 - switchport vlan translation in 23 dot1q-tunnel 45 - switchport vlan translation out 34 50 - switchport vlan translation out 10 45 inner 34 - switchport vlan translation out 45 dot1q-tunnel all - switchport trunk private-vlan secondary - switchport pvlan mapping 20-30 - switchport port-security - switchport port-security mac-address maximum disabled - switchport backup-link Port-channel51 - switchport backup preemption-delay 35 - switchport backup mac-move-burst 20 - switchport backup mac-move-burst-interval 30 - switchport backup initial-mac-move-delay 10 - switchport backup dest-macaddr 01:00:00:00:00:00 -! -interface Port-Channel100.101 - description IFL for TENANT01 - mtu 1500 - logging event link-status - encapsulation dot1q vlan 101 - ip address 10.1.1.3/31 - switchport tap identity 3 inner 10 - switchport tap mac-address dest 01:00:00:00:00:00 - switchport tap encapsulation vxlan strip - switchport tool identity dot1q - switchport tool identity dot1q source dzgre policy - switchport tap truncation 120 - switchport tool truncation -! -interface Port-Channel100.102 - description IFL for TENANT02 - mtu 1500 - no logging event link-status - encapsulation dot1q vlan 102 inner 110 - vrf C2 - ip address 10.1.2.3/31 - logging event storm-control discards -! -interface Port-Channel101 - description PVLAN Promiscuous Access - only one secondary - switchport access vlan 110 - switchport mode access - switchport - switchport pvlan mapping 111 - no qos trust -! -interface Port-Channel102 - description PVLAN Promiscuous Trunk - vlan translation out - switchport vlan translation out required - switchport trunk allowed vlan 110-112 - switchport mode trunk - switchport - switchport vlan translation out 111-112 110 -! -interface Port-Channel103 - description PVLAN Secondary Trunk - switchport trunk allowed vlan 110-112 - switchport mode trunk - switchport - switchport trunk private-vlan secondary -! -interface Port-Channel104 - description LACP fallback individual - switchport trunk allowed vlan 112 - switchport mode trunk - switchport - port-channel lacp fallback individual - port-channel lacp fallback timeout 300 -! -interface Port-Channel105 - description bpdu disabled - switchport - spanning-tree bpduguard disable - spanning-tree bpdufilter disable -! -interface Port-Channel106 - description bpdu enabled - switchport - spanning-tree bpduguard enable - spanning-tree bpdufilter enable -! -interface Port-Channel107 - description bpdu true - switchport - spanning-tree bpduguard enable - spanning-tree bpdufilter enable -! -interface Port-Channel108 - description bpdu false - switchport -! -interface Port-Channel109 - description Molecule ACLs - switchport access vlan 110 - switchport mode access - switchport - ip access-group IPV4_ACL_IN in - ip access-group IPV4_ACL_OUT out - ipv6 access-group IPV6_ACL_IN in - ipv6 access-group IPV6_ACL_OUT out - mac access-group MAC_ACL_IN in - mac access-group MAC_ACL_OUT out -! -interface Port-Channel110 - description isis_interface_knobs - no switchport - isis enable ISIS_TEST - isis bfd - isis circuit-type level-2 - isis metric 99 - isis hello padding - isis network point-to-point - isis authentication mode text - isis authentication key 7 asfddja23452 -! -interface Port-Channel111 - description Flexencap Port-Channel - no switchport -! -interface Port-Channel111.1 - description TENANT_A pseudowire 1 interface - ! - encapsulation vlan - client unmatched -! -interface Port-Channel111.100 - description TENANT_A pseudowire 2 interface - ! - encapsulation vlan - client dot1q 100 network client -! -interface Port-Channel111.200 - description TENANT_A pseudowire 3 interface - ! - encapsulation vlan - client dot1q 200 -! -interface Port-Channel111.300 - description TENANT_A pseudowire 4 interface - ! - encapsulation vlan - client dot1q 300 network dot1q 400 -! -interface Port-Channel111.400 - description TENANT_A pseudowire 3 interface - ! - encapsulation vlan - client dot1q outer 400 inner 20 network dot1q outer 401 inner 21 -! -interface Port-Channel111.1000 - description L2 Subinterface - vlan id 1000 - ! - encapsulation vlan - client dot1q 100 network client - ! - evpn ethernet-segment - identifier 0000:0000:0303:0202:0101 - route-target import 03:03:02:02:01:01 - lacp system-id 0303.0202.0101 -! -interface Port-Channel112 - description LACP fallback individual - switchport trunk allowed vlan 112 - switchport mode trunk - switchport - port-channel lacp fallback individual - port-channel lacp fallback timeout 5 -! -interface Port-Channel113 - description interface_with_mpls_enabled - no switchport - ip address 172.31.128.9/31 - mpls ldp igp sync - mpls ldp interface - mpls ip -! -interface Port-Channel114 - description interface_with_mpls_disabled - no switchport - ip address 172.31.128.10/31 - no mpls ldp interface - no mpls ip -! -interface Port-Channel115 - description native-vlan-tag-precedence - switchport trunk native vlan tag - switchport mode trunk - switchport -! -interface Port-Channel117 - description interface_with_sflow_ingress_egress_enabled - no switchport - sflow enable - sflow egress enable -! -interface Port-Channel118 - description interface_with_sflow_ingress_egress_unmodified_enabled - no switchport - sflow enable - sflow egress unmodified enable -! -interface Port-Channel119 - description interface_with_sflow_ingress_egress_disabled - no switchport - no sflow enable - no sflow egress enable -! -interface Port-Channel120 - description interface_with_sflow_ingress_egress_unmodified_disabled - no switchport - no sflow enable - no sflow egress unmodified enable -! -interface Port-Channel121 - description access_port_with_no_vlans - switchport mode access - switchport -! -interface Port-Channel122 - description trunk_port_with_no_vlans - switchport mode trunk - switchport -! -interface Port-Channel130 - description IP NAT Testing - switchport - ip nat destination static 1.0.0.1 2.0.0.1 - ip nat source static 3.0.0.1 4.0.0.1 - ip nat destination dynamic access-list ACL1 pool POOL1 - ip nat source dynamic access-list ACL2 pool POOL2 -! -interface Port-Channel131 - description dot1q-tunnel mode - switchport access vlan 115 - switchport mode dot1q-tunnel - switchport -! -interface Port-Channel131.1 - description Test_encapsulation_vlan1 - ! - encapsulation vlan - client dot1q outer 23 inner dot1q 45 network dot1ad outer 32 inner dot1ad 54 -! -interface Port-Channel131.2 - description Test_encapsulation_vlan2 - ! - encapsulation vlan - client dot1q 10 network dot1q outer 32 inner 54 -! -interface Port-Channel131.3 - description Test_encapsulation_vlan3 - ! - encapsulation vlan - client dot1ad 12 network dot1q 25 -! -interface Port-Channel131.4 - description Test_encapsulation_vlan4 - ! - encapsulation vlan - client dot1ad outer 35 inner dot1q 60 network dot1q outer 53 inner dot1ad 6 -! -interface Port-Channel131.5 - description Test_encapsulation_vlan5 - ! - encapsulation vlan - client dot1ad outer 35 inner 60 network dot1ad outer 52 inner 62 -! -interface Port-Channel131.6 - description Test_encapsulation_vlan6 - ! - encapsulation vlan - client dot1ad outer 35 inner 60 network client -! -interface Port-Channel131.7 - description Test_encapsulation_vlan7 - ! - encapsulation vlan - client untagged network dot1ad outer 35 inner 60 -! -interface Port-Channel131.8 - description Test_encapsulation_vlan8 - ! - encapsulation vlan - client untagged network dot1q outer 35 inner 60 -! -interface Port-Channel131.9 - description Test_encapsulation_vlan9 - ! - encapsulation vlan - client untagged network untagged -! -interface Port-Channel131.10 - description Test_encapsulation_vlan9 - ! - encapsulation vlan - client dot1q outer 14 inner 11 network client inner -! -interface Port-Channel132 - profile test-interface-profile - description Test_port-channel_interface-profile -! -interface Port-Channel133 - description Test_switchport_tap_tool - switchport tap native vlan 10 - switchport tap identity 3 - switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap mpls pop all - switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0010 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip - switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tool mpls pop all - switchport tool encapsulation vn-tag strip - switchport tool encapsulation dot1br strip - switchport tap allowed vlan 25 - switchport tool allowed vlan 23 - switchport tool identity qinq - switchport tool identity qinq source dzgre port inner policy - switchport tap truncation - switchport tool truncation 160 - switchport tap default group g1 group g2 group g3 - switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 - switchport tap default interface ethernet4 - switchport tap default interface port-channel10 - switchport tool group set group1 group2 group3 - switchport tool dot1q remove outer 1-2 - switchport tool dzgre preserve -! -interface Ethernet3 - description MLAG_PEER_DC1-LEAF1B_Ethernet3 - channel-group 3 mode active -! -interface Ethernet4 - description MLAG_PEER_DC1-LEAF1B_Ethernet4 - channel-group 3 mode active -! -interface Ethernet5 - description DC1-AGG01_Ethernet1 - channel-group 5 mode active - transceiver media override 100gbase-ar4 -! -interface Ethernet8 - description MLAG_PEER_DC1-LEAF1B_Ethernet8 - channel-group 8 mode active -! -interface Ethernet10/1 - description LAG Member - channel-group 101 mode active -! -interface Ethernet10/2 - description LAG Member - channel-group 102 mode active -! -interface Ethernet10/3 - description LAG Member - channel-group 103 mode active -! -interface Ethernet10/4 - description LAG Member LACP fallback - switchport trunk allowed vlan 100 - switchport mode trunk - switchport - channel-group 104 mode active - spanning-tree portfast -! -interface Ethernet10/10 - description isis_port_channel_member - channel-group 110 mode active -! -interface Ethernet11/1 - description LAG Member with error_correction - error-correction encoding fire-code - error-correction encoding reed-solomon - channel-group 111 mode active -! -interface Ethernet11/2 - description LAG Member LACP fallback LLDP ZTP VLAN - switchport trunk allowed vlan 112 - switchport mode trunk - switchport - channel-group 112 mode active - lldp tlv transmit ztp vlan 112 - spanning-tree portfast -! -interface Ethernet15 - description DC1-AGG03_Ethernet1 - channel-group 15 mode active - lacp timer fast - lacp timer multiplier 30 -! -interface Ethernet16 - description DC1-AGG04_Ethernet1 - channel-group 16 mode active - lacp timer normal -! -interface Ethernet17 - description LAG Member - channel-group 17 mode active -! -interface Ethernet18 - description LAG Member - channel-group 109 mode active -! -interface Ethernet50 - description SRV-POD03_Eth1 - channel-group 5 mode active - no lldp transmit - no lldp receive -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ethernet-interfaces.yml similarity index 100% rename from ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml rename to ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ethernet-interfaces.yml diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/port-channel-interfaces.yml similarity index 100% rename from ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml rename to ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/port-channel-interfaces.yml diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.yml index 18fc19240c4..a1a5153b184 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.yml @@ -20,7 +20,6 @@ test_hosts: eos_cli_config_gen_configuration.enable: eos_cli_config_gen_documentation.enable: errdisable: - ethernet-interfaces: event-handlers: event-monitor: flow-tracking: @@ -101,7 +100,6 @@ test_hosts: poe: policy-maps: policy-maps-pbr: - port-channel-interfaces: prefix-lists: prompt: prompt-2: From 738913c09a3425e384cf382394ef60482cd579f6 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 18 Nov 2024 12:12:56 +0530 Subject: [PATCH 15/32] Fix the config ordering --- .../documentation/devices/host1.md | 14 +++++++------- .../eos_cli_config_gen/intended/configs/host1.cfg | 14 +++++++------- .../j2templates/eos/ethernet-interfaces.j2 | 6 +++++- .../j2templates/eos/port-channel-interfaces.j2 | 6 +++++- 4 files changed, 24 insertions(+), 16 deletions(-) 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 049c6dc8f6a..6d94cda1440 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 @@ -3371,13 +3371,13 @@ interface Ethernet82 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap mpls pop all + switchport tap encapsulation gre protocol 0x0001 strip + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -4082,13 +4082,13 @@ interface Port-Channel133 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap mpls pop all + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x0010 strip switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0010 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip 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 c91842b7a3c..831d40afd49 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 @@ -1353,13 +1353,13 @@ interface Port-Channel133 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap mpls pop all + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x0010 strip switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0010 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -2271,13 +2271,13 @@ interface Ethernet82 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap mpls pop all + switchport tap encapsulation gre protocol 0x0001 strip + switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip + switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip - switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip 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 b486fa6d627..34fe0a1c0df 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 @@ -927,7 +927,11 @@ interface {{ ethernet_interface.name }} switchport tap encapsulation vxlan strip {% endif %} {% if ethernet_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} -{% for gre_strip_config in ethernet_interface.switchport.tap.encapsulation.gre %} +{% set with_protocol_only = ethernet_interface.switchport.tap.encapsulation.gre | selectattr('protocol', 'arista.avd.defined') | rejectattr('destination', 'arista.avd.defined') | rejectattr('source', 'arista.avd.defined') | arista.avd.natural_sort('protocol') %} +{% set with_destination = ethernet_interface.switchport.tap.encapsulation.gre | selectattr('destination', 'arista.avd.defined') | arista.avd.natural_sort('destination') %} +{% set with_strip_only = ethernet_interface.switchport.tap.encapsulation.gre | selectattr('strip', 'arista.avd.defined') | rejectattr('destination', 'arista.avd.defined') | rejectattr('source', 'arista.avd.defined') | rejectattr('protocol', 'arista.avd.defined') | arista.avd.natural_sort %} +{% set sorted_gre_strip = with_protocol_only | list + with_strip_only | list + with_destination | list %} +{% for gre_strip_config in sorted_gre_strip %} {% if gre_strip_config.strip is arista.avd.defined(true) %} {% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} {% if gre_strip_config.destination is arista.avd.defined %} 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 be227db983b..38222cb5245 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 @@ -746,7 +746,11 @@ interface {{ port_channel_interface.name }} switchport tap encapsulation vxlan strip {% endif %} {% if port_channel_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} -{% for gre_strip_config in port_channel_interface.switchport.tap.encapsulation.gre %} +{% set with_protocol_only = port_channel_interface.switchport.tap.encapsulation.gre | selectattr('protocol', 'arista.avd.defined') | rejectattr('destination', 'arista.avd.defined') | rejectattr('source', 'arista.avd.defined') | arista.avd.natural_sort('protocol') %} +{% set with_destination = port_channel_interface.switchport.tap.encapsulation.gre | selectattr('destination', 'arista.avd.defined') | arista.avd.natural_sort('destination') %} +{% set with_strip_only = port_channel_interface.switchport.tap.encapsulation.gre | selectattr('strip', 'arista.avd.defined') | rejectattr('destination', 'arista.avd.defined') | rejectattr('source', 'arista.avd.defined') | rejectattr('protocol', 'arista.avd.defined') | arista.avd.natural_sort %} +{% set sorted_gre_strip = with_protocol_only | list + with_strip_only | list + with_destination | list %} +{% for gre_strip_config in sorted_gre_strip %} {% if gre_strip_config.strip is arista.avd.defined(true) %} {% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} {% if gre_strip_config.destination is arista.avd.defined %} From 82c06f699b0da778fdf64b69d6ab58377f3960a7 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 18 Nov 2024 12:15:53 +0530 Subject: [PATCH 16/32] Remove from tap.amc_address.dest --- .../eos_cli_config_gen/docs/tables/ethernet-interfaces.md | 4 ++-- .../eos_cli_config_gen/docs/tables/port-channel-interfaces.md | 4 ++-- .../_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml | 2 -- .../schema/schema_fragments/ethernet_interfaces.schema.yml | 1 - .../schema_fragments/port_channel_interfaces.schema.yml | 1 - 5 files changed, 4 insertions(+), 8 deletions(-) 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 0c77af2d8d5..d9f954bd689 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 @@ -518,7 +518,7 @@ | [          size](## "ethernet_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "ethernet_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | | [          src](## "ethernet_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | - | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | + | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | List, items: Dictionary | | | | | @@ -1648,7 +1648,7 @@ src: # MAC address for the destination. - dest: + dest: encapsulation: # Strip VXLAN encapsulation header. 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 d82e902c785..0e21b4b4ee9 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 @@ -343,7 +343,7 @@ | [          size](## "port_channel_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "port_channel_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | | [          src](## "port_channel_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | - | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | + | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | List, items: Dictionary | | | | | @@ -1133,7 +1133,7 @@ src: # MAC address for the destination. - dest: + dest: encapsulation: # Strip VXLAN encapsulation header. 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 04beef94aa9..5f20304f841 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 @@ -4204,7 +4204,6 @@ keys: description: MAC address for the source. dest: type: str - required: true pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ description: MAC address for the destination. encapsulation: @@ -10870,7 +10869,6 @@ keys: description: MAC address for the source. dest: type: str - required: true pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ description: MAC address for the destination. encapsulation: 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 d42f665b011..765bb87a569 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 @@ -2024,7 +2024,6 @@ keys: description: MAC address for the source. dest: type: str - required: true pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" description: MAC address for the destination. encapsulation: 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 e636deb8b0c..7f2c90e18d0 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 @@ -1433,7 +1433,6 @@ keys: description: MAC address for the source. dest: type: str - required: true pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" description: MAC address for the destination. encapsulation: From 922ad6d6925e503d5b3a86a09f7859d19bd2939a Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Thu, 21 Nov 2024 16:19:15 +0530 Subject: [PATCH 17/32] Refactor model for switchport.tap.encapsulation.gre --- .../documentation/devices/host1.md | 5 +- .../intended/configs/host1.cfg | 5 +- .../host_vars/host1/ethernet-interfaces.yml | 44 ++-- .../host1/port-channel-interfaces.yml | 42 ++-- .../docs/tables/ethernet-interfaces.md | 67 ++++-- .../docs/tables/port-channel-interfaces.md | 67 ++++-- .../j2templates/eos/ethernet-interfaces.j2 | 54 +++-- .../eos/port-channel-interfaces.j2 | 54 +++-- .../schema/eos_cli_config_gen.schema.yml | 218 ++++++++++++------ .../ethernet_interfaces.schema.yml | 101 +++++--- .../port_channel_interfaces.schema.yml | 101 +++++--- 11 files changed, 490 insertions(+), 268 deletions(-) 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 87b92a799b4..c16910a34e3 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 @@ -3517,9 +3517,9 @@ interface Ethernet82 switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip @@ -3543,6 +3543,7 @@ interface Ethernet83 switchport tap identity 5 switchport tap mac-address dest 01:00:00:00:00:00 switchport tap encapsulation vxlan strip + switchport tap encapsulation gre strip switchport tool identity dot1q switchport tool identity qinq source dzgre policy inner port switchport tap truncation @@ -4277,10 +4278,10 @@ interface Port-Channel133 switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre protocol 0x0010 strip - switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0002 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip 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 3381f9526c1..8d2b2944b3b 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 @@ -1452,10 +1452,10 @@ interface Port-Channel133 switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre protocol 0x0010 strip - switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0002 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -2408,9 +2408,9 @@ interface Ethernet82 switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip @@ -2434,6 +2434,7 @@ interface Ethernet83 switchport tap identity 5 switchport tap mac-address dest 01:00:00:00:00:00 switchport tap encapsulation vxlan strip + switchport tap encapsulation gre strip switchport tool identity dot1q switchport tool identity qinq source dzgre policy inner port switchport tap truncation 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 21dc9a02b80..7a5223b64ff 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 @@ -1792,27 +1792,27 @@ ethernet_interfaces: src: 01:23:45:67:89:ab encapsulation: gre: - - strip: true - - strip: true - destination: 1.1.1.1 - source: 1.1.1.2 - protocol: "0x0000" - - strip: true - protocol: "0x0001" - - strip: true - destination: 2.1.1.2 - protocol: "0x0010" - - strip: false - - strip: true - destination: 2.1.1.3 - source: 2.1.1.4 - - strip: true - protocol: "0x0002" - feature_header_length: 3 - - strip: true - protocol: "0x0003" - feature_header_length: 2 - re_encapsulation_ethernet_header: true + strip: true + destinations: + - destination: 1.1.1.1 + source: 1.1.1.2 + protocols: + - protocol: "0x0000" + - destination: 2.1.1.2 + protocols: + - protocol: "0x0010" + - protocol: "0x0011" + feature_header_length: 2 + re_encapsulation_ethernet_header: true + - destination: 2.1.1.3 + source: 2.1.1.4 + protocols: + - protocol: "0x0001" + - protocol: "0x0002" + feature_header_length: 3 + - protocol: "0x0003" + feature_header_length: 2 + re_encapsulation_ethernet_header: true tool: mpls_pop_all: true encapsulation: @@ -1841,6 +1841,8 @@ ethernet_interfaces: dest: 01:00:00:00:00:00 encapsulation: vxlan_strip: true + gre: + strip: true truncation: enabled: true 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 1e130c65014..3351bf5fd0c 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 @@ -948,27 +948,27 @@ port_channel_interfaces: src: 01:23:45:67:89:ab encapsulation: gre: - - strip: true - - strip: true - destination: 1.1.1.1 - source: 1.1.1.2 - protocol: "0x0000" - - strip: true - protocol: "0x0010" - - strip: true - destination: 2.1.1.2 - protocol: "0x0001" - - strip: false - - strip: true - destination: 1.1.1.3 - source: 1.1.1.4 - - strip: true - protocol: "0x0002" - feature_header_length: 3 - - strip: true - protocol: "0x0003" - feature_header_length: 2 - re_encapsulation_ethernet_header: true + strip: true + destinations: + - destination: 1.1.1.1 + source: 1.1.1.2 + protocols: + - protocol: "0x0000" + - destination: 2.1.1.2 + protocols: + - protocol: "0x0001" + - protocol: "0x0002" + feature_header_length: 2 + re_encapsulation_ethernet_header: true + - destination: 1.1.1.3 + source: 1.1.1.4 + protocols: + - protocol: "0x0010" + - protocol: "0x0002" + feature_header_length: 3 + - protocol: "0x0003" + feature_header_length: 2 + re_encapsulation_ethernet_header: true tool: mpls_pop_all: true encapsulation: 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 c29d7b44afb..b7b7369abbd 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 @@ -570,13 +570,19 @@ | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | - | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | List, items: Dictionary | | | | | - | [            - strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].strip") | Boolean | Required | | | Strip GRE encapsulation header. | - | [              destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].destination") | String | | | | Destination IP address of tunnel packets. | - | [              source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | - | [              protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. It should be unique. | - | [              feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | - | [              re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | + | [            strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. | + | [            protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | + | [              - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [                re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [            destinations](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | + | [              - destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | + | [                source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | + | [                protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | + | [                  - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                    feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [                    re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | @@ -1829,26 +1835,43 @@ vxlan_strip: gre: - # Strip GRE encapsulation header. - - strip: + # Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. + strip: - # Destination IP address of tunnel packets. - destination: + # Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. + protocols: - # Source IP address of tunnel packets. Applied only when destination is defined. - source: + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF. + - protocol: - # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF. It should be unique. - protocol: + # Feature header length in bytes. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + feature_header_length: - # Feature header length in bytes. - # This setting does not reflect in the EOS running-config for protocol 0x0000. - feature_header_length: + # Extra ethernet header to prepend to the terminated packet. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + re_encapsulation_ethernet_header: + destinations: - # Extra ethernet header to prepend to the terminated packet. - # This setting does not reflect in the EOS running-config for protocol 0x0000. - re_encapsulation_ethernet_header: + # Destination IP address of tunnel packets. + - destination: + + # Source IP address of tunnel packets. Applied only when destination is defined. + source: + protocols: + + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF. + - protocol: + + # Feature header length in bytes. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + feature_header_length: + + # Extra ethernet header to prepend to the terminated packet. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + re_encapsulation_ethernet_header: # In tool mode, the interface operates as a tool port. # Tool ports replicate traffic received by tap ports. 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 5b3fe9a783e..fece74f4613 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 @@ -395,13 +395,19 @@ | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | - | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | List, items: Dictionary | | | | | - | [            - strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].strip") | Boolean | Required | | | Strip GRE encapsulation header. | - | [              destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].destination") | String | | | | Destination IP address of tunnel packets. | - | [              source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | - | [              protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. It should be unique. | - | [              feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | - | [              re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | + | [            strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. | + | [            protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | + | [              - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [                re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [            destinations](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | + | [              - destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | + | [                source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | + | [                protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | + | [                  - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                    feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [                    re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | @@ -1314,26 +1320,43 @@ vxlan_strip: gre: - # Strip GRE encapsulation header. - - strip: + # Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. + strip: - # Destination IP address of tunnel packets. - destination: + # Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. + protocols: - # Source IP address of tunnel packets. Applied only when destination is defined. - source: + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF. + - protocol: - # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF. It should be unique. - protocol: + # Feature header length in bytes. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + feature_header_length: - # Feature header length in bytes. - # This setting does not reflect in the EOS running-config for protocol 0x0000. - feature_header_length: + # Extra ethernet header to prepend to the terminated packet. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + re_encapsulation_ethernet_header: + destinations: - # Extra ethernet header to prepend to the terminated packet. - # This setting does not reflect in the EOS running-config for protocol 0x0000. - re_encapsulation_ethernet_header: + # Destination IP address of tunnel packets. + - destination: + + # Source IP address of tunnel packets. Applied only when destination is defined. + source: + protocols: + + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF. + - protocol: + + # Feature header length in bytes. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + feature_header_length: + + # Extra ethernet header to prepend to the terminated packet. + # This setting does not reflect in the EOS running-config for protocol 0x0000. + re_encapsulation_ethernet_header: # In tool mode, the interface operates as a tool port. # Tool ports replicate traffic received by tap ports. 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 5eea4607c1a..3823aece0ea 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 @@ -1014,32 +1014,42 @@ interface {{ ethernet_interface.name }} {% elif ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} switchport tap encapsulation vxlan strip {% endif %} -{% if ethernet_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} -{% set with_protocol_only = ethernet_interface.switchport.tap.encapsulation.gre | selectattr('protocol', 'arista.avd.defined') | rejectattr('destination', 'arista.avd.defined') | rejectattr('source', 'arista.avd.defined') | arista.avd.natural_sort('protocol') %} -{% set with_destination = ethernet_interface.switchport.tap.encapsulation.gre | selectattr('destination', 'arista.avd.defined') | arista.avd.natural_sort('destination') %} -{% set with_strip_only = ethernet_interface.switchport.tap.encapsulation.gre | selectattr('strip', 'arista.avd.defined') | rejectattr('destination', 'arista.avd.defined') | rejectattr('source', 'arista.avd.defined') | rejectattr('protocol', 'arista.avd.defined') | arista.avd.natural_sort %} -{% set sorted_gre_strip = with_protocol_only | list + with_strip_only | list + with_destination | list %} -{% for gre_strip_config in sorted_gre_strip %} -{% if gre_strip_config.strip is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} -{% if gre_strip_config.destination is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} -{% if gre_strip_config.source is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} -{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.strip is arista.avd.defined(true) %} +{% for protocol in ethernet_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} +{% if protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length ~ " " ~ "strip" %} +{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} -{% if gre_strip_config.protocol is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} -{% if gre_strip_config.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} +{% else %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% endif %} + {{ tap_encapsulation_cli }} +{% endfor %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.protocols is not arista.avd.defined and + ethernet_interface.switchport.tap.encapsulation.gre.destinations is not arista.avd.defined %} + switchport tap encapsulation gre strip +{% endif %} +{% for destination in ethernet_interface.switchport.tap.encapsulation.gre.destinations | arista.avd.natural_sort('destination') %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ destination.destination %} +{% if destination.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ destination.source %} +{% endif %} +{% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} +{% if destination_protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length ~ " " ~ "strip" %} +{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} +{% else %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} {% endif %} + {{ tap_encapsulation_cli }} +{% endfor %} +{% if destination.protocols is not arista.avd.defined %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if gre_strip_config.protocol is arista.avd.defined and - gre_strip_config.feature_header_length is arista.avd.defined and - gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} {{ tap_encapsulation_cli }} {% endif %} {% endfor %} 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 0eaf4462030..049b5472c3a 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 @@ -831,32 +831,42 @@ interface {{ port_channel_interface.name }} {% elif port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} switchport tap encapsulation vxlan strip {% endif %} -{% if port_channel_interface.switchport.tap.encapsulation.gre is arista.avd.defined %} -{% set with_protocol_only = port_channel_interface.switchport.tap.encapsulation.gre | selectattr('protocol', 'arista.avd.defined') | rejectattr('destination', 'arista.avd.defined') | rejectattr('source', 'arista.avd.defined') | arista.avd.natural_sort('protocol') %} -{% set with_destination = port_channel_interface.switchport.tap.encapsulation.gre | selectattr('destination', 'arista.avd.defined') | arista.avd.natural_sort('destination') %} -{% set with_strip_only = port_channel_interface.switchport.tap.encapsulation.gre | selectattr('strip', 'arista.avd.defined') | rejectattr('destination', 'arista.avd.defined') | rejectattr('source', 'arista.avd.defined') | rejectattr('protocol', 'arista.avd.defined') | arista.avd.natural_sort %} -{% set sorted_gre_strip = with_protocol_only | list + with_strip_only | list + with_destination | list %} -{% for gre_strip_config in sorted_gre_strip %} -{% if gre_strip_config.strip is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre" %} -{% if gre_strip_config.destination is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " destination " ~ gre_strip_config.destination %} -{% if gre_strip_config.source is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ gre_strip_config.source %} -{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.strip is arista.avd.defined(true) %} +{% for protocol in port_channel_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} +{% if protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length ~ " " ~ "strip" %} +{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} -{% if gre_strip_config.protocol is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ gre_strip_config.protocol %} -{% if gre_strip_config.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ gre_strip_config.feature_header_length %} +{% else %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% endif %} + {{ tap_encapsulation_cli }} +{% endfor %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.protocols is not arista.avd.defined and + port_channel_interface.switchport.tap.encapsulation.gre.destinations is not arista.avd.defined %} + switchport tap encapsulation gre strip +{% endif %} +{% for destination in port_channel_interface.switchport.tap.encapsulation.gre.destinations | arista.avd.natural_sort('destination') %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ destination.destination %} +{% if destination.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ destination.source %} +{% endif %} +{% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} +{% if destination_protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length ~ " " ~ "strip" %} +{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} +{% else %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} {% endif %} + {{ tap_encapsulation_cli }} +{% endfor %} +{% if destination.protocols is not arista.avd.defined %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if gre_strip_config.protocol is arista.avd.defined and - gre_strip_config.feature_header_length is arista.avd.defined and - gre_strip_config.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} {{ tap_encapsulation_cli }} {% endif %} {% endfor %} 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 bc818ce1b23..8d2d50a9d85 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 @@ -4233,43 +4233,84 @@ keys: `mpls_pop_all` takes precedence.' gre: - type: list - items: - type: dict - keys: - strip: - type: bool - required: true - description: Strip GRE encapsulation header. - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. Applied - only when destination is defined. - type: str - protocol: - type: str - description: 'Protocol type in GRE header. + type: dict + keys: + strip: + type: bool + description: Strip GRE encapsulation header. This key shoulde + be `true` to generate GRE encapsulation config. + protocols: + type: list + primary_key: protocol + description: Protocols for all destinations; destination-specific + protocols should be set under the `destinations[].protocols` + key. + items: + type: dict + keys: + protocol: + type: str + description: 'Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. It should be unique.' - feature_header_length: - description: 'Feature header length in bytes. + Protocol range: 0x0000-0xFFFF.' + feature_header_length: + description: 'Feature header length in bytes. - This setting does not reflect in the EOS running-config - for protocol 0x0000.' - type: int - convert_types: - - str - min: 1 - max: 16 - re_encapsulation_ethernet_header: - type: bool - description: 'Extra ethernet header to prepend to the - terminated packet. + This setting does not reflect in the EOS running-config + for protocol 0x0000.' + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: 'Extra ethernet header to prepend to + the terminated packet. - This setting does not reflect in the EOS running-config - for protocol 0x0000.' + This setting does not reflect in the EOS running-config + for protocol 0x0000.' + destinations: + type: list + primary_key: destination + items: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + Applied only when destination is defined. + type: str + protocols: + type: list + primary_key: protocol + items: + type: dict + keys: + protocol: + type: str + description: 'Protocol type in GRE header. + + Protocol range: 0x0000-0xFFFF.' + feature_header_length: + description: 'Feature header length in bytes. + + This setting does not reflect in the EOS running-config + for protocol 0x0000.' + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: 'Extra ethernet header to prepend + to the terminated packet. + + This setting does not reflect in the EOS running-config + for protocol 0x0000.' tool: description: 'In tool mode, the interface operates as a tool port. @@ -10964,43 +11005,84 @@ keys: `mpls_pop_all` takes precedence.' gre: - type: list - items: - type: dict - keys: - strip: - type: bool - required: true - description: Strip GRE encapsulation header. - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. Applied - only when destination is defined. - type: str - protocol: - type: str - description: 'Protocol type in GRE header. + type: dict + keys: + strip: + type: bool + description: Strip GRE encapsulation header. This key shoulde + be `true` to generate GRE encapsulation config. + protocols: + type: list + primary_key: protocol + description: Protocols for all destinations; destination-specific + protocols should be set under the `destinations[].protocols` + key. + items: + type: dict + keys: + protocol: + type: str + description: 'Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. It should be unique.' - feature_header_length: - description: 'Feature header length in bytes. + Protocol range: 0x0000-0xFFFF.' + feature_header_length: + description: 'Feature header length in bytes. - This setting does not reflect in the EOS running-config - for protocol 0x0000.' - type: int - convert_types: - - str - min: 1 - max: 16 - re_encapsulation_ethernet_header: - type: bool - description: 'Extra ethernet header to prepend to the - terminated packet. + This setting does not reflect in the EOS running-config + for protocol 0x0000.' + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: 'Extra ethernet header to prepend to + the terminated packet. - This setting does not reflect in the EOS running-config - for protocol 0x0000.' + This setting does not reflect in the EOS running-config + for protocol 0x0000.' + destinations: + type: list + primary_key: destination + items: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + Applied only when destination is defined. + type: str + protocols: + type: list + primary_key: protocol + items: + type: dict + keys: + protocol: + type: str + description: 'Protocol type in GRE header. + + Protocol range: 0x0000-0xFFFF.' + feature_header_length: + description: 'Feature header length in bytes. + + This setting does not reflect in the EOS running-config + for protocol 0x0000.' + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: 'Extra ethernet header to prepend + to the terminated packet. + + This setting does not reflect in the EOS running-config + for protocol 0x0000.' tool: description: 'In tool mode, the interface operates as a tool port. 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 7006adbd850..9bb51df5b11 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 @@ -2049,39 +2049,74 @@ keys: `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive. `mpls_pop_all` takes precedence. gre: - type: list - items: - type: dict - keys: - strip: - type: bool - required: true - description: Strip GRE encapsulation header. - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. Applied only when destination is defined. - type: str - protocol: - type: str - description: |- - Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. It should be unique. - feature_header_length: - description: |- - Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol 0x0000. - type: int - convert_types: - - str - min: 1 - max: 16 - re_encapsulation_ethernet_header: - type: bool - description: |- - Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS running-config for protocol 0x0000. + type: dict + keys: + strip: + type: bool + description: Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. + protocols: + type: list + primary_key: protocol + description: Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. + items: + type: dict + keys: + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + feature_header_length: + description: |- + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol 0x0000. + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: |- + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS running-config for protocol 0x0000. + destinations: + type: list + primary_key: destination + items: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. Applied only when destination is defined. + type: str + protocols: + type: list + primary_key: protocol + items: + type: dict + keys: + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + feature_header_length: + description: |- + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol 0x0000. + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: |- + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS running-config for protocol 0x0000. tool: description: |- In tool mode, the interface operates as a tool port. 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 80b50fbc7f0..07efa17e287 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 @@ -1458,39 +1458,74 @@ keys: `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive. `mpls_pop_all` takes precedence. gre: - type: list - items: - type: dict - keys: - strip: - type: bool - required: true - description: Strip GRE encapsulation header. - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. Applied only when destination is defined. - type: str - protocol: - type: str - description: |- - Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. It should be unique. - feature_header_length: - description: |- - Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol 0x0000. - type: int - convert_types: - - str - min: 1 - max: 16 - re_encapsulation_ethernet_header: - type: bool - description: |- - Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS running-config for protocol 0x0000. + type: dict + keys: + strip: + type: bool + description: Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. + protocols: + type: list + primary_key: protocol + description: Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. + items: + type: dict + keys: + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + feature_header_length: + description: |- + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol 0x0000. + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: |- + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS running-config for protocol 0x0000. + destinations: + type: list + primary_key: destination + items: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. Applied only when destination is defined. + type: str + protocols: + type: list + primary_key: protocol + items: + type: dict + keys: + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + feature_header_length: + description: |- + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol 0x0000. + type: int + convert_types: + - str + min: 1 + max: 16 + re_encapsulation_ethernet_header: + type: bool + description: |- + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS running-config for protocol 0x0000. tool: description: |- In tool mode, the interface operates as a tool port. From 570a70c7ad564af3d27d49d9c4bc87c7fd93bbf0 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Fri, 22 Nov 2024 12:45:10 +0530 Subject: [PATCH 18/32] Fix reencapsulation ethernet in code --- .../documentation/devices/host1.md | 2 ++ .../intended/configs/host1.cfg | 2 ++ .../host_vars/host1/ethernet-interfaces.yml | 4 ++++ .../j2templates/eos/ethernet-interfaces.j2 | 22 +++++++++---------- .../eos/port-channel-interfaces.j2 | 22 +++++++++---------- 5 files changed, 28 insertions(+), 24 deletions(-) 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 c16910a34e3..848ca1f8a81 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 @@ -3517,9 +3517,11 @@ interface Ethernet82 switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x0004 strip re-encapsulation ethernet switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0012 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip 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 8d2b2944b3b..d35c7d4d2f9 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 @@ -2408,9 +2408,11 @@ interface Ethernet82 switchport tap encapsulation gre protocol 0x0001 strip switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x0004 strip re-encapsulation ethernet switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0012 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip 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 7a5223b64ff..0a14378bcd5 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 @@ -1804,6 +1804,8 @@ ethernet_interfaces: - protocol: "0x0011" feature_header_length: 2 re_encapsulation_ethernet_header: true + - protocol: "0x0012" + re_encapsulation_ethernet_header: true - destination: 2.1.1.3 source: 2.1.1.4 protocols: @@ -1813,6 +1815,8 @@ ethernet_interfaces: - protocol: "0x0003" feature_header_length: 2 re_encapsulation_ethernet_header: true + - protocol: "0x0004" + re_encapsulation_ethernet_header: true tool: mpls_pop_all: true encapsulation: 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 3823aece0ea..942c187a94c 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 @@ -1018,12 +1018,11 @@ interface {{ ethernet_interface.name }} {% for protocol in ethernet_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} {% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} {% if protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length ~ " " ~ "strip" %} -{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} -{% else %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} {{ tap_encapsulation_cli }} {% endfor %} @@ -1039,12 +1038,11 @@ interface {{ ethernet_interface.name }} {% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} {% if destination_protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length ~ " " ~ "strip" %} -{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} -{% else %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} {{ tap_encapsulation_cli }} {% endfor %} 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 049b5472c3a..9e45966316c 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 @@ -835,12 +835,11 @@ interface {{ port_channel_interface.name }} {% for protocol in port_channel_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} {% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} {% if protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length ~ " " ~ "strip" %} -{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} -{% else %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} {{ tap_encapsulation_cli }} {% endfor %} @@ -856,12 +855,11 @@ interface {{ port_channel_interface.name }} {% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} {% if destination_protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length ~ " " ~ "strip" %} -{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} -{% else %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} {{ tap_encapsulation_cli }} {% endfor %} From f758c03e456f7a1a74e155c28d8ca25fcc1e7d21 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Fri, 22 Nov 2024 13:14:41 +0530 Subject: [PATCH 19/32] Fix the strip command --- .../documentation/devices/host1.md | 2 + .../intended/configs/host1.cfg | 2 + .../docs/tables/ethernet-interfaces.md | 4 +- .../docs/tables/port-channel-interfaces.md | 4 +- .../j2templates/eos/ethernet-interfaces.j2 | 57 +++++++++---------- .../eos/port-channel-interfaces.j2 | 57 +++++++++---------- .../schema/eos_cli_config_gen.schema.yml | 6 +- .../ethernet_interfaces.schema.yml | 2 +- .../port_channel_interfaces.schema.yml | 2 +- 9 files changed, 66 insertions(+), 70 deletions(-) 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 848ca1f8a81..fcb3477707c 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 @@ -3518,6 +3518,7 @@ interface Ethernet82 switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre protocol 0x0004 strip re-encapsulation ethernet + switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet @@ -4280,6 +4281,7 @@ interface Port-Channel133 switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre protocol 0x0010 strip + switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip 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 d35c7d4d2f9..9193cccd8c1 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 @@ -1452,6 +1452,7 @@ interface Port-Channel133 switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre protocol 0x0010 strip + switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip @@ -2409,6 +2410,7 @@ interface Ethernet82 switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre protocol 0x0004 strip re-encapsulation ethernet + switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet 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 b7b7369abbd..6e4a4979789 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 @@ -571,7 +571,7 @@ | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | - | [            strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. | + | [            strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header. | | [            protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | | [              - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | | [                feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | @@ -1835,7 +1835,7 @@ vxlan_strip: gre: - # Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. + # Strip GRE encapsulation header. strip: # Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. 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 fece74f4613..31ec8ede48a 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 @@ -396,7 +396,7 @@ | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | - | [            strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. | + | [            strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header. | | [            protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | | [              - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | | [                feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | @@ -1320,7 +1320,7 @@ vxlan_strip: gre: - # Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. + # Strip GRE encapsulation header. strip: # Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. 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 942c187a94c..d109ca343d0 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 @@ -1014,44 +1014,41 @@ interface {{ ethernet_interface.name }} {% elif ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} switchport tap encapsulation vxlan strip {% endif %} +{% for protocol in ethernet_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} +{% if protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} +{% endif %} + {{ tap_encapsulation_cli }} +{% endfor %} {% if ethernet_interface.switchport.tap.encapsulation.gre.strip is arista.avd.defined(true) %} -{% for protocol in ethernet_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} -{% if protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} + switchport tap encapsulation gre strip +{% endif %} +{% for destination in ethernet_interface.switchport.tap.encapsulation.gre.destinations | arista.avd.natural_sort('destination') %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ destination.destination %} +{% if destination.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ destination.source %} +{% endif %} +{% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} +{% if destination_protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} {% endif %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} {{ tap_encapsulation_cli }} {% endfor %} -{% if ethernet_interface.switchport.tap.encapsulation.gre.protocols is not arista.avd.defined and - ethernet_interface.switchport.tap.encapsulation.gre.destinations is not arista.avd.defined %} - switchport tap encapsulation gre strip -{% endif %} -{% for destination in ethernet_interface.switchport.tap.encapsulation.gre.destinations | arista.avd.natural_sort('destination') %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ destination.destination %} -{% if destination.source is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ destination.source %} -{% endif %} -{% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} -{% if destination_protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} -{% endif %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} - {{ tap_encapsulation_cli }} -{% endfor %} -{% if destination.protocols is not arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if destination.protocols is not arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} {{ tap_encapsulation_cli }} -{% endif %} -{% endfor %} -{% endif %} +{% endif %} +{% endfor %} {% if ethernet_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} switchport tool mpls pop all {% 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 9e45966316c..49dea96f3fa 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 @@ -831,44 +831,41 @@ interface {{ port_channel_interface.name }} {% elif port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} switchport tap encapsulation vxlan strip {% endif %} +{% for protocol in port_channel_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} +{% if protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} +{% endif %} + {{ tap_encapsulation_cli }} +{% endfor %} {% if port_channel_interface.switchport.tap.encapsulation.gre.strip is arista.avd.defined(true) %} -{% for protocol in port_channel_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} -{% if protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} + switchport tap encapsulation gre strip +{% endif %} +{% for destination in port_channel_interface.switchport.tap.encapsulation.gre.destinations | arista.avd.natural_sort('destination') %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ destination.destination %} +{% if destination.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ destination.source %} +{% endif %} +{% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} +{% if destination_protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} {% endif %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} {% endif %} {{ tap_encapsulation_cli }} {% endfor %} -{% if port_channel_interface.switchport.tap.encapsulation.gre.protocols is not arista.avd.defined and - port_channel_interface.switchport.tap.encapsulation.gre.destinations is not arista.avd.defined %} - switchport tap encapsulation gre strip -{% endif %} -{% for destination in port_channel_interface.switchport.tap.encapsulation.gre.destinations | arista.avd.natural_sort('destination') %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ destination.destination %} -{% if destination.source is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ destination.source %} -{% endif %} -{% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} -{% if destination_protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} -{% endif %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} - {{ tap_encapsulation_cli }} -{% endfor %} -{% if destination.protocols is not arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if destination.protocols is not arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} {{ tap_encapsulation_cli }} -{% endif %} -{% endfor %} -{% endif %} +{% endif %} +{% endfor %} {% if port_channel_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} switchport tool mpls pop all {% 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 8d2d50a9d85..6c3fab0f09a 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 @@ -4237,8 +4237,7 @@ keys: keys: strip: type: bool - description: Strip GRE encapsulation header. This key shoulde - be `true` to generate GRE encapsulation config. + description: Strip GRE encapsulation header. protocols: type: list primary_key: protocol @@ -11009,8 +11008,7 @@ keys: keys: strip: type: bool - description: Strip GRE encapsulation header. This key shoulde - be `true` to generate GRE encapsulation config. + description: Strip GRE encapsulation header. protocols: type: list primary_key: protocol 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 9bb51df5b11..d69379275fa 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 @@ -2053,7 +2053,7 @@ keys: keys: strip: type: bool - description: Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. + description: Strip GRE encapsulation header. protocols: type: list primary_key: protocol 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 07efa17e287..c6416cdfdc1 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 @@ -1462,7 +1462,7 @@ keys: keys: strip: type: bool - description: Strip GRE encapsulation header. This key shoulde be `true` to generate GRE encapsulation config. + description: Strip GRE encapsulation header. protocols: type: list primary_key: protocol From fde7e9e4eb1745b89a3360bea23f8f389763d627 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 25 Nov 2024 19:31:16 +0530 Subject: [PATCH 20/32] Add strip key to protocol as required --- .../documentation/devices/host1.md | 2 + .../intended/configs/host1.cfg | 2 + .../host_vars/host1/ethernet-interfaces.yml | 10 + .../host1/port-channel-interfaces.yml | 8 + .../docs/tables/ethernet-interfaces.md | 16 +- .../docs/tables/port-channel-interfaces.md | 16 +- .../j2templates/eos/ethernet-interfaces.j2 | 38 +-- .../eos/port-channel-interfaces.j2 | 38 +-- .../schema/eos_cli_config_gen.schema.yml | 257 ++---------------- .../ethernet_interfaces.schema.yml | 12 +- .../port_channel_interfaces.schema.yml | 226 +-------------- 11 files changed, 121 insertions(+), 504 deletions(-) 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 fcb3477707c..b4bb07ae253 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 @@ -3520,6 +3520,7 @@ interface Ethernet82 switchport tap encapsulation gre protocol 0x0004 strip re-encapsulation ethernet switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0012 strip re-encapsulation ethernet @@ -4283,6 +4284,7 @@ interface Port-Channel133 switchport tap encapsulation gre protocol 0x0010 strip switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0002 feature header length 2 strip re-encapsulation ethernet 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 9193cccd8c1..b101664653c 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 @@ -1454,6 +1454,7 @@ interface Port-Channel133 switchport tap encapsulation gre protocol 0x0010 strip switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0002 feature header length 2 strip re-encapsulation ethernet @@ -2412,6 +2413,7 @@ interface Ethernet82 switchport tap encapsulation gre protocol 0x0004 strip re-encapsulation ethernet switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0012 strip re-encapsulation ethernet 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 0a14378bcd5..aea36c0be78 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 @@ -1798,25 +1798,35 @@ ethernet_interfaces: source: 1.1.1.2 protocols: - protocol: "0x0000" + strip: true + strip: true - destination: 2.1.1.2 protocols: - protocol: "0x0010" + strip: true - protocol: "0x0011" feature_header_length: 2 re_encapsulation_ethernet_header: true + strip: true - protocol: "0x0012" re_encapsulation_ethernet_header: true + strip: true - destination: 2.1.1.3 source: 2.1.1.4 + strip: true protocols: - protocol: "0x0001" + strip: true - protocol: "0x0002" feature_header_length: 3 + strip: true - protocol: "0x0003" feature_header_length: 2 re_encapsulation_ethernet_header: true + strip: true - protocol: "0x0004" re_encapsulation_ethernet_header: true + strip: true tool: mpls_pop_all: true encapsulation: 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 3351bf5fd0c..f159c6be43f 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 @@ -954,21 +954,29 @@ port_channel_interfaces: source: 1.1.1.2 protocols: - protocol: "0x0000" + strip: true + strip: true - destination: 2.1.1.2 protocols: - protocol: "0x0001" + strip: true - protocol: "0x0002" feature_header_length: 2 re_encapsulation_ethernet_header: true + strip: true - destination: 1.1.1.3 source: 1.1.1.4 + strip: true protocols: - protocol: "0x0010" + strip: true - protocol: "0x0002" feature_header_length: 3 + strip: true - protocol: "0x0003" feature_header_length: 2 re_encapsulation_ethernet_header: true + strip: true tool: mpls_pop_all: true encapsulation: 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 6e4a4979789..1f0b03d25ed 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 @@ -571,16 +571,19 @@ | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | - | [            strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header. | + | [            strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header without protocols. | | [            protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | | [              - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | | [                feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [            destinations](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | | [              - destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | | [                source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | + | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for sepecific destination without protocol. | | [                protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | | [                  - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                    strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | | [                    feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                    re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | @@ -1835,7 +1838,7 @@ vxlan_strip: gre: - # Strip GRE encapsulation header. + # Strip GRE encapsulation header without protocols. strip: # Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. @@ -1845,6 +1848,9 @@ # Protocol range: 0x0000-0xFFFF. - protocol: + # This is a required key to strip GRE encapsulation header with protocols. + strip: + # Feature header length in bytes. # This setting does not reflect in the EOS running-config for protocol 0x0000. feature_header_length: @@ -1859,12 +1865,18 @@ # Source IP address of tunnel packets. Applied only when destination is defined. source: + + # Strip GRE encapsulation header for sepecific destination without protocol. + strip: protocols: # Protocol type in GRE header. # Protocol range: 0x0000-0xFFFF. - protocol: + # This is a required key to strip GRE encapsulation header for specific destination with protocols. + strip: + # Feature header length in bytes. # This setting does not reflect in the EOS running-config for protocol 0x0000. feature_header_length: 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 31ec8ede48a..88804d468e2 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 @@ -396,16 +396,19 @@ | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | - | [            strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header. | + | [            strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header without protocols. | | [            protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | | [              - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | | [                feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [            destinations](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | | [              - destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | | [                source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | + | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for sepecific destination without protocol. | | [                protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | | [                  - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                    strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | | [                    feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                    re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | @@ -1320,7 +1323,7 @@ vxlan_strip: gre: - # Strip GRE encapsulation header. + # Strip GRE encapsulation header without protocols. strip: # Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. @@ -1330,6 +1333,9 @@ # Protocol range: 0x0000-0xFFFF. - protocol: + # This is a required key to strip GRE encapsulation header with protocols. + strip: + # Feature header length in bytes. # This setting does not reflect in the EOS running-config for protocol 0x0000. feature_header_length: @@ -1344,12 +1350,18 @@ # Source IP address of tunnel packets. Applied only when destination is defined. source: + + # Strip GRE encapsulation header for sepecific destination without protocol. + strip: protocols: # Protocol type in GRE header. # Protocol range: 0x0000-0xFFFF. - protocol: + # This is a required key to strip GRE encapsulation header for specific destination with protocols. + strip: + # Feature header length in bytes. # This setting does not reflect in the EOS running-config for protocol 0x0000. feature_header_length: 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 d109ca343d0..88f6c38205e 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 @@ -1015,15 +1015,17 @@ interface {{ ethernet_interface.name }} switchport tap encapsulation vxlan strip {% endif %} {% for protocol in ethernet_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} -{% if protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} -{% endif %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} +{% if protocol.strip is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} +{% if protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} +{% endif %} {{ tap_encapsulation_cli }} +{% endif %} {% endfor %} {% if ethernet_interface.switchport.tap.encapsulation.gre.strip is arista.avd.defined(true) %} switchport tap encapsulation gre strip @@ -1034,17 +1036,19 @@ interface {{ ethernet_interface.name }} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ destination.source %} {% endif %} {% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} -{% if destination_protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} -{% endif %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} +{% if destination_protocol.strip is arista.avd.defined(true) %} +{% set tap_encapsulation_protocol_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} +{% if destination_protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_protocol_cli = tap_encapsulation_protocol_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_protocol_cli = tap_encapsulation_protocol_cli ~ " strip" %} +{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_protocol_cli = tap_encapsulation_protocol_cli ~ " re-encapsulation ethernet" %} +{% endif %} + {{ tap_encapsulation_protocol_cli }} {% endif %} - {{ tap_encapsulation_cli }} {% endfor %} -{% if destination.protocols is not arista.avd.defined %} +{% if destination.strip is arista.avd.defined(true) %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} {{ tap_encapsulation_cli }} {% 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 49dea96f3fa..edbc11727a7 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 @@ -832,15 +832,17 @@ interface {{ port_channel_interface.name }} switchport tap encapsulation vxlan strip {% endif %} {% for protocol in port_channel_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} -{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} -{% if protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} -{% endif %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} -{% endif %} +{% if protocol.strip is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre protocol " ~ protocol.protocol %} +{% if protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} +{% if protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} +{% endif %} {{ tap_encapsulation_cli }} +{% endif %} {% endfor %} {% if port_channel_interface.switchport.tap.encapsulation.gre.strip is arista.avd.defined(true) %} switchport tap encapsulation gre strip @@ -851,17 +853,19 @@ interface {{ port_channel_interface.name }} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ destination.source %} {% endif %} {% for destination_protocol in destination.protocols | arista.avd.natural_sort('protocol') %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} -{% if destination_protocol.feature_header_length is arista.avd.defined %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} -{% endif %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} -{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} -{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " re-encapsulation ethernet" %} +{% if destination_protocol.strip is arista.avd.defined(true) %} +{% set tap_encapsulation_protocol_cli = tap_encapsulation_cli ~ " protocol " ~ destination_protocol.protocol %} +{% if destination_protocol.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_protocol_cli = tap_encapsulation_protocol_cli ~ " feature header length " ~ destination_protocol.feature_header_length %} +{% endif %} +{% set tap_encapsulation_protocol_cli = tap_encapsulation_protocol_cli ~ " strip" %} +{% if destination_protocol.re_encapsulation_ethernet_header is arista.avd.defined(true) %} +{% set tap_encapsulation_protocol_cli = tap_encapsulation_protocol_cli ~ " re-encapsulation ethernet" %} +{% endif %} + {{ tap_encapsulation_protocol_cli }} {% endif %} - {{ tap_encapsulation_cli }} {% endfor %} -{% if destination.protocols is not arista.avd.defined %} +{% if destination.strip is arista.avd.defined(true) %} {% set tap_encapsulation_cli = tap_encapsulation_cli ~ " strip" %} {{ tap_encapsulation_cli }} {% 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 6c3fab0f09a..851d40b4a80 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 @@ -4237,7 +4237,7 @@ keys: keys: strip: type: bool - description: Strip GRE encapsulation header. + description: Strip GRE encapsulation header without protocols. protocols: type: list primary_key: protocol @@ -4252,6 +4252,10 @@ keys: description: 'Protocol type in GRE header. Protocol range: 0x0000-0xFFFF.' + strip: + type: bool + description: This is a required key to strip GRE encapsulation + header with protocols. feature_header_length: description: 'Feature header length in bytes. @@ -4282,6 +4286,10 @@ keys: description: Source IP address of tunnel packets. Applied only when destination is defined. type: str + strip: + type: bool + description: Strip GRE encapsulation header for sepecific + destination without protocol. protocols: type: list primary_key: protocol @@ -4293,6 +4301,11 @@ keys: description: 'Protocol type in GRE header. Protocol range: 0x0000-0xFFFF.' + strip: + type: bool + description: This is a required key to strip + GRE encapsulation header for specific destination + with protocols. feature_header_length: description: 'Feature header length in bytes. @@ -10909,249 +10922,11 @@ keys: convert_types: - str tap: - description: 'In tap mode, the interface operates as a tap port. - - Tap ports receive traffic for replication on one or more tool ports.' type: dict - keys: - allowed_vlan: - type: str - convert_types: - - int - description: VLAN ID or range(s) of VLAN IDs within range 1-4094. - default: - description: Default tap destination config. - type: dict - keys: - groups: - description: Tap group names for the interface. - type: list - items: - type: str - interfaces: - description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, - Recirc-Channel. - type: list - items: - type: str - nexthop_groups: - type: list - description: Default nexthop-group names. - items: - type: str - identity: - type: dict - keys: - id: - type: int - convert_types: - - str - min: 1 - max: 65535 - description: Tap port VLAN ID (1-4094) or DzGRE extended ID - (1-65535). - inner_vlan: - description: Tap port inner VLAN ID. Only applicable if `id` - is a VLAN ID (1-4094). - type: int - convert_types: - - str - min: 1 - max: 4094 - mpls_pop_all: - type: bool - description: Pop all MPLS labels. - native_vlan: - type: int - convert_types: - - str - min: 1 - max: 4094 - description: Native VLAN ID when interface is in tap mode. - truncation: - type: dict - keys: - enabled: - type: bool - required: true - size: - description: Ingress packet truncation size in bytes. - type: int - convert_types: - - str - min: 100 - max: 9236 - mac_address: - type: dict - keys: - src: - type: str - pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ - description: MAC address for the source. - dest: - type: str - pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ - description: MAC address for the destination. - encapsulation: - type: dict - keys: - vxlan_strip: - type: bool - description: 'Strip VXLAN encapsulation header. - - `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually - exclusive. - - `mpls_pop_all` takes precedence.' - gre: - type: dict - keys: - strip: - type: bool - description: Strip GRE encapsulation header. - protocols: - type: list - primary_key: protocol - description: Protocols for all destinations; destination-specific - protocols should be set under the `destinations[].protocols` - key. - items: - type: dict - keys: - protocol: - type: str - description: 'Protocol type in GRE header. - - Protocol range: 0x0000-0xFFFF.' - feature_header_length: - description: 'Feature header length in bytes. - - This setting does not reflect in the EOS running-config - for protocol 0x0000.' - type: int - convert_types: - - str - min: 1 - max: 16 - re_encapsulation_ethernet_header: - type: bool - description: 'Extra ethernet header to prepend to - the terminated packet. - - This setting does not reflect in the EOS running-config - for protocol 0x0000.' - destinations: - type: list - primary_key: destination - items: - type: dict - keys: - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. - Applied only when destination is defined. - type: str - protocols: - type: list - primary_key: protocol - items: - type: dict - keys: - protocol: - type: str - description: 'Protocol type in GRE header. - - Protocol range: 0x0000-0xFFFF.' - feature_header_length: - description: 'Feature header length in bytes. - - This setting does not reflect in the EOS running-config - for protocol 0x0000.' - type: int - convert_types: - - str - min: 1 - max: 16 - re_encapsulation_ethernet_header: - type: bool - description: 'Extra ethernet header to prepend - to the terminated packet. - - This setting does not reflect in the EOS running-config - for protocol 0x0000.' + $ref: eos_cli_config_gen#/keys/ethernet_interfaces/items/keys/switchport/keys/tap tool: - description: 'In tool mode, the interface operates as a tool port. - - Tool ports replicate traffic received by tap ports.' type: dict - keys: - mpls_pop_all: - type: bool - description: Pop all MPLS labels. - encapsulation: - type: dict - keys: - dot1br_strip: - type: bool - description: Remove a 802.1 BR tag in packet header. 'mpls_pop_all' - takes precedence over 'dot1br_strip' in EOS. - vn_tag_strip: - type: bool - description: Remove a VN-tag in packet header. 'mpls_pop_all' - takes precedence over 'vn_tag_strip' in EOS. - allowed_vlan: - type: str - convert_types: - - int - description: VLAN ID or range of VLAN IDs within range 1-4094. - identity: - type: dict - keys: - tag: - type: str - valid_values: - - dot1q - - qinq - dot1q_dzgre_source: - type: str - valid_values: - - policy - - port - qinq_dzgre_source: - type: str - valid_values: - - policy inner port - - port inner policy - truncation: - type: dict - keys: - enabled: - type: bool - required: true - size: - description: Egress packet truncation size in bytes. - type: int - convert_types: - - str - valid_values: - - 160 - groups: - type: list - items: - type: str - description: Tool groups for the interface. - dot1q_remove_outer_vlan_tag: - type: str - convert_types: - - int - description: 'Indices of vlan tags to be removed. - - Range: 1-2' - dzgre_preserve: - type: bool - description: Preserve the DzGRE header. + $ref: eos_cli_config_gen#/keys/ethernet_interfaces/items/keys/switchport/keys/tool 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 d69379275fa..6dabdaad6f1 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 @@ -2053,7 +2053,7 @@ keys: keys: strip: type: bool - description: Strip GRE encapsulation header. + description: Strip GRE encapsulation header without protocols. protocols: type: list primary_key: protocol @@ -2066,6 +2066,10 @@ keys: description: |- Protocol type in GRE header. Protocol range: 0x0000-0xFFFF. + strip: + type: bool + description: |- + This is a required key to strip GRE encapsulation header with protocols. feature_header_length: description: |- Feature header length in bytes. @@ -2092,6 +2096,9 @@ keys: source: description: Source IP address of tunnel packets. Applied only when destination is defined. type: str + strip: + type: bool + description: Strip GRE encapsulation header for sepecific destination without protocol. protocols: type: list primary_key: protocol @@ -2103,6 +2110,9 @@ keys: description: |- Protocol type in GRE header. Protocol range: 0x0000-0xFFFF. + strip: + type: bool + description: This is a required key to strip GRE encapsulation header for specific destination with protocols. feature_header_length: description: |- Feature header length in bytes. 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 c6416cdfdc1..93e8e7205a4 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 @@ -1368,233 +1368,11 @@ keys: convert_types: - str tap: - description: |- - In tap mode, the interface operates as a tap port. - Tap ports receive traffic for replication on one or more tool ports. type: dict - keys: - allowed_vlan: - type: str - convert_types: - - int - description: VLAN ID or range(s) of VLAN IDs within range 1-4094. - default: - description: Default tap destination config. - type: dict - keys: - groups: - description: Tap group names for the interface. - type: list - items: - type: str - interfaces: - description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. - type: list - items: - type: str - nexthop_groups: - type: list - description: Default nexthop-group names. - items: - type: str - identity: - type: dict - keys: - id: - type: int - convert_types: - - str - min: 1 - max: 65535 - description: Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535). - inner_vlan: - description: Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094). - type: int - convert_types: - - str - min: 1 - max: 4094 - mpls_pop_all: - type: bool - description: Pop all MPLS labels. - native_vlan: - type: int - convert_types: - - str - min: 1 - max: 4094 - description: Native VLAN ID when interface is in tap mode. - truncation: - type: dict - keys: - enabled: - type: bool - required: true - size: - description: Ingress packet truncation size in bytes. - type: int - convert_types: - - str - min: 100 - max: 9236 - mac_address: - type: dict - keys: - src: - type: str - pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" - description: MAC address for the source. - dest: - type: str - pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" - description: MAC address for the destination. - encapsulation: - type: dict - keys: - vxlan_strip: - type: bool - description: |- - Strip VXLAN encapsulation header. - `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive. - `mpls_pop_all` takes precedence. - gre: - type: dict - keys: - strip: - type: bool - description: Strip GRE encapsulation header. - protocols: - type: list - primary_key: protocol - description: Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. - items: - type: dict - keys: - protocol: - type: str - description: |- - Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. - feature_header_length: - description: |- - Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol 0x0000. - type: int - convert_types: - - str - min: 1 - max: 16 - re_encapsulation_ethernet_header: - type: bool - description: |- - Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS running-config for protocol 0x0000. - destinations: - type: list - primary_key: destination - items: - type: dict - keys: - destination: - description: Destination IP address of tunnel packets. - type: str - source: - description: Source IP address of tunnel packets. Applied only when destination is defined. - type: str - protocols: - type: list - primary_key: protocol - items: - type: dict - keys: - protocol: - type: str - description: |- - Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. - feature_header_length: - description: |- - Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol 0x0000. - type: int - convert_types: - - str - min: 1 - max: 16 - re_encapsulation_ethernet_header: - type: bool - description: |- - Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS running-config for protocol 0x0000. + $ref: "eos_cli_config_gen#/keys/ethernet_interfaces/items/keys/switchport/keys/tap" tool: - description: |- - In tool mode, the interface operates as a tool port. - Tool ports replicate traffic received by tap ports. type: dict - keys: - mpls_pop_all: - type: bool - description: Pop all MPLS labels. - encapsulation: - type: dict - keys: - dot1br_strip: - type: bool - description: Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. - vn_tag_strip: - type: bool - description: Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS. - allowed_vlan: - type: str - convert_types: - - int - description: VLAN ID or range of VLAN IDs within range 1-4094. - identity: - type: dict - keys: - tag: - type: str - valid_values: - - dot1q - - qinq - dot1q_dzgre_source: - type: str - valid_values: - - policy - - port - qinq_dzgre_source: - type: str - valid_values: - - policy inner port - - port inner policy - truncation: - type: dict - keys: - enabled: - type: bool - required: true - size: - description: Egress packet truncation size in bytes. - type: int - convert_types: - - str - valid_values: - - 160 - groups: - type: list - items: - type: str - description: Tool groups for the interface. - dot1q_remove_outer_vlan_tag: - type: str - convert_types: - - int - description: |- - Indices of vlan tags to be removed. - Range: 1-2 - dzgre_preserve: - type: bool - description: Preserve the DzGRE header. + $ref: "eos_cli_config_gen#/keys/ethernet_interfaces/items/keys/switchport/keys/tool" validate_state: type: bool description: Set to false to disable interface state and LLDP topology validation performed by the `eos_validate_state` role. From f7dc4f91a1532488dd747227eafb9b096e636ecb Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Tue, 26 Nov 2024 11:12:48 +0530 Subject: [PATCH 21/32] Changing src and dest key to source/destination --- .../inventory/host_vars/host1/ethernet-interfaces.yml | 6 +++--- .../inventory/host_vars/host1/port-channel-interfaces.yml | 6 +++--- .../eos_cli_config_gen/docs/tables/ethernet-interfaces.md | 8 ++++---- .../docs/tables/port-channel-interfaces.md | 8 ++++---- .../j2templates/eos/ethernet-interfaces.j2 | 8 ++++---- .../j2templates/eos/port-channel-interfaces.j2 | 8 ++++---- .../schema/eos_cli_config_gen.schema.yml | 4 ++-- .../schema_fragments/ethernet_interfaces.schema.yml | 4 ++-- 8 files changed, 26 insertions(+), 26 deletions(-) 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 aea36c0be78..ac425eb7988 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 @@ -1788,8 +1788,8 @@ ethernet_interfaces: enabled: true size: 150 mac_address: - dest: 01:00:00:00:00:00 - src: 01:23:45:67:89:ab + destination: 01:00:00:00:00:00 + source: 01:23:45:67:89:ab encapsulation: gre: strip: true @@ -1852,7 +1852,7 @@ ethernet_interfaces: identity: id: 5 mac_address: - dest: 01:00:00:00:00:00 + destination: 01:00:00:00:00:00 encapsulation: vxlan_strip: true gre: 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 f159c6be43f..7960065c39e 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 @@ -320,7 +320,7 @@ port_channel_interfaces: id: 3 inner_vlan: 10 mac_address: - dest: 01:00:00:00:00:00 + destination: 01:00:00:00:00:00 encapsulation: vxlan_strip: true truncation: @@ -944,8 +944,8 @@ port_channel_interfaces: truncation: enabled: true mac_address: - dest: 01:00:00:00:00:00 - src: 01:23:45:67:89:ab + destination: 01:00:00:00:00:00 + source: 01:23:45:67:89:ab encapsulation: gre: strip: true 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 1f0b03d25ed..b4e3503657a 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 @@ -566,8 +566,8 @@ | [          enabled](## "ethernet_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | | [          size](## "ethernet_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "ethernet_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | - | [          src](## "ethernet_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | - | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | + | [          source](## "ethernet_interfaces.[].switchport.tap.mac_address.source") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | + | [          destination](## "ethernet_interfaces.[].switchport.tap.mac_address.destination") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | @@ -1826,10 +1826,10 @@ mac_address: # MAC address for the source. - src: + source: # MAC address for the destination. - dest: + destination: encapsulation: # Strip VXLAN encapsulation header. 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 88804d468e2..e347fab9bfd 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 @@ -391,8 +391,8 @@ | [          enabled](## "port_channel_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | | [          size](## "port_channel_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "port_channel_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | - | [          src](## "port_channel_interfaces.[].switchport.tap.mac_address.src") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | - | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | + | [          source](## "port_channel_interfaces.[].switchport.tap.mac_address.source") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | + | [          destination](## "port_channel_interfaces.[].switchport.tap.mac_address.destination") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the destination. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | @@ -1311,10 +1311,10 @@ mac_address: # MAC address for the source. - src: + source: # MAC address for the destination. - dest: + destination: encapsulation: # Strip VXLAN encapsulation header. 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 88f6c38205e..66e06b2b7f1 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 @@ -1001,10 +1001,10 @@ interface {{ ethernet_interface.name }} {% endif %} {{ tap_identity_cli }} {% endif %} -{% if ethernet_interface.switchport.tap.mac_address.dest is arista.avd.defined %} -{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ ethernet_interface.switchport.tap.mac_address.dest %} -{% if ethernet_interface.switchport.tap.mac_address.src is arista.avd.defined %} -{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ ethernet_interface.switchport.tap.mac_address.src %} +{% if ethernet_interface.switchport.tap.mac_address.destination is arista.avd.defined %} +{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ ethernet_interface.switchport.tap.mac_address.destination %} +{% if ethernet_interface.switchport.tap.mac_address.source is arista.avd.defined %} +{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ ethernet_interface.switchport.tap.mac_address.source %} {% endif %} {{ tap_mac_address_cli }} {% 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 edbc11727a7..24963c29c49 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 @@ -818,10 +818,10 @@ interface {{ port_channel_interface.name }} {% endif %} {{ tap_identity_cli }} {% endif %} -{% if port_channel_interface.switchport.tap.mac_address.dest is arista.avd.defined %} -{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ port_channel_interface.switchport.tap.mac_address.dest %} -{% if port_channel_interface.switchport.tap.mac_address.src is arista.avd.defined %} -{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ port_channel_interface.switchport.tap.mac_address.src %} +{% if port_channel_interface.switchport.tap.mac_address.destination is arista.avd.defined %} +{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ port_channel_interface.switchport.tap.mac_address.destination %} +{% if port_channel_interface.switchport.tap.mac_address.source is arista.avd.defined %} +{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ port_channel_interface.switchport.tap.mac_address.source %} {% endif %} {{ tap_mac_address_cli }} {% 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 851d40b4a80..6d68c705658 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 @@ -4213,11 +4213,11 @@ keys: mac_address: type: dict keys: - src: + source: type: str pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ description: MAC address for the source. - dest: + destination: type: str pattern: ^([0-9a-f]{2}:){5}[0-9a-f]{2}$ description: MAC address for the destination. 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 6dabdaad6f1..68752e3b821 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 @@ -2031,11 +2031,11 @@ keys: mac_address: type: dict keys: - src: + source: type: str pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" description: MAC address for the source. - dest: + destination: type: str pattern: "^([0-9a-f]{2}:){5}[0-9a-f]{2}$" description: MAC address for the destination. From 772e6b5f4c6b65614bea4dd16cb2ced38bcce672 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Tue, 26 Nov 2024 15:35:11 +0530 Subject: [PATCH 22/32] Fixing review comments --- .../docs/tables/ethernet-interfaces.md | 20 +++++++++---------- .../docs/tables/port-channel-interfaces.md | 20 +++++++++---------- .../schema/eos_cli_config_gen.schema.yml | 11 +++++----- .../ethernet_interfaces.schema.yml | 8 +++----- 4 files changed, 29 insertions(+), 30 deletions(-) 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 b4e3503657a..d8879b9a8c1 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 @@ -563,7 +563,7 @@ | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tap.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        native_vlan](## "ethernet_interfaces.[].switchport.tap.native_vlan") | Integer | | | Min: 1
Max: 4094 | Native VLAN ID when interface is in tap mode. | | [        truncation](## "ethernet_interfaces.[].switchport.tap.truncation") | Dictionary | | | | | - | [          enabled](## "ethernet_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | + | [          enabled](## "ethernet_interfaces.[].switchport.tap.truncation.enabled") | Boolean | | | | | | [          size](## "ethernet_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "ethernet_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | | [          source](## "ethernet_interfaces.[].switchport.tap.mac_address.source") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | @@ -571,7 +571,7 @@ | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | - | [            strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header without protocols. | + | [            strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header for all GRE tunnels. | | [            protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | | [              - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | @@ -579,8 +579,8 @@ | [                re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [            destinations](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | | [              - destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | - | [                source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | - | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for sepecific destination without protocol. | + | [                source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | + | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for sepecific destination. | | [                protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | | [                  - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | | [                    strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | @@ -597,7 +597,7 @@ | [          dot1q_dzgre_source](## "ethernet_interfaces.[].switchport.tool.identity.dot1q_dzgre_source") | String | | | Valid Values:
- policy
- port | | | [          qinq_dzgre_source](## "ethernet_interfaces.[].switchport.tool.identity.qinq_dzgre_source") | String | | | Valid Values:
- policy inner port
- port inner policy | | | [        truncation](## "ethernet_interfaces.[].switchport.tool.truncation") | Dictionary | | | | | - | [          enabled](## "ethernet_interfaces.[].switchport.tool.truncation.enabled") | Boolean | Required | | | | + | [          enabled](## "ethernet_interfaces.[].switchport.tool.truncation.enabled") | Boolean | | | | | | [          size](## "ethernet_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | | [        groups](## "ethernet_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | | [          - <str>](## "ethernet_interfaces.[].switchport.tool.groups.[]") | String | | | | | @@ -1819,7 +1819,7 @@ # Native VLAN ID when interface is in tap mode. native_vlan: truncation: - enabled: + enabled: # Ingress packet truncation size in bytes. size: @@ -1838,7 +1838,7 @@ vxlan_strip: gre: - # Strip GRE encapsulation header without protocols. + # Strip GRE encapsulation header for all GRE tunnels. strip: # Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. @@ -1863,10 +1863,10 @@ # Destination IP address of tunnel packets. - destination: - # Source IP address of tunnel packets. Applied only when destination is defined. + # Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. source: - # Strip GRE encapsulation header for sepecific destination without protocol. + # Strip GRE encapsulation header for sepecific destination. strip: protocols: @@ -1906,7 +1906,7 @@ dot1q_dzgre_source: qinq_dzgre_source: truncation: - enabled: + enabled: # Egress packet truncation size in bytes. size: 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 e347fab9bfd..bf6ca7c8271 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 @@ -388,7 +388,7 @@ | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tap.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        native_vlan](## "port_channel_interfaces.[].switchport.tap.native_vlan") | Integer | | | Min: 1
Max: 4094 | Native VLAN ID when interface is in tap mode. | | [        truncation](## "port_channel_interfaces.[].switchport.tap.truncation") | Dictionary | | | | | - | [          enabled](## "port_channel_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | + | [          enabled](## "port_channel_interfaces.[].switchport.tap.truncation.enabled") | Boolean | | | | | | [          size](## "port_channel_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | | [        mac_address](## "port_channel_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | | [          source](## "port_channel_interfaces.[].switchport.tap.mac_address.source") | String | | | Pattern: `^([0-9a-f]{2}:){5}[0-9a-f]{2}$` | MAC address for the source. | @@ -396,7 +396,7 @@ | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header.
`encapsulation.vxlan_strip` and `mpls_pop_all` are mutually exclusive.
`mpls_pop_all` takes precedence. | | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | - | [            strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header without protocols. | + | [            strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header for all GRE tunnels. | | [            protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | | [              - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | @@ -404,8 +404,8 @@ | [                re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [            destinations](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | | [              - destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | - | [                source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. | - | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for sepecific destination without protocol. | + | [                source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | + | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for sepecific destination. | | [                protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | | [                  - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | | [                    strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | @@ -422,7 +422,7 @@ | [          dot1q_dzgre_source](## "port_channel_interfaces.[].switchport.tool.identity.dot1q_dzgre_source") | String | | | Valid Values:
- policy
- port | | | [          qinq_dzgre_source](## "port_channel_interfaces.[].switchport.tool.identity.qinq_dzgre_source") | String | | | Valid Values:
- policy inner port
- port inner policy | | | [        truncation](## "port_channel_interfaces.[].switchport.tool.truncation") | Dictionary | | | | | - | [          enabled](## "port_channel_interfaces.[].switchport.tool.truncation.enabled") | Boolean | Required | | | | + | [          enabled](## "port_channel_interfaces.[].switchport.tool.truncation.enabled") | Boolean | | | | | | [          size](## "port_channel_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | | [        groups](## "port_channel_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | | [          - <str>](## "port_channel_interfaces.[].switchport.tool.groups.[]") | String | | | | | @@ -1304,7 +1304,7 @@ # Native VLAN ID when interface is in tap mode. native_vlan: truncation: - enabled: + enabled: # Ingress packet truncation size in bytes. size: @@ -1323,7 +1323,7 @@ vxlan_strip: gre: - # Strip GRE encapsulation header without protocols. + # Strip GRE encapsulation header for all GRE tunnels. strip: # Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. @@ -1348,10 +1348,10 @@ # Destination IP address of tunnel packets. - destination: - # Source IP address of tunnel packets. Applied only when destination is defined. + # Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. source: - # Strip GRE encapsulation header for sepecific destination without protocol. + # Strip GRE encapsulation header for sepecific destination. strip: protocols: @@ -1391,7 +1391,7 @@ dot1q_dzgre_source: qinq_dzgre_source: truncation: - enabled: + enabled: # Egress packet truncation size in bytes. size: 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 6d68c705658..e98d25a701c 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 @@ -4202,7 +4202,6 @@ keys: keys: enabled: type: bool - required: true size: description: Ingress packet truncation size in bytes. type: int @@ -4237,7 +4236,8 @@ keys: keys: strip: type: bool - description: Strip GRE encapsulation header without protocols. + description: Strip GRE encapsulation header for all GRE + tunnels. protocols: type: list primary_key: protocol @@ -4284,12 +4284,14 @@ keys: type: str source: description: Source IP address of tunnel packets. - Applied only when destination is defined. + Applied only when destination is defined. When not + defined; any GRE packet that matches the `destination` + is terminated. type: str strip: type: bool description: Strip GRE encapsulation header for sepecific - destination without protocol. + destination. protocols: type: list primary_key: protocol @@ -4371,7 +4373,6 @@ keys: keys: enabled: type: bool - required: true size: description: Egress packet truncation size in bytes. type: int 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 68752e3b821..10cde402243 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 @@ -2020,7 +2020,6 @@ keys: keys: enabled: type: bool - required: true size: description: Ingress packet truncation size in bytes. type: int @@ -2053,7 +2052,7 @@ keys: keys: strip: type: bool - description: Strip GRE encapsulation header without protocols. + description: Strip GRE encapsulation header for all GRE tunnels. protocols: type: list primary_key: protocol @@ -2094,11 +2093,11 @@ keys: description: Destination IP address of tunnel packets. type: str source: - description: Source IP address of tunnel packets. Applied only when destination is defined. + description: Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. type: str strip: type: bool - description: Strip GRE encapsulation header for sepecific destination without protocol. + description: Strip GRE encapsulation header for sepecific destination. protocols: type: list primary_key: protocol @@ -2173,7 +2172,6 @@ keys: keys: enabled: type: bool - required: true size: description: Egress packet truncation size in bytes. type: int From e617c980aa551274c1e8ce17103d83c79c5fe726 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Thu, 28 Nov 2024 12:37:24 +0530 Subject: [PATCH 23/32] Fixing molecule sub-interfaces and schema description --- .../documentation/devices/host1.md | 19 +++++---- .../intended/configs/host1.cfg | 19 +++++---- .../host1/port-channel-interfaces.yml | 41 ++++++++++--------- .../docs/tables/ethernet-interfaces.md | 6 ++- .../docs/tables/port-channel-interfaces.md | 6 ++- .../schema/eos_cli_config_gen.schema.yml | 8 +++- .../ethernet_interfaces.schema.yml | 2 + 7 files changed, 60 insertions(+), 41 deletions(-) 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 2fc03bf322f..d1b6eec6302 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 @@ -4448,13 +4448,6 @@ interface Port-Channel100.101 logging event link-status encapsulation dot1q vlan 101 ip address 10.1.1.3/31 - switchport tap identity 3 inner 10 - switchport tap mac-address dest 01:00:00:00:00:00 - switchport tap encapsulation vxlan strip - switchport tool identity dot1q - switchport tool identity dot1q source dzgre policy - switchport tap truncation 120 - switchport tool truncation ! interface Port-Channel100.102 description IFL for TENANT02 @@ -4728,7 +4721,7 @@ interface Port-Channel132 description Test_port-channel_interface-profile ! interface Port-Channel133 - description Test_switchport_tap_tool + description Test1_switchport_tap_tool switchport tap native vlan 10 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab @@ -4758,6 +4751,16 @@ interface Port-Channel133 switchport tool group set group1 group2 group3 switchport tool dot1q remove outer 1-2 switchport tool dzgre preserve +! +interface Port-Channel134 + description Test2_switchport_tap_tool + switchport tap identity 3 inner 10 + switchport tap mac-address dest 01:00:00:00:00:00 + switchport tap encapsulation vxlan strip + switchport tool identity dot1q + switchport tool identity dot1q source dzgre policy + switchport tap truncation 120 + switchport tool truncation ``` ### 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 28b7ae23ab4..4d295d49d02 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 @@ -1377,13 +1377,6 @@ interface Port-Channel100.101 logging event link-status encapsulation dot1q vlan 101 ip address 10.1.1.3/31 - switchport tap identity 3 inner 10 - switchport tap mac-address dest 01:00:00:00:00:00 - switchport tap encapsulation vxlan strip - switchport tool identity dot1q - switchport tool identity dot1q source dzgre policy - switchport tap truncation 120 - switchport tool truncation ! interface Port-Channel100.102 description IFL for TENANT02 @@ -1657,7 +1650,7 @@ interface Port-Channel132 description Test_port-channel_interface-profile ! interface Port-Channel133 - description Test_switchport_tap_tool + description Test1_switchport_tap_tool switchport tap native vlan 10 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab @@ -1688,6 +1681,16 @@ interface Port-Channel133 switchport tool dot1q remove outer 1-2 switchport tool dzgre preserve ! +interface Port-Channel134 + description Test2_switchport_tap_tool + switchport tap identity 3 inner 10 + switchport tap mac-address dest 01:00:00:00:00:00 + switchport tap encapsulation vxlan strip + switchport tool identity dot1q + switchport tool identity dot1q source dzgre policy + switchport tap truncation 120 + switchport tool truncation +! interface Dps1 description Test DPS Interface shutdown 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 7960065c39e..ed29b8c7401 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 @@ -314,24 +314,6 @@ port_channel_interfaces: ip_address: 10.1.1.3/31 encapsulation_dot1q: vlan: 101 - switchport: - tap: - identity: - id: 3 - inner_vlan: 10 - mac_address: - destination: 01:00:00:00:00:00 - encapsulation: - vxlan_strip: true - truncation: - enabled: true - size: 120 - tool: - truncation: - enabled: true - identity: - tag: dot1q - dot1q_dzgre_source: policy - name: Port-Channel100.102 logging: @@ -921,7 +903,7 @@ port_channel_interfaces: profile: test-interface-profile - name: Port-Channel133 - description: Test_switchport_tap_tool + description: Test1_switchport_tap_tool switchport: tap: allowed_vlan: 25 @@ -995,3 +977,24 @@ port_channel_interfaces: - group3 dot1q_remove_outer_vlan_tag: 1-2 dzgre_preserve: true + + - name: Port-Channel134 + description: Test2_switchport_tap_tool + switchport: + tap: + identity: + id: 3 + inner_vlan: 10 + mac_address: + destination: 01:00:00:00:00:00 + encapsulation: + vxlan_strip: true + truncation: + enabled: true + size: 120 + tool: + truncation: + enabled: true + identity: + tag: dot1q + dot1q_dzgre_source: policy 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 d8879b9a8c1..93bd8825049 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 @@ -548,7 +548,7 @@ | [        vlans](## "ethernet_interfaces.[].switchport.port_security.vlans") | List, items: Dictionary | | | | | | [          - range](## "ethernet_interfaces.[].switchport.port_security.vlans.[].range") | String | Required, Unique | | | VLAN ID or range(s) of VLAN IDs, <1-4094>.
Example:
- 3
- 1,3
- 1-10
| | [            mac_address_maximum](## "ethernet_interfaces.[].switchport.port_security.vlans.[].mac_address_maximum") | Integer | Required | | | | - | [      tap](## "ethernet_interfaces.[].switchport.tap") | Dictionary | | | | In tap mode, the interface operates as a tap port.
Tap ports receive traffic for replication on one or more tool ports. | + | [      tap](## "ethernet_interfaces.[].switchport.tap") | Dictionary | | | | In tap mode, the interface operates as a tap port.
Tap ports receive traffic for replication on one or more tool ports.
This setting applies only to parent interfaces. | | [        allowed_vlan](## "ethernet_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range(s) of VLAN IDs within range 1-4094. | | [        default](## "ethernet_interfaces.[].switchport.tap.default") | Dictionary | | | | Default tap destination config. | | [          groups](## "ethernet_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | @@ -586,7 +586,7 @@ | [                    strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | | [                    feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                    re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | - | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | + | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports.
This setting applies only to parent interfaces. | | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | | [          dot1br_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. | @@ -1786,6 +1786,7 @@ # In tap mode, the interface operates as a tap port. # Tap ports receive traffic for replication on one or more tool ports. + # This setting applies only to parent interfaces. tap: # VLAN ID or range(s) of VLAN IDs within range 1-4094. @@ -1887,6 +1888,7 @@ # In tool mode, the interface operates as a tool port. # Tool ports replicate traffic received by tap ports. + # This setting applies only to parent interfaces. tool: # Pop all MPLS labels. 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 bf6ca7c8271..7c6948b14a0 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 @@ -373,7 +373,7 @@ | [        vlans](## "port_channel_interfaces.[].switchport.port_security.vlans") | List, items: Dictionary | | | | | | [          - range](## "port_channel_interfaces.[].switchport.port_security.vlans.[].range") | String | Required, Unique | | | VLAN ID or range(s) of VLAN IDs, <1-4094>.
Example:
- 3
- 1,3
- 1-10
| | [            mac_address_maximum](## "port_channel_interfaces.[].switchport.port_security.vlans.[].mac_address_maximum") | Integer | | | | | - | [      tap](## "port_channel_interfaces.[].switchport.tap") | Dictionary | | | | In tap mode, the interface operates as a tap port.
Tap ports receive traffic for replication on one or more tool ports. | + | [      tap](## "port_channel_interfaces.[].switchport.tap") | Dictionary | | | | In tap mode, the interface operates as a tap port.
Tap ports receive traffic for replication on one or more tool ports.
This setting applies only to parent interfaces. | | [        allowed_vlan](## "port_channel_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range(s) of VLAN IDs within range 1-4094. | | [        default](## "port_channel_interfaces.[].switchport.tap.default") | Dictionary | | | | Default tap destination config. | | [          groups](## "port_channel_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | @@ -411,7 +411,7 @@ | [                    strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | | [                    feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                    re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | - | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports. | + | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports.
This setting applies only to parent interfaces. | | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | | [          dot1br_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. | @@ -1271,6 +1271,7 @@ # In tap mode, the interface operates as a tap port. # Tap ports receive traffic for replication on one or more tool ports. + # This setting applies only to parent interfaces. tap: # VLAN ID or range(s) of VLAN IDs within range 1-4094. @@ -1372,6 +1373,7 @@ # In tool mode, the interface operates as a tool port. # Tool ports replicate traffic received by tap ports. + # This setting applies only to parent interfaces. tool: # Pop all MPLS labels. 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 d64f252aa37..3f7475e576d 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 @@ -4140,7 +4140,9 @@ keys: tap: description: 'In tap mode, the interface operates as a tap port. - Tap ports receive traffic for replication on one or more tool ports.' + Tap ports receive traffic for replication on one or more tool ports. + + This setting applies only to parent interfaces.' type: dict keys: allowed_vlan: @@ -4328,7 +4330,9 @@ keys: tool: description: 'In tool mode, the interface operates as a tool port. - Tool ports replicate traffic received by tap ports.' + Tool ports replicate traffic received by tap ports. + + This setting applies only to parent interfaces.' type: dict keys: mpls_pop_all: 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 10cde402243..6f7426c1a12 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 @@ -1962,6 +1962,7 @@ keys: description: |- In tap mode, the interface operates as a tap port. Tap ports receive traffic for replication on one or more tool ports. + This setting applies only to parent interfaces. type: dict keys: allowed_vlan: @@ -2130,6 +2131,7 @@ keys: description: |- In tool mode, the interface operates as a tool port. Tool ports replicate traffic received by tap ports. + This setting applies only to parent interfaces. type: dict keys: mpls_pop_all: From 7f699c90f5b5754718e5200fefa7f3edf620f2fa Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 07:33:57 +0000 Subject: [PATCH 24/32] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../_eos_cli_config_gen/schema/__init__.py | 2874 +++++++++++++---- 1 file changed, 2199 insertions(+), 675 deletions(-) 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 fc484a76cfc..898537cc6b9 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py @@ -11317,6 +11317,732 @@ def __init__( """ + class Tap(AvdModel): + """Subclass of AvdModel.""" + + class Default(AvdModel): + """Subclass of AvdModel.""" + + class Groups(AvdList[str]): + """Subclass of AvdList with `str` items.""" + + Groups._item_type = str + + class Interfaces(AvdList[str]): + """Subclass of AvdList with `str` items.""" + + Interfaces._item_type = str + + class NexthopGroups(AvdList[str]): + """Subclass of AvdList with `str` items.""" + + NexthopGroups._item_type = str + + _fields: ClassVar[dict] = { + "groups": {"type": Groups}, + "interfaces": {"type": Interfaces}, + "nexthop_groups": {"type": NexthopGroups}, + "_custom_data": {"type": dict}, + } + groups: Groups + """ + Tap group names for the interface. + + Subclass of AvdList with `str` items. + """ + interfaces: Interfaces + """ + Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + + Subclass of AvdList with + `str` items. + """ + nexthop_groups: NexthopGroups + """ + Default nexthop-group names. + + Subclass of AvdList with `str` items. + """ + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + groups: Groups | UndefinedType = Undefined, + interfaces: Interfaces | UndefinedType = Undefined, + nexthop_groups: NexthopGroups | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Default. + + + Subclass of AvdModel. + + Args: + groups: + Tap group names for the interface. + + Subclass of AvdList with `str` items. + interfaces: + Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + + Subclass of AvdList with + `str` items. + nexthop_groups: + Default nexthop-group names. + + Subclass of AvdList with `str` items. + _custom_data: _custom_data + + """ + + class Identity(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"id": {"type": int}, "inner_vlan": {"type": int}, "_custom_data": {"type": dict}} + id: int | None + """Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535).""" + inner_vlan: int | None + """Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094).""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + id: int | None | UndefinedType = Undefined, + inner_vlan: int | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Identity. + + + Subclass of AvdModel. + + Args: + id: Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535). + inner_vlan: Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094). + _custom_data: _custom_data + + """ + + class Truncation(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"enabled": {"type": bool}, "size": {"type": int}, "_custom_data": {"type": dict}} + enabled: bool | None + size: int | None + """Ingress packet truncation size in bytes.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + enabled: bool | None | UndefinedType = Undefined, + size: int | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Truncation. + + + Subclass of AvdModel. + + Args: + enabled: enabled + size: Ingress packet truncation size in bytes. + _custom_data: _custom_data + + """ + + class MacAddress(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"source": {"type": str}, "destination": {"type": str}, "_custom_data": {"type": dict}} + source: str | None + """MAC address for the source.""" + destination: str | None + """MAC address for the destination.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + source: str | None | UndefinedType = Undefined, + destination: str | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + MacAddress. + + + Subclass of AvdModel. + + Args: + source: MAC address for the source. + destination: MAC address for the destination. + _custom_data: _custom_data + + """ + + class Encapsulation(AvdModel): + """Subclass of AvdModel.""" + + class Gre(AvdModel): + """Subclass of AvdModel.""" + + class ProtocolsItem(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = { + "protocol": {"type": str}, + "strip": {"type": bool}, + "feature_header_length": {"type": int}, + "re_encapsulation_ethernet_header": {"type": bool}, + "_custom_data": {"type": dict}, + } + protocol: str + """ + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + """ + strip: bool | None + """This is a required key to strip GRE encapsulation header with protocols.""" + feature_header_length: int | None + """ + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol + 0x0000. + """ + re_encapsulation_ethernet_header: bool | None + """ + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS + running-config for protocol 0x0000. + """ + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + protocol: str | UndefinedType = Undefined, + strip: bool | None | UndefinedType = Undefined, + feature_header_length: int | None | UndefinedType = Undefined, + re_encapsulation_ethernet_header: bool | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + ProtocolsItem. + + + Subclass of AvdModel. + + Args: + protocol: + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + strip: This is a required key to strip GRE encapsulation header with protocols. + feature_header_length: + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol + 0x0000. + re_encapsulation_ethernet_header: + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS + running-config for protocol 0x0000. + _custom_data: _custom_data + + """ + + class Protocols(AvdIndexedList[str, ProtocolsItem]): + """Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`).""" + + _primary_key: ClassVar[str] = "protocol" + + Protocols._item_type = ProtocolsItem + + class DestinationsItem(AvdModel): + """Subclass of AvdModel.""" + + class ProtocolsItem(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = { + "protocol": {"type": str}, + "strip": {"type": bool}, + "feature_header_length": {"type": int}, + "re_encapsulation_ethernet_header": {"type": bool}, + "_custom_data": {"type": dict}, + } + protocol: str + """ + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + """ + strip: bool | None + """This is a required key to strip GRE encapsulation header for specific destination with protocols.""" + feature_header_length: int | None + """ + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol + 0x0000. + """ + re_encapsulation_ethernet_header: bool | None + """ + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS + running-config for protocol 0x0000. + """ + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + protocol: str | UndefinedType = Undefined, + strip: bool | None | UndefinedType = Undefined, + feature_header_length: int | None | UndefinedType = Undefined, + re_encapsulation_ethernet_header: bool | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + ProtocolsItem. + + + Subclass of AvdModel. + + Args: + protocol: + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + strip: This is a required key to strip GRE encapsulation header for specific destination with protocols. + feature_header_length: + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol + 0x0000. + re_encapsulation_ethernet_header: + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS + running-config for protocol 0x0000. + _custom_data: _custom_data + + """ + + class Protocols(AvdIndexedList[str, ProtocolsItem]): + """Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`).""" + + _primary_key: ClassVar[str] = "protocol" + + Protocols._item_type = ProtocolsItem + + _fields: ClassVar[dict] = { + "destination": {"type": str}, + "source": {"type": str}, + "strip": {"type": bool}, + "protocols": {"type": Protocols}, + "_custom_data": {"type": dict}, + } + destination: str + """Destination IP address of tunnel packets.""" + source: str | None + """ + Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any + GRE packet that matches the `destination` is terminated. + """ + strip: bool | None + """Strip GRE encapsulation header for sepecific destination.""" + protocols: Protocols + """Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`).""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + destination: str | UndefinedType = Undefined, + source: str | None | UndefinedType = Undefined, + strip: bool | None | UndefinedType = Undefined, + protocols: Protocols | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + DestinationsItem. + + + Subclass of AvdModel. + + Args: + destination: Destination IP address of tunnel packets. + source: + Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any + GRE packet that matches the `destination` is terminated. + strip: Strip GRE encapsulation header for sepecific destination. + protocols: Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`). + _custom_data: _custom_data + + """ + + class Destinations(AvdIndexedList[str, DestinationsItem]): + """Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`).""" + + _primary_key: ClassVar[str] = "destination" + + Destinations._item_type = DestinationsItem + + _fields: ClassVar[dict] = { + "strip": {"type": bool}, + "protocols": {"type": Protocols}, + "destinations": {"type": Destinations}, + "_custom_data": {"type": dict}, + } + strip: bool | None + """Strip GRE encapsulation header for all GRE tunnels.""" + protocols: Protocols + """ + Protocols for all destinations; destination-specific protocols should be set under the + `destinations[].protocols` key. + + Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key + is `protocol` (`str`). + """ + destinations: Destinations + """Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`).""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + strip: bool | None | UndefinedType = Undefined, + protocols: Protocols | UndefinedType = Undefined, + destinations: Destinations | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Gre. + + + Subclass of AvdModel. + + Args: + strip: Strip GRE encapsulation header for all GRE tunnels. + protocols: + Protocols for all destinations; destination-specific protocols should be set under the + `destinations[].protocols` key. + + Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key + is `protocol` (`str`). + destinations: Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`). + _custom_data: _custom_data + + """ + + _fields: ClassVar[dict] = {"vxlan_strip": {"type": bool}, "gre": {"type": Gre}, "_custom_data": {"type": dict}} + vxlan_strip: bool | None + """ + Strip VXLAN encapsulation header. + `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually + exclusive. + `mpls_pop_all` takes precedence. + """ + gre: Gre + """Subclass of AvdModel.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + vxlan_strip: bool | None | UndefinedType = Undefined, + gre: Gre | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Encapsulation. + + + Subclass of AvdModel. + + Args: + vxlan_strip: + Strip VXLAN encapsulation header. + `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually + exclusive. + `mpls_pop_all` takes precedence. + gre: Subclass of AvdModel. + _custom_data: _custom_data + + """ + + _fields: ClassVar[dict] = { + "allowed_vlan": {"type": str}, + "default": {"type": Default}, + "identity": {"type": Identity}, + "mpls_pop_all": {"type": bool}, + "native_vlan": {"type": int}, + "truncation": {"type": Truncation}, + "mac_address": {"type": MacAddress}, + "encapsulation": {"type": Encapsulation}, + "_custom_data": {"type": dict}, + } + allowed_vlan: str | None + """VLAN ID or range(s) of VLAN IDs within range 1-4094.""" + default: Default + """ + Default tap destination config. + + Subclass of AvdModel. + """ + identity: Identity + """Subclass of AvdModel.""" + mpls_pop_all: bool | None + """Pop all MPLS labels.""" + native_vlan: int | None + """Native VLAN ID when interface is in tap mode.""" + truncation: Truncation + """Subclass of AvdModel.""" + mac_address: MacAddress + """Subclass of AvdModel.""" + encapsulation: Encapsulation + """Subclass of AvdModel.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + allowed_vlan: str | None | UndefinedType = Undefined, + default: Default | UndefinedType = Undefined, + identity: Identity | UndefinedType = Undefined, + mpls_pop_all: bool | None | UndefinedType = Undefined, + native_vlan: int | None | UndefinedType = Undefined, + truncation: Truncation | UndefinedType = Undefined, + mac_address: MacAddress | UndefinedType = Undefined, + encapsulation: Encapsulation | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Tap. + + + Subclass of AvdModel. + + Args: + allowed_vlan: VLAN ID or range(s) of VLAN IDs within range 1-4094. + default: + Default tap destination config. + + Subclass of AvdModel. + identity: Subclass of AvdModel. + mpls_pop_all: Pop all MPLS labels. + native_vlan: Native VLAN ID when interface is in tap mode. + truncation: Subclass of AvdModel. + mac_address: Subclass of AvdModel. + encapsulation: Subclass of AvdModel. + _custom_data: _custom_data + + """ + + class Tool(AvdModel): + """Subclass of AvdModel.""" + + class Encapsulation(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"dot1br_strip": {"type": bool}, "vn_tag_strip": {"type": bool}, "_custom_data": {"type": dict}} + dot1br_strip: bool | None + """Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.""" + vn_tag_strip: bool | None + """Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + dot1br_strip: bool | None | UndefinedType = Undefined, + vn_tag_strip: bool | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Encapsulation. + + + Subclass of AvdModel. + + Args: + dot1br_strip: Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. + vn_tag_strip: Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS. + _custom_data: _custom_data + + """ + + class Identity(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = { + "tag": {"type": str}, + "dot1q_dzgre_source": {"type": str}, + "qinq_dzgre_source": {"type": str}, + "_custom_data": {"type": dict}, + } + tag: Literal["dot1q", "qinq"] | None + dot1q_dzgre_source: Literal["policy", "port"] | None + qinq_dzgre_source: Literal["policy inner port", "port inner policy"] | None + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + tag: Literal["dot1q", "qinq"] | None | UndefinedType = Undefined, + dot1q_dzgre_source: Literal["policy", "port"] | None | UndefinedType = Undefined, + qinq_dzgre_source: Literal["policy inner port", "port inner policy"] | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Identity. + + + Subclass of AvdModel. + + Args: + tag: tag + dot1q_dzgre_source: dot1q_dzgre_source + qinq_dzgre_source: qinq_dzgre_source + _custom_data: _custom_data + + """ + + class Truncation(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"enabled": {"type": bool}, "size": {"type": int}, "_custom_data": {"type": dict}} + enabled: bool | None + size: Literal[160] | None + """Egress packet truncation size in bytes.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + enabled: bool | None | UndefinedType = Undefined, + size: Literal[160] | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Truncation. + + + Subclass of AvdModel. + + Args: + enabled: enabled + size: Egress packet truncation size in bytes. + _custom_data: _custom_data + + """ + + class Groups(AvdList[str]): + """Subclass of AvdList with `str` items.""" + + Groups._item_type = str + + _fields: ClassVar[dict] = { + "mpls_pop_all": {"type": bool}, + "encapsulation": {"type": Encapsulation}, + "allowed_vlan": {"type": str}, + "identity": {"type": Identity}, + "truncation": {"type": Truncation}, + "groups": {"type": Groups}, + "dot1q_remove_outer_vlan_tag": {"type": str}, + "dzgre_preserve": {"type": bool}, + "_custom_data": {"type": dict}, + } + mpls_pop_all: bool | None + """Pop all MPLS labels.""" + encapsulation: Encapsulation + """Subclass of AvdModel.""" + allowed_vlan: str | None + """VLAN ID or range of VLAN IDs within range 1-4094.""" + identity: Identity + """Subclass of AvdModel.""" + truncation: Truncation + """Subclass of AvdModel.""" + groups: Groups + """ + Tool groups for the interface. + + Subclass of AvdList with `str` items. + """ + dot1q_remove_outer_vlan_tag: str | None + """ + Indices of vlan tags to be removed. + Range: 1-2 + """ + dzgre_preserve: bool | None + """Preserve the DzGRE header.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + mpls_pop_all: bool | None | UndefinedType = Undefined, + encapsulation: Encapsulation | UndefinedType = Undefined, + allowed_vlan: str | None | UndefinedType = Undefined, + identity: Identity | UndefinedType = Undefined, + truncation: Truncation | UndefinedType = Undefined, + groups: Groups | UndefinedType = Undefined, + dot1q_remove_outer_vlan_tag: str | None | UndefinedType = Undefined, + dzgre_preserve: bool | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Tool. + + + Subclass of AvdModel. + + Args: + mpls_pop_all: Pop all MPLS labels. + encapsulation: Subclass of AvdModel. + allowed_vlan: VLAN ID or range of VLAN IDs within range 1-4094. + identity: Subclass of AvdModel. + truncation: Subclass of AvdModel. + groups: + Tool groups for the interface. + + Subclass of AvdList with `str` items. + dot1q_remove_outer_vlan_tag: + Indices of vlan tags to be removed. + Range: 1-2 + dzgre_preserve: Preserve the DzGRE header. + _custom_data: _custom_data + + """ + _fields: ClassVar[dict] = { "enabled": {"type": bool}, "mode": {"type": str}, @@ -11331,6 +12057,8 @@ def __init__( "backup_link": {"type": BackupLink}, "backup": {"type": Backup}, "port_security": {"type": PortSecurity}, + "tap": {"type": Tap}, + "tool": {"type": Tool}, "_custom_data": {"type": dict}, } enabled: bool | None @@ -11384,6 +12112,24 @@ def __init__( """ port_security: PortSecurity """Subclass of AvdModel.""" + tap: Tap + """ + In tap mode, the interface operates as a tap port. + Tap ports receive traffic for replication on one + or more tool ports. + This setting applies only to parent interfaces. + + Subclass of AvdModel. + """ + tool: Tool + """ + In tool mode, the interface operates as a tool port. + Tool ports replicate traffic received by tap + ports. + This setting applies only to parent interfaces. + + Subclass of AvdModel. + """ _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -11404,6 +12150,8 @@ def __init__( backup_link: BackupLink | UndefinedType = Undefined, backup: Backup | UndefinedType = Undefined, port_security: PortSecurity | UndefinedType = Undefined, + tap: Tap | UndefinedType = Undefined, + tool: Tool | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ @@ -11446,6 +12194,20 @@ def __init__( Subclass of AvdModel. port_security: Subclass of AvdModel. + tap: + In tap mode, the interface operates as a tap port. + Tap ports receive traffic for replication on one + or more tool ports. + This setting applies only to parent interfaces. + + Subclass of AvdModel. + tool: + In tool mode, the interface operates as a tool port. + Tool ports replicate traffic received by tap + ports. + This setting applies only to parent interfaces. + + Subclass of AvdModel. _custom_data: _custom_data """ @@ -29188,26 +29950,257 @@ def __init__( interval: PIM hello interval in seconds. _custom_data: _custom_data - """ + """ + + _fields: ClassVar[dict] = { + "border_router": {"type": bool}, + "dr_priority": {"type": int}, + "sparse_mode": {"type": bool}, + "bfd": {"type": bool}, + "bidirectional": {"type": bool}, + "hello": {"type": Hello}, + "_custom_data": {"type": dict}, + } + border_router: bool | None + """Configure PIM border router. EOS default is false.""" + dr_priority: int | None + sparse_mode: bool | None + bfd: bool | None + """Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.""" + bidirectional: bool | None + hello: Hello + """Subclass of AvdModel.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + border_router: bool | None | UndefinedType = Undefined, + dr_priority: int | None | UndefinedType = Undefined, + sparse_mode: bool | None | UndefinedType = Undefined, + bfd: bool | None | UndefinedType = Undefined, + bidirectional: bool | None | UndefinedType = Undefined, + hello: Hello | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Ipv4. + + + Subclass of AvdModel. + + Args: + border_router: Configure PIM border router. EOS default is false. + dr_priority: dr_priority + sparse_mode: sparse_mode + bfd: Set the default for whether Bidirectional Forwarding Detection is enabled for PIM. + bidirectional: bidirectional + hello: Subclass of AvdModel. + _custom_data: _custom_data + + """ + + _fields: ClassVar[dict] = {"ipv4": {"type": Ipv4}, "_custom_data": {"type": dict}} + ipv4: Ipv4 + """Subclass of AvdModel.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__(self, *, ipv4: Ipv4 | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined) -> None: + """ + Pim. + + + Subclass of AvdModel. + + Args: + ipv4: Subclass of AvdModel. + _custom_data: _custom_data + + """ + + class OspfMessageDigestKeysItem(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"id": {"type": int}, "hash_algorithm": {"type": str}, "key": {"type": str}, "_custom_data": {"type": dict}} + id: int + hash_algorithm: Literal["md5", "sha1", "sha256", "sha384", "sha512"] | None + key: str | None + """Encrypted password.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + id: int | UndefinedType = Undefined, + hash_algorithm: Literal["md5", "sha1", "sha256", "sha384", "sha512"] | None | UndefinedType = Undefined, + key: str | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + OspfMessageDigestKeysItem. + + + Subclass of AvdModel. + + Args: + id: id + hash_algorithm: hash_algorithm + key: Encrypted password. + _custom_data: _custom_data + + """ + + class OspfMessageDigestKeys(AvdIndexedList[int, OspfMessageDigestKeysItem]): + """Subclass of AvdIndexedList with `OspfMessageDigestKeysItem` items. Primary key is `id` (`int`).""" + + _primary_key: ClassVar[str] = "id" + + OspfMessageDigestKeys._item_type = OspfMessageDigestKeysItem + + class FlowTracker(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"sampled": {"type": str}, "hardware": {"type": str}, "_custom_data": {"type": dict}} + sampled: str | None + """Sampled flow tracker name.""" + hardware: str | None + """Hardware flow tracker name.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + sampled: str | None | UndefinedType = Undefined, + hardware: str | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + FlowTracker. + + + Subclass of AvdModel. + + Args: + sampled: Sampled flow tracker name. + hardware: Hardware flow tracker name. + _custom_data: _custom_data + + """ + + class Bgp(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"session_tracker": {"type": str}, "_custom_data": {"type": dict}} + session_tracker: str | None + """Name of session tracker.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, *, session_tracker: str | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined + ) -> None: + """ + Bgp. + + + Subclass of AvdModel. + + Args: + session_tracker: Name of session tracker. + _custom_data: _custom_data + + """ + + class IpIgmpHostProxy(AvdModel): + """Subclass of AvdModel.""" + + class GroupsItem(AvdModel): + """Subclass of AvdModel.""" + + class ExcludeItem(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"source": {"type": str}, "_custom_data": {"type": dict}} + source: str + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__(self, *, source: str | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined) -> None: + """ + ExcludeItem. + + + Subclass of AvdModel. + + Args: + source: source + _custom_data: _custom_data + + """ + + class Exclude(AvdIndexedList[str, ExcludeItem]): + """Subclass of AvdIndexedList with `ExcludeItem` items. Primary key is `source` (`str`).""" + + _primary_key: ClassVar[str] = "source" + + Exclude._item_type = ExcludeItem + + class IncludeItem(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"source": {"type": str}, "_custom_data": {"type": dict}} + source: str + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__(self, *, source: str | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined) -> None: + """ + IncludeItem. + + + Subclass of AvdModel. + + Args: + source: source + _custom_data: _custom_data + + """ + + class Include(AvdIndexedList[str, IncludeItem]): + """Subclass of AvdIndexedList with `IncludeItem` items. Primary key is `source` (`str`).""" + + _primary_key: ClassVar[str] = "source" + + Include._item_type = IncludeItem + + _fields: ClassVar[dict] = {"group": {"type": str}, "exclude": {"type": Exclude}, "include": {"type": Include}, "_custom_data": {"type": dict}} + group: str + """Multicast Address.""" + exclude: Exclude + """ + The same source must not be present both in `exclude` and `include` list. + + Subclass of + AvdIndexedList with `ExcludeItem` items. Primary key is `source` (`str`). + """ + include: Include + """ + The same source must not be present both in `exclude` and `include` list. - _fields: ClassVar[dict] = { - "border_router": {"type": bool}, - "dr_priority": {"type": int}, - "sparse_mode": {"type": bool}, - "bfd": {"type": bool}, - "bidirectional": {"type": bool}, - "hello": {"type": Hello}, - "_custom_data": {"type": dict}, - } - border_router: bool | None - """Configure PIM border router. EOS default is false.""" - dr_priority: int | None - sparse_mode: bool | None - bfd: bool | None - """Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.""" - bidirectional: bool | None - hello: Hello - """Subclass of AvdModel.""" + Subclass of + AvdIndexedList with `IncludeItem` items. Primary key is `source` (`str`). + """ _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29215,59 +30208,91 @@ def __init__( def __init__( self, *, - border_router: bool | None | UndefinedType = Undefined, - dr_priority: int | None | UndefinedType = Undefined, - sparse_mode: bool | None | UndefinedType = Undefined, - bfd: bool | None | UndefinedType = Undefined, - bidirectional: bool | None | UndefinedType = Undefined, - hello: Hello | UndefinedType = Undefined, + group: str | UndefinedType = Undefined, + exclude: Exclude | UndefinedType = Undefined, + include: Include | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - Ipv4. + GroupsItem. Subclass of AvdModel. Args: - border_router: Configure PIM border router. EOS default is false. - dr_priority: dr_priority - sparse_mode: sparse_mode - bfd: Set the default for whether Bidirectional Forwarding Detection is enabled for PIM. - bidirectional: bidirectional - hello: Subclass of AvdModel. + group: Multicast Address. + exclude: + The same source must not be present both in `exclude` and `include` list. + + Subclass of + AvdIndexedList with `ExcludeItem` items. Primary key is `source` (`str`). + include: + The same source must not be present both in `exclude` and `include` list. + + Subclass of + AvdIndexedList with `IncludeItem` items. Primary key is `source` (`str`). _custom_data: _custom_data """ - _fields: ClassVar[dict] = {"ipv4": {"type": Ipv4}, "_custom_data": {"type": dict}} - ipv4: Ipv4 - """Subclass of AvdModel.""" - _custom_data: dict[str, Any] + class Groups(AvdIndexedList[str, GroupsItem]): + """Subclass of AvdIndexedList with `GroupsItem` items. Primary key is `group` (`str`).""" - if TYPE_CHECKING: + _primary_key: ClassVar[str] = "group" - def __init__(self, *, ipv4: Ipv4 | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined) -> None: - """ - Pim. + Groups._item_type = GroupsItem + class AccessListsItem(AvdModel): + """Subclass of AvdModel.""" - Subclass of AvdModel. + _fields: ClassVar[dict] = {"name": {"type": str}, "_custom_data": {"type": dict}} + name: str + _custom_data: dict[str, Any] - Args: - ipv4: Subclass of AvdModel. - _custom_data: _custom_data + if TYPE_CHECKING: - """ + def __init__(self, *, name: str | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined) -> None: + """ + AccessListsItem. - class OspfMessageDigestKeysItem(AvdModel): - """Subclass of AvdModel.""" - _fields: ClassVar[dict] = {"id": {"type": int}, "hash_algorithm": {"type": str}, "key": {"type": str}, "_custom_data": {"type": dict}} - id: int - hash_algorithm: Literal["md5", "sha1", "sha256", "sha384", "sha512"] | None - key: str | None - """Encrypted password.""" + Subclass of AvdModel. + + Args: + name: name + _custom_data: _custom_data + + """ + + class AccessLists(AvdIndexedList[str, AccessListsItem]): + """Subclass of AvdIndexedList with `AccessListsItem` items. Primary key is `name` (`str`).""" + + _primary_key: ClassVar[str] = "name" + + AccessLists._item_type = AccessListsItem + + _fields: ClassVar[dict] = { + "enabled": {"type": bool}, + "groups": {"type": Groups}, + "report_interval": {"type": int}, + "access_lists": {"type": AccessLists}, + "version": {"type": int}, + "_custom_data": {"type": dict}, + } + enabled: bool | None + groups: Groups + """Subclass of AvdIndexedList with `GroupsItem` items. Primary key is `group` (`str`).""" + report_interval: int | None + """Time interval between unsolicited reports.""" + access_lists: AccessLists + """ + Non-standard Access List name. + + Subclass of AvdIndexedList with `AccessListsItem` items. Primary key + is `name` (`str`). + """ + version: int | None + """IGMP version on IGMP host-proxy interface.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29275,170 +30300,231 @@ class OspfMessageDigestKeysItem(AvdModel): def __init__( self, *, - id: int | UndefinedType = Undefined, - hash_algorithm: Literal["md5", "sha1", "sha256", "sha384", "sha512"] | None | UndefinedType = Undefined, - key: str | None | UndefinedType = Undefined, + enabled: bool | None | UndefinedType = Undefined, + groups: Groups | UndefinedType = Undefined, + report_interval: int | None | UndefinedType = Undefined, + access_lists: AccessLists | UndefinedType = Undefined, + version: int | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - OspfMessageDigestKeysItem. + IpIgmpHostProxy. Subclass of AvdModel. Args: - id: id - hash_algorithm: hash_algorithm - key: Encrypted password. + enabled: enabled + groups: Subclass of AvdIndexedList with `GroupsItem` items. Primary key is `group` (`str`). + report_interval: Time interval between unsolicited reports. + access_lists: + Non-standard Access List name. + + Subclass of AvdIndexedList with `AccessListsItem` items. Primary key + is `name` (`str`). + version: IGMP version on IGMP host-proxy interface. _custom_data: _custom_data """ - class OspfMessageDigestKeys(AvdIndexedList[int, OspfMessageDigestKeysItem]): - """Subclass of AvdIndexedList with `OspfMessageDigestKeysItem` items. Primary key is `id` (`int`).""" - - _primary_key: ClassVar[str] = "id" - - OspfMessageDigestKeys._item_type = OspfMessageDigestKeysItem - - class FlowTracker(AvdModel): + class Sflow(AvdModel): """Subclass of AvdModel.""" - _fields: ClassVar[dict] = {"sampled": {"type": str}, "hardware": {"type": str}, "_custom_data": {"type": dict}} - sampled: str | None - """Sampled flow tracker name.""" - hardware: str | None - """Hardware flow tracker name.""" - _custom_data: dict[str, Any] + class Egress(AvdModel): + """Subclass of AvdModel.""" - if TYPE_CHECKING: + _fields: ClassVar[dict] = {"enable": {"type": bool}, "unmodified_enable": {"type": bool}, "_custom_data": {"type": dict}} + enable: bool | None + unmodified_enable: bool | None + _custom_data: dict[str, Any] - def __init__( - self, - *, - sampled: str | None | UndefinedType = Undefined, - hardware: str | None | UndefinedType = Undefined, - _custom_data: dict[str, Any] | UndefinedType = Undefined, - ) -> None: - """ - FlowTracker. + if TYPE_CHECKING: + def __init__( + self, + *, + enable: bool | None | UndefinedType = Undefined, + unmodified_enable: bool | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Egress. - Subclass of AvdModel. - Args: - sampled: Sampled flow tracker name. - hardware: Hardware flow tracker name. - _custom_data: _custom_data + Subclass of AvdModel. - """ + Args: + enable: enable + unmodified_enable: unmodified_enable + _custom_data: _custom_data - class Bgp(AvdModel): - """Subclass of AvdModel.""" + """ - _fields: ClassVar[dict] = {"session_tracker": {"type": str}, "_custom_data": {"type": dict}} - session_tracker: str | None - """Name of session tracker.""" + _fields: ClassVar[dict] = {"enable": {"type": bool}, "egress": {"type": Egress}, "_custom_data": {"type": dict}} + enable: bool | None + egress: Egress + """Subclass of AvdModel.""" _custom_data: dict[str, Any] if TYPE_CHECKING: def __init__( - self, *, session_tracker: str | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined + self, + *, + enable: bool | None | UndefinedType = Undefined, + egress: Egress | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - Bgp. + Sflow. Subclass of AvdModel. Args: - session_tracker: Name of session tracker. + enable: enable + egress: Subclass of AvdModel. _custom_data: _custom_data """ - class IpIgmpHostProxy(AvdModel): + class Switchport(AvdModel): """Subclass of AvdModel.""" - class GroupsItem(AvdModel): + class Trunk(AvdModel): """Subclass of AvdModel.""" - class ExcludeItem(AvdModel): - """Subclass of AvdModel.""" - - _fields: ClassVar[dict] = {"source": {"type": str}, "_custom_data": {"type": dict}} - source: str - _custom_data: dict[str, Any] - - if TYPE_CHECKING: + class Groups(AvdList[str]): + """Subclass of AvdList with `str` items.""" - def __init__(self, *, source: str | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined) -> None: - """ - ExcludeItem. + Groups._item_type = str + _fields: ClassVar[dict] = { + "allowed_vlan": {"type": str}, + "native_vlan": {"type": int}, + "native_vlan_tag": {"type": bool}, + "private_vlan_secondary": {"type": bool}, + "groups": {"type": Groups}, + "_custom_data": {"type": dict}, + } + allowed_vlan: str | None + """ + VLAN ID or range(s) of VLAN IDs (1-4094). + Warning: This should not be combined with + `port_channel_interfaces[].mode = trunk` and `port_channel_interfaces[].vlans`. + """ + native_vlan: int | None + """ + Set native VLAN when interface is in trunking mode. + Warning: This should not be combined with + `port_channel_interfaces[].native_vlan`. + """ + native_vlan_tag: bool | None + """ + If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence. + Warning: This + should not be combined with `port_channel_interfaces[].native_vlan_tag`. + """ + private_vlan_secondary: bool | None + """ + Enable secondary VLAN mapping for a private vlan. + Warning: This should not be combined with + `port_channel_interfaces[].trunk_private_vlan_secondary`. + """ + groups: Groups + """ + Warning: This should not be combined with `port_channel_interfaces[].trunk_groups`. - Subclass of AvdModel. - Args: - source: source - _custom_data: _custom_data + Subclass of + AvdList with `str` items. + """ + _custom_data: dict[str, Any] - """ + if TYPE_CHECKING: - class Exclude(AvdIndexedList[str, ExcludeItem]): - """Subclass of AvdIndexedList with `ExcludeItem` items. Primary key is `source` (`str`).""" + def __init__( + self, + *, + allowed_vlan: str | None | UndefinedType = Undefined, + native_vlan: int | None | UndefinedType = Undefined, + native_vlan_tag: bool | None | UndefinedType = Undefined, + private_vlan_secondary: bool | None | UndefinedType = Undefined, + groups: Groups | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Trunk. - _primary_key: ClassVar[str] = "source" - Exclude._item_type = ExcludeItem + Subclass of AvdModel. - class IncludeItem(AvdModel): - """Subclass of AvdModel.""" + Args: + allowed_vlan: + VLAN ID or range(s) of VLAN IDs (1-4094). + Warning: This should not be combined with + `port_channel_interfaces[].mode = trunk` and `port_channel_interfaces[].vlans`. + native_vlan: + Set native VLAN when interface is in trunking mode. + Warning: This should not be combined with + `port_channel_interfaces[].native_vlan`. + native_vlan_tag: + If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence. + Warning: This + should not be combined with `port_channel_interfaces[].native_vlan_tag`. + private_vlan_secondary: + Enable secondary VLAN mapping for a private vlan. + Warning: This should not be combined with + `port_channel_interfaces[].trunk_private_vlan_secondary`. + groups: + Warning: This should not be combined with `port_channel_interfaces[].trunk_groups`. - _fields: ClassVar[dict] = {"source": {"type": str}, "_custom_data": {"type": dict}} - source: str - _custom_data: dict[str, Any] - if TYPE_CHECKING: + Subclass of + AvdList with `str` items. + _custom_data: _custom_data - def __init__(self, *, source: str | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined) -> None: - """ - IncludeItem. + """ + class Phone(AvdModel): + """Subclass of AvdModel.""" - Subclass of AvdModel. + _fields: ClassVar[dict] = {"vlan": {"type": int}, "trunk": {"type": str}, "_custom_data": {"type": dict}} + vlan: int | None + """Warning: This should not be combined with `port_channel_interfaces[].phone.vlan`.""" + trunk: Literal["tagged", "tagged phone", "untagged", "untagged phone"] | None + """Warning: This should not be combined with `port_channel_interfaces[].phone.trunk`""" + _custom_data: dict[str, Any] - Args: - source: source - _custom_data: _custom_data + if TYPE_CHECKING: - """ + def __init__( + self, + *, + vlan: int | None | UndefinedType = Undefined, + trunk: Literal["tagged", "tagged phone", "untagged", "untagged phone"] | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Phone. - class Include(AvdIndexedList[str, IncludeItem]): - """Subclass of AvdIndexedList with `IncludeItem` items. Primary key is `source` (`str`).""" - _primary_key: ClassVar[str] = "source" + Subclass of AvdModel. - Include._item_type = IncludeItem + Args: + vlan: Warning: This should not be combined with `port_channel_interfaces[].phone.vlan`. + trunk: Warning: This should not be combined with `port_channel_interfaces[].phone.trunk` + _custom_data: _custom_data - _fields: ClassVar[dict] = {"group": {"type": str}, "exclude": {"type": Exclude}, "include": {"type": Include}, "_custom_data": {"type": dict}} - group: str - """Multicast Address.""" - exclude: Exclude - """ - The same source must not be present both in `exclude` and `include` list. + """ - Subclass of - AvdIndexedList with `ExcludeItem` items. Primary key is `source` (`str`). - """ - include: Include - """ - The same source must not be present both in `exclude` and `include` list. + class Dot1q(AvdModel): + """Subclass of AvdModel.""" - Subclass of - AvdIndexedList with `IncludeItem` items. Primary key is `source` (`str`). - """ + _fields: ClassVar[dict] = {"ethertype": {"type": int}, "vlan_tag": {"type": str}, "_custom_data": {"type": dict}} + ethertype: int | None + """Ethertype/TPID (Tag Protocol IDentifier) for VLAN tagged frames.""" + vlan_tag: Literal["disallowed", "required"] | None _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29446,134 +30532,232 @@ class Include(AvdIndexedList[str, IncludeItem]): def __init__( self, *, - group: str | UndefinedType = Undefined, - exclude: Exclude | UndefinedType = Undefined, - include: Include | UndefinedType = Undefined, + ethertype: int | None | UndefinedType = Undefined, + vlan_tag: Literal["disallowed", "required"] | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - GroupsItem. + Dot1q. Subclass of AvdModel. Args: - group: Multicast Address. - exclude: - The same source must not be present both in `exclude` and `include` list. - - Subclass of - AvdIndexedList with `ExcludeItem` items. Primary key is `source` (`str`). - include: - The same source must not be present both in `exclude` and `include` list. - - Subclass of - AvdIndexedList with `IncludeItem` items. Primary key is `source` (`str`). + ethertype: Ethertype/TPID (Tag Protocol IDentifier) for VLAN tagged frames. + vlan_tag: vlan_tag _custom_data: _custom_data """ - class Groups(AvdIndexedList[str, GroupsItem]): - """Subclass of AvdIndexedList with `GroupsItem` items. Primary key is `group` (`str`).""" + class VlanTranslations(AvdModel): + """Subclass of AvdModel.""" - _primary_key: ClassVar[str] = "group" + class DirectionInItem(AvdModel): + """Subclass of AvdModel.""" - Groups._item_type = GroupsItem + _fields: ClassVar[dict] = { + "field_from": {"type": str}, + "to": {"type": int}, + "dot1q_tunnel": {"type": bool}, + "inner_vlan_from": {"type": int}, + "_custom_data": {"type": dict}, + } + _field_to_key_map: ClassVar[dict] = {"field_from": "from"} + _key_to_field_map: ClassVar[dict] = {"from": "field_from"} + field_from: str | None + """VLAN ID or range of VLAN IDs to map from. Range 1-4094.""" + to: int | None + """VLAN ID to map to.""" + dot1q_tunnel: bool | None + inner_vlan_from: int | None + """Inner VLAN ID to map from.""" + _custom_data: dict[str, Any] - class AccessListsItem(AvdModel): - """Subclass of AvdModel.""" + if TYPE_CHECKING: - _fields: ClassVar[dict] = {"name": {"type": str}, "_custom_data": {"type": dict}} - name: str - _custom_data: dict[str, Any] + def __init__( + self, + *, + field_from: str | None | UndefinedType = Undefined, + to: int | None | UndefinedType = Undefined, + dot1q_tunnel: bool | None | UndefinedType = Undefined, + inner_vlan_from: int | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + DirectionInItem. - if TYPE_CHECKING: - def __init__(self, *, name: str | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined) -> None: - """ - AccessListsItem. + Subclass of AvdModel. + + Args: + field_from: VLAN ID or range of VLAN IDs to map from. Range 1-4094. + to: VLAN ID to map to. + dot1q_tunnel: dot1q_tunnel + inner_vlan_from: Inner VLAN ID to map from. + _custom_data: _custom_data + + """ + + class DirectionIn(AvdList[DirectionInItem]): + """Subclass of AvdList with `DirectionInItem` items.""" + + DirectionIn._item_type = DirectionInItem + + class DirectionOutItem(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = { + "field_from": {"type": str}, + "to": {"type": int}, + "dot1q_tunnel_to": {"type": str}, + "inner_vlan_to": {"type": int}, + "_custom_data": {"type": dict}, + } + _field_to_key_map: ClassVar[dict] = {"field_from": "from"} + _key_to_field_map: ClassVar[dict] = {"from": "field_from"} + field_from: str + """VLAN ID or range of VLAN IDs to map from. Range 1-4094.""" + to: int | None + """VLAN ID to map to.""" + dot1q_tunnel_to: str | None + """ + VLAN ID or range of VLAN IDs or "all". Range 1-4094. + This takes precedence over `to` and + `inner_vlan_to`. + """ + inner_vlan_to: int | None + """Inner VLAN ID to map to.""" + _custom_data: dict[str, Any] + if TYPE_CHECKING: + + def __init__( + self, + *, + field_from: str | UndefinedType = Undefined, + to: int | None | UndefinedType = Undefined, + dot1q_tunnel_to: str | None | UndefinedType = Undefined, + inner_vlan_to: int | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + DirectionOutItem. + + + Subclass of AvdModel. - Subclass of AvdModel. + Args: + field_from: VLAN ID or range of VLAN IDs to map from. Range 1-4094. + to: VLAN ID to map to. + dot1q_tunnel_to: + VLAN ID or range of VLAN IDs or "all". Range 1-4094. + This takes precedence over `to` and + `inner_vlan_to`. + inner_vlan_to: Inner VLAN ID to map to. + _custom_data: _custom_data - Args: - name: name - _custom_data: _custom_data + """ - """ + class DirectionOut(AvdList[DirectionOutItem]): + """Subclass of AvdList with `DirectionOutItem` items.""" - class AccessLists(AvdIndexedList[str, AccessListsItem]): - """Subclass of AvdIndexedList with `AccessListsItem` items. Primary key is `name` (`str`).""" + DirectionOut._item_type = DirectionOutItem - _primary_key: ClassVar[str] = "name" + class DirectionBothItem(AvdModel): + """Subclass of AvdModel.""" - AccessLists._item_type = AccessListsItem + _fields: ClassVar[dict] = { + "field_from": {"type": str}, + "to": {"type": int}, + "dot1q_tunnel": {"type": bool}, + "inner_vlan_from": {"type": int}, + "network": {"type": bool}, + "_custom_data": {"type": dict}, + } + _field_to_key_map: ClassVar[dict] = {"field_from": "from"} + _key_to_field_map: ClassVar[dict] = {"from": "field_from"} + field_from: str + """VLAN ID or range of VLAN IDs to map from. Range 1-4094.""" + to: int + """VLAN ID to map to.""" + dot1q_tunnel: bool | None + inner_vlan_from: int | None + """Inner VLAN ID to map from.""" + network: bool | None + """ + Enable use of network-side VLAN ID. + This setting can only be enabled when `inner_vlan_from` is + defined. + """ + _custom_data: dict[str, Any] - _fields: ClassVar[dict] = { - "enabled": {"type": bool}, - "groups": {"type": Groups}, - "report_interval": {"type": int}, - "access_lists": {"type": AccessLists}, - "version": {"type": int}, - "_custom_data": {"type": dict}, - } - enabled: bool | None - groups: Groups - """Subclass of AvdIndexedList with `GroupsItem` items. Primary key is `group` (`str`).""" - report_interval: int | None - """Time interval between unsolicited reports.""" - access_lists: AccessLists - """ - Non-standard Access List name. + if TYPE_CHECKING: - Subclass of AvdIndexedList with `AccessListsItem` items. Primary key - is `name` (`str`). - """ - version: int | None - """IGMP version on IGMP host-proxy interface.""" - _custom_data: dict[str, Any] + def __init__( + self, + *, + field_from: str | UndefinedType = Undefined, + to: int | UndefinedType = Undefined, + dot1q_tunnel: bool | None | UndefinedType = Undefined, + inner_vlan_from: int | None | UndefinedType = Undefined, + network: bool | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + DirectionBothItem. - if TYPE_CHECKING: - def __init__( - self, - *, - enabled: bool | None | UndefinedType = Undefined, - groups: Groups | UndefinedType = Undefined, - report_interval: int | None | UndefinedType = Undefined, - access_lists: AccessLists | UndefinedType = Undefined, - version: int | None | UndefinedType = Undefined, - _custom_data: dict[str, Any] | UndefinedType = Undefined, - ) -> None: - """ - IpIgmpHostProxy. + Subclass of AvdModel. + Args: + field_from: VLAN ID or range of VLAN IDs to map from. Range 1-4094. + to: VLAN ID to map to. + dot1q_tunnel: dot1q_tunnel + inner_vlan_from: Inner VLAN ID to map from. + network: + Enable use of network-side VLAN ID. + This setting can only be enabled when `inner_vlan_from` is + defined. + _custom_data: _custom_data - Subclass of AvdModel. + """ - Args: - enabled: enabled - groups: Subclass of AvdIndexedList with `GroupsItem` items. Primary key is `group` (`str`). - report_interval: Time interval between unsolicited reports. - access_lists: - Non-standard Access List name. + class DirectionBoth(AvdList[DirectionBothItem]): + """Subclass of AvdList with `DirectionBothItem` items.""" - Subclass of AvdIndexedList with `AccessListsItem` items. Primary key - is `name` (`str`). - version: IGMP version on IGMP host-proxy interface. - _custom_data: _custom_data + DirectionBoth._item_type = DirectionBothItem - """ + _fields: ClassVar[dict] = { + "in_required": {"type": bool}, + "out_required": {"type": bool}, + "direction_in": {"type": DirectionIn}, + "direction_out": {"type": DirectionOut}, + "direction_both": {"type": DirectionBoth}, + "_custom_data": {"type": dict}, + } + in_required: bool | None + """Drop the ingress traffic that do not match any VLAN mapping.""" + out_required: bool | None + """Drop the egress traffic that do not match any VLAN mapping.""" + direction_in: DirectionIn + """ + Map ingress traffic only. - class Sflow(AvdModel): - """Subclass of AvdModel.""" + Subclass of AvdList with `DirectionInItem` items. + """ + direction_out: DirectionOut + """ + Map egress traffic only. - class Egress(AvdModel): - """Subclass of AvdModel.""" + Subclass of AvdList with `DirectionOutItem` items. + """ + direction_both: DirectionBoth + """ + Map both egress and ingress traffic. - _fields: ClassVar[dict] = {"enable": {"type": bool}, "unmodified_enable": {"type": bool}, "_custom_data": {"type": dict}} - enable: bool | None - unmodified_enable: bool | None + Subclass of AvdList with `DirectionBothItem` items. + """ _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29581,102 +30765,46 @@ class Egress(AvdModel): def __init__( self, *, - enable: bool | None | UndefinedType = Undefined, - unmodified_enable: bool | None | UndefinedType = Undefined, + in_required: bool | None | UndefinedType = Undefined, + out_required: bool | None | UndefinedType = Undefined, + direction_in: DirectionIn | UndefinedType = Undefined, + direction_out: DirectionOut | UndefinedType = Undefined, + direction_both: DirectionBoth | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - Egress. + VlanTranslations. Subclass of AvdModel. Args: - enable: enable - unmodified_enable: unmodified_enable - _custom_data: _custom_data - - """ - - _fields: ClassVar[dict] = {"enable": {"type": bool}, "egress": {"type": Egress}, "_custom_data": {"type": dict}} - enable: bool | None - egress: Egress - """Subclass of AvdModel.""" - _custom_data: dict[str, Any] - - if TYPE_CHECKING: - - def __init__( - self, - *, - enable: bool | None | UndefinedType = Undefined, - egress: Egress | UndefinedType = Undefined, - _custom_data: dict[str, Any] | UndefinedType = Undefined, - ) -> None: - """ - Sflow. - - - Subclass of AvdModel. - - Args: - enable: enable - egress: Subclass of AvdModel. - _custom_data: _custom_data - - """ - - class Switchport(AvdModel): - """Subclass of AvdModel.""" + in_required: Drop the ingress traffic that do not match any VLAN mapping. + out_required: Drop the egress traffic that do not match any VLAN mapping. + direction_in: + Map ingress traffic only. - class Trunk(AvdModel): - """Subclass of AvdModel.""" + Subclass of AvdList with `DirectionInItem` items. + direction_out: + Map egress traffic only. - class Groups(AvdList[str]): - """Subclass of AvdList with `str` items.""" + Subclass of AvdList with `DirectionOutItem` items. + direction_both: + Map both egress and ingress traffic. - Groups._item_type = str + Subclass of AvdList with `DirectionBothItem` items. + _custom_data: _custom_data - _fields: ClassVar[dict] = { - "allowed_vlan": {"type": str}, - "native_vlan": {"type": int}, - "native_vlan_tag": {"type": bool}, - "private_vlan_secondary": {"type": bool}, - "groups": {"type": Groups}, - "_custom_data": {"type": dict}, - } - allowed_vlan: str | None - """ - VLAN ID or range(s) of VLAN IDs (1-4094). - Warning: This should not be combined with - `port_channel_interfaces[].mode = trunk` and `port_channel_interfaces[].vlans`. - """ - native_vlan: int | None - """ - Set native VLAN when interface is in trunking mode. - Warning: This should not be combined with - `port_channel_interfaces[].native_vlan`. - """ - native_vlan_tag: bool | None - """ - If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence. - Warning: This - should not be combined with `port_channel_interfaces[].native_vlan_tag`. - """ - private_vlan_secondary: bool | None - """ - Enable secondary VLAN mapping for a private vlan. - Warning: This should not be combined with - `port_channel_interfaces[].trunk_private_vlan_secondary`. - """ - groups: Groups - """ - Warning: This should not be combined with `port_channel_interfaces[].trunk_groups`. + """ + class BackupLink(AvdModel): + """Subclass of AvdModel.""" - Subclass of - AvdList with `str` items. - """ + _fields: ClassVar[dict] = {"interface": {"type": str}, "prefer_vlan": {"type": str}, "_custom_data": {"type": dict}} + interface: str + """Backup interface. Example - Ethernet4, Vlan10 etc.""" + prefer_vlan: str | None + """VLANs to carry on the backup interface (1-4094).""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29684,54 +30812,48 @@ class Groups(AvdList[str]): def __init__( self, *, - allowed_vlan: str | None | UndefinedType = Undefined, - native_vlan: int | None | UndefinedType = Undefined, - native_vlan_tag: bool | None | UndefinedType = Undefined, - private_vlan_secondary: bool | None | UndefinedType = Undefined, - groups: Groups | UndefinedType = Undefined, + interface: str | UndefinedType = Undefined, + prefer_vlan: str | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - Trunk. + BackupLink. Subclass of AvdModel. Args: - allowed_vlan: - VLAN ID or range(s) of VLAN IDs (1-4094). - Warning: This should not be combined with - `port_channel_interfaces[].mode = trunk` and `port_channel_interfaces[].vlans`. - native_vlan: - Set native VLAN when interface is in trunking mode. - Warning: This should not be combined with - `port_channel_interfaces[].native_vlan`. - native_vlan_tag: - If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence. - Warning: This - should not be combined with `port_channel_interfaces[].native_vlan_tag`. - private_vlan_secondary: - Enable secondary VLAN mapping for a private vlan. - Warning: This should not be combined with - `port_channel_interfaces[].trunk_private_vlan_secondary`. - groups: - Warning: This should not be combined with `port_channel_interfaces[].trunk_groups`. - - - Subclass of - AvdList with `str` items. + interface: Backup interface. Example - Ethernet4, Vlan10 etc. + prefer_vlan: VLANs to carry on the backup interface (1-4094). _custom_data: _custom_data """ - class Phone(AvdModel): + class Backup(AvdModel): """Subclass of AvdModel.""" - _fields: ClassVar[dict] = {"vlan": {"type": int}, "trunk": {"type": str}, "_custom_data": {"type": dict}} - vlan: int | None - """Warning: This should not be combined with `port_channel_interfaces[].phone.vlan`.""" - trunk: Literal["tagged", "tagged phone", "untagged", "untagged phone"] | None - """Warning: This should not be combined with `port_channel_interfaces[].phone.trunk`""" + _fields: ClassVar[dict] = { + "dest_macaddr": {"type": str}, + "initial_mac_move_delay": {"type": int}, + "mac_move_burst": {"type": int}, + "mac_move_burst_interval": {"type": int}, + "preemption_delay": {"type": int}, + "_custom_data": {"type": dict}, + } + dest_macaddr: str | None + """ + Destination MAC address for MAC move updates. + The mac address should be multicast or broadcast. + Example: 01:00:00:00:00:00 + """ + initial_mac_move_delay: int | None + """Initial MAC move delay in milliseconds.""" + mac_move_burst: int | None + """Size of MAC move bursts.""" + mac_move_burst_interval: int | None + """MAC move burst interval in milliseconds.""" + preemption_delay: int | None + """Preemption delay in milliseconds.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29739,30 +30861,173 @@ class Phone(AvdModel): def __init__( self, *, - vlan: int | None | UndefinedType = Undefined, - trunk: Literal["tagged", "tagged phone", "untagged", "untagged phone"] | None | UndefinedType = Undefined, + dest_macaddr: str | None | UndefinedType = Undefined, + initial_mac_move_delay: int | None | UndefinedType = Undefined, + mac_move_burst: int | None | UndefinedType = Undefined, + mac_move_burst_interval: int | None | UndefinedType = Undefined, + preemption_delay: int | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - Phone. + Backup. Subclass of AvdModel. Args: - vlan: Warning: This should not be combined with `port_channel_interfaces[].phone.vlan`. - trunk: Warning: This should not be combined with `port_channel_interfaces[].phone.trunk` + dest_macaddr: + Destination MAC address for MAC move updates. + The mac address should be multicast or broadcast. + Example: 01:00:00:00:00:00 + initial_mac_move_delay: Initial MAC move delay in milliseconds. + mac_move_burst: Size of MAC move bursts. + mac_move_burst_interval: MAC move burst interval in milliseconds. + preemption_delay: Preemption delay in milliseconds. _custom_data: _custom_data """ - class Dot1q(AvdModel): + class PortSecurity(AvdModel): """Subclass of AvdModel.""" - _fields: ClassVar[dict] = {"ethertype": {"type": int}, "vlan_tag": {"type": str}, "_custom_data": {"type": dict}} - ethertype: int | None - """Ethertype/TPID (Tag Protocol IDentifier) for VLAN tagged frames.""" - vlan_tag: Literal["disallowed", "required"] | None + class MacAddressMaximum(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"disabled": {"type": bool}, "limit": {"type": int}, "_custom_data": {"type": dict}} + disabled: bool | None + """Disable port level check for port security (only in violation 'shutdown' mode).""" + limit: int | None + """MAC address limit.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + disabled: bool | None | UndefinedType = Undefined, + limit: int | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + MacAddressMaximum. + + + Subclass of AvdModel. + + Args: + disabled: Disable port level check for port security (only in violation 'shutdown' mode). + limit: MAC address limit. + _custom_data: _custom_data + + """ + + class Violation(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"mode": {"type": str}, "protect_log": {"type": bool}, "_custom_data": {"type": dict}} + mode: Literal["shutdown", "protect"] | None + """Configure port security mode.""" + protect_log: bool | None + """Log new addresses seen after limit is reached in protect mode.""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + mode: Literal["shutdown", "protect"] | None | UndefinedType = Undefined, + protect_log: bool | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Violation. + + + Subclass of AvdModel. + + Args: + mode: Configure port security mode. + protect_log: Log new addresses seen after limit is reached in protect mode. + _custom_data: _custom_data + + """ + + class VlansItem(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = {"range": {"type": str}, "mac_address_maximum": {"type": int}, "_custom_data": {"type": dict}} + range: str + """ + VLAN ID or range(s) of VLAN IDs, <1-4094>. + Example: + - 3 + - 1,3 + - 1-10 + """ + mac_address_maximum: int | None + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + range: str | UndefinedType = Undefined, + mac_address_maximum: int | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + VlansItem. + + + Subclass of AvdModel. + + Args: + range: + VLAN ID or range(s) of VLAN IDs, <1-4094>. + Example: # fmt: skip + - 3 + - 1,3 + - 1-10 + mac_address_maximum: mac_address_maximum + _custom_data: _custom_data + + """ + + class Vlans(AvdIndexedList[str, VlansItem]): + """Subclass of AvdIndexedList with `VlansItem` items. Primary key is `range` (`str`).""" + + _primary_key: ClassVar[str] = "range" + + Vlans._item_type = VlansItem + + _fields: ClassVar[dict] = { + "enabled": {"type": bool}, + "mac_address_maximum": {"type": MacAddressMaximum}, + "violation": {"type": Violation}, + "vlan_default_mac_address_maximum": {"type": int}, + "vlans": {"type": Vlans}, + "_custom_data": {"type": dict}, + } + enabled: bool | None + mac_address_maximum: MacAddressMaximum + """ + Maximum number of MAC addresses allowed on the interface. + + Subclass of AvdModel. + """ + violation: Violation + """ + Configure violation mode (shutdown or protect), EOS default is 'shutdown'. + + Subclass of AvdModel. + """ + vlan_default_mac_address_maximum: int | None + """Default maximum MAC addresses for all VLANs on this interface.""" + vlans: Vlans + """Subclass of AvdIndexedList with `VlansItem` items. Primary key is `range` (`str`).""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29770,45 +31035,81 @@ class Dot1q(AvdModel): def __init__( self, *, - ethertype: int | None | UndefinedType = Undefined, - vlan_tag: Literal["disallowed", "required"] | None | UndefinedType = Undefined, + enabled: bool | None | UndefinedType = Undefined, + mac_address_maximum: MacAddressMaximum | UndefinedType = Undefined, + violation: Violation | UndefinedType = Undefined, + vlan_default_mac_address_maximum: int | None | UndefinedType = Undefined, + vlans: Vlans | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - Dot1q. + PortSecurity. Subclass of AvdModel. Args: - ethertype: Ethertype/TPID (Tag Protocol IDentifier) for VLAN tagged frames. - vlan_tag: vlan_tag + enabled: enabled + mac_address_maximum: + Maximum number of MAC addresses allowed on the interface. + + Subclass of AvdModel. + violation: + Configure violation mode (shutdown or protect), EOS default is 'shutdown'. + + Subclass of AvdModel. + vlan_default_mac_address_maximum: Default maximum MAC addresses for all VLANs on this interface. + vlans: Subclass of AvdIndexedList with `VlansItem` items. Primary key is `range` (`str`). _custom_data: _custom_data """ - class VlanTranslations(AvdModel): + class Tap(AvdModel): """Subclass of AvdModel.""" - class DirectionInItem(AvdModel): + class Default(AvdModel): """Subclass of AvdModel.""" + class Groups(AvdList[str]): + """Subclass of AvdList with `str` items.""" + + Groups._item_type = str + + class Interfaces(AvdList[str]): + """Subclass of AvdList with `str` items.""" + + Interfaces._item_type = str + + class NexthopGroups(AvdList[str]): + """Subclass of AvdList with `str` items.""" + + NexthopGroups._item_type = str + _fields: ClassVar[dict] = { - "field_from": {"type": str}, - "to": {"type": int}, - "dot1q_tunnel": {"type": bool}, - "inner_vlan_from": {"type": int}, + "groups": {"type": Groups}, + "interfaces": {"type": Interfaces}, + "nexthop_groups": {"type": NexthopGroups}, "_custom_data": {"type": dict}, } - _field_to_key_map: ClassVar[dict] = {"field_from": "from"} - _key_to_field_map: ClassVar[dict] = {"from": "field_from"} - field_from: str | None - """VLAN ID or range of VLAN IDs to map from. Range 1-4094.""" - to: int | None - """VLAN ID to map to.""" - dot1q_tunnel: bool | None - inner_vlan_from: int | None - """Inner VLAN ID to map from.""" + groups: Groups + """ + Tap group names for the interface. + + Subclass of AvdList with `str` items. + """ + interfaces: Interfaces + """ + Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + + Subclass of AvdList with + `str` items. + """ + nexthop_groups: NexthopGroups + """ + Default nexthop-group names. + + Subclass of AvdList with `str` items. + """ _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29816,56 +31117,43 @@ class DirectionInItem(AvdModel): def __init__( self, *, - field_from: str | None | UndefinedType = Undefined, - to: int | None | UndefinedType = Undefined, - dot1q_tunnel: bool | None | UndefinedType = Undefined, - inner_vlan_from: int | None | UndefinedType = Undefined, + groups: Groups | UndefinedType = Undefined, + interfaces: Interfaces | UndefinedType = Undefined, + nexthop_groups: NexthopGroups | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - DirectionInItem. + Default. Subclass of AvdModel. Args: - field_from: VLAN ID or range of VLAN IDs to map from. Range 1-4094. - to: VLAN ID to map to. - dot1q_tunnel: dot1q_tunnel - inner_vlan_from: Inner VLAN ID to map from. - _custom_data: _custom_data + groups: + Tap group names for the interface. - """ + Subclass of AvdList with `str` items. + interfaces: + Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. - class DirectionIn(AvdList[DirectionInItem]): - """Subclass of AvdList with `DirectionInItem` items.""" + Subclass of AvdList with + `str` items. + nexthop_groups: + Default nexthop-group names. - DirectionIn._item_type = DirectionInItem + Subclass of AvdList with `str` items. + _custom_data: _custom_data - class DirectionOutItem(AvdModel): + """ + + class Identity(AvdModel): """Subclass of AvdModel.""" - _fields: ClassVar[dict] = { - "field_from": {"type": str}, - "to": {"type": int}, - "dot1q_tunnel_to": {"type": str}, - "inner_vlan_to": {"type": int}, - "_custom_data": {"type": dict}, - } - _field_to_key_map: ClassVar[dict] = {"field_from": "from"} - _key_to_field_map: ClassVar[dict] = {"from": "field_from"} - field_from: str - """VLAN ID or range of VLAN IDs to map from. Range 1-4094.""" - to: int | None - """VLAN ID to map to.""" - dot1q_tunnel_to: str | None - """ - VLAN ID or range of VLAN IDs or "all". Range 1-4094. - This takes precedence over `to` and - `inner_vlan_to`. - """ - inner_vlan_to: int | None - """Inner VLAN ID to map to.""" + _fields: ClassVar[dict] = {"id": {"type": int}, "inner_vlan": {"type": int}, "_custom_data": {"type": dict}} + id: int | None + """Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535).""" + inner_vlan: int | None + """Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094).""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29873,61 +31161,62 @@ class DirectionOutItem(AvdModel): def __init__( self, *, - field_from: str | UndefinedType = Undefined, - to: int | None | UndefinedType = Undefined, - dot1q_tunnel_to: str | None | UndefinedType = Undefined, - inner_vlan_to: int | None | UndefinedType = Undefined, + id: int | None | UndefinedType = Undefined, + inner_vlan: int | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - DirectionOutItem. + Identity. Subclass of AvdModel. Args: - field_from: VLAN ID or range of VLAN IDs to map from. Range 1-4094. - to: VLAN ID to map to. - dot1q_tunnel_to: - VLAN ID or range of VLAN IDs or "all". Range 1-4094. - This takes precedence over `to` and - `inner_vlan_to`. - inner_vlan_to: Inner VLAN ID to map to. + id: Tap port VLAN ID (1-4094) or DzGRE extended ID (1-65535). + inner_vlan: Tap port inner VLAN ID. Only applicable if `id` is a VLAN ID (1-4094). _custom_data: _custom_data """ - class DirectionOut(AvdList[DirectionOutItem]): - """Subclass of AvdList with `DirectionOutItem` items.""" + class Truncation(AvdModel): + """Subclass of AvdModel.""" - DirectionOut._item_type = DirectionOutItem + _fields: ClassVar[dict] = {"enabled": {"type": bool}, "size": {"type": int}, "_custom_data": {"type": dict}} + enabled: bool | None + size: int | None + """Ingress packet truncation size in bytes.""" + _custom_data: dict[str, Any] - class DirectionBothItem(AvdModel): + if TYPE_CHECKING: + + def __init__( + self, + *, + enabled: bool | None | UndefinedType = Undefined, + size: int | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Truncation. + + + Subclass of AvdModel. + + Args: + enabled: enabled + size: Ingress packet truncation size in bytes. + _custom_data: _custom_data + + """ + + class MacAddress(AvdModel): """Subclass of AvdModel.""" - _fields: ClassVar[dict] = { - "field_from": {"type": str}, - "to": {"type": int}, - "dot1q_tunnel": {"type": bool}, - "inner_vlan_from": {"type": int}, - "network": {"type": bool}, - "_custom_data": {"type": dict}, - } - _field_to_key_map: ClassVar[dict] = {"field_from": "from"} - _key_to_field_map: ClassVar[dict] = {"from": "field_from"} - field_from: str - """VLAN ID or range of VLAN IDs to map from. Range 1-4094.""" - to: int - """VLAN ID to map to.""" - dot1q_tunnel: bool | None - inner_vlan_from: int | None - """Inner VLAN ID to map from.""" - network: bool | None - """ - Enable use of network-side VLAN ID. - This setting can only be enabled when `inner_vlan_from` is - defined. - """ + _fields: ClassVar[dict] = {"source": {"type": str}, "destination": {"type": str}, "_custom_data": {"type": dict}} + source: str | None + """MAC address for the source.""" + destination: str | None + """MAC address for the destination.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -29935,163 +31224,349 @@ class DirectionBothItem(AvdModel): def __init__( self, *, - field_from: str | UndefinedType = Undefined, - to: int | UndefinedType = Undefined, - dot1q_tunnel: bool | None | UndefinedType = Undefined, - inner_vlan_from: int | None | UndefinedType = Undefined, - network: bool | None | UndefinedType = Undefined, + source: str | None | UndefinedType = Undefined, + destination: str | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - DirectionBothItem. + MacAddress. Subclass of AvdModel. Args: - field_from: VLAN ID or range of VLAN IDs to map from. Range 1-4094. - to: VLAN ID to map to. - dot1q_tunnel: dot1q_tunnel - inner_vlan_from: Inner VLAN ID to map from. - network: - Enable use of network-side VLAN ID. - This setting can only be enabled when `inner_vlan_from` is - defined. + source: MAC address for the source. + destination: MAC address for the destination. _custom_data: _custom_data """ - class DirectionBoth(AvdList[DirectionBothItem]): - """Subclass of AvdList with `DirectionBothItem` items.""" + class Encapsulation(AvdModel): + """Subclass of AvdModel.""" - DirectionBoth._item_type = DirectionBothItem + class Gre(AvdModel): + """Subclass of AvdModel.""" - _fields: ClassVar[dict] = { - "in_required": {"type": bool}, - "out_required": {"type": bool}, - "direction_in": {"type": DirectionIn}, - "direction_out": {"type": DirectionOut}, - "direction_both": {"type": DirectionBoth}, - "_custom_data": {"type": dict}, - } - in_required: bool | None - """Drop the ingress traffic that do not match any VLAN mapping.""" - out_required: bool | None - """Drop the egress traffic that do not match any VLAN mapping.""" - direction_in: DirectionIn - """ - Map ingress traffic only. + class ProtocolsItem(AvdModel): + """Subclass of AvdModel.""" - Subclass of AvdList with `DirectionInItem` items. - """ - direction_out: DirectionOut - """ - Map egress traffic only. + _fields: ClassVar[dict] = { + "protocol": {"type": str}, + "strip": {"type": bool}, + "feature_header_length": {"type": int}, + "re_encapsulation_ethernet_header": {"type": bool}, + "_custom_data": {"type": dict}, + } + protocol: str + """ + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + """ + strip: bool | None + """This is a required key to strip GRE encapsulation header with protocols.""" + feature_header_length: int | None + """ + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol + 0x0000. + """ + re_encapsulation_ethernet_header: bool | None + """ + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS + running-config for protocol 0x0000. + """ + _custom_data: dict[str, Any] - Subclass of AvdList with `DirectionOutItem` items. - """ - direction_both: DirectionBoth - """ - Map both egress and ingress traffic. + if TYPE_CHECKING: - Subclass of AvdList with `DirectionBothItem` items. - """ - _custom_data: dict[str, Any] + def __init__( + self, + *, + protocol: str | UndefinedType = Undefined, + strip: bool | None | UndefinedType = Undefined, + feature_header_length: int | None | UndefinedType = Undefined, + re_encapsulation_ethernet_header: bool | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + ProtocolsItem. + + + Subclass of AvdModel. + + Args: + protocol: + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + strip: This is a required key to strip GRE encapsulation header with protocols. + feature_header_length: + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol + 0x0000. + re_encapsulation_ethernet_header: + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS + running-config for protocol 0x0000. + _custom_data: _custom_data + + """ + + class Protocols(AvdIndexedList[str, ProtocolsItem]): + """Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`).""" + + _primary_key: ClassVar[str] = "protocol" + + Protocols._item_type = ProtocolsItem + + class DestinationsItem(AvdModel): + """Subclass of AvdModel.""" + + class ProtocolsItem(AvdModel): + """Subclass of AvdModel.""" + + _fields: ClassVar[dict] = { + "protocol": {"type": str}, + "strip": {"type": bool}, + "feature_header_length": {"type": int}, + "re_encapsulation_ethernet_header": {"type": bool}, + "_custom_data": {"type": dict}, + } + protocol: str + """ + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + """ + strip: bool | None + """This is a required key to strip GRE encapsulation header for specific destination with protocols.""" + feature_header_length: int | None + """ + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol + 0x0000. + """ + re_encapsulation_ethernet_header: bool | None + """ + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS + running-config for protocol 0x0000. + """ + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + protocol: str | UndefinedType = Undefined, + strip: bool | None | UndefinedType = Undefined, + feature_header_length: int | None | UndefinedType = Undefined, + re_encapsulation_ethernet_header: bool | None | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + ProtocolsItem. + + + Subclass of AvdModel. + + Args: + protocol: + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF. + strip: This is a required key to strip GRE encapsulation header for specific destination with protocols. + feature_header_length: + Feature header length in bytes. + This setting does not reflect in the EOS running-config for protocol + 0x0000. + re_encapsulation_ethernet_header: + Extra ethernet header to prepend to the terminated packet. + This setting does not reflect in the EOS + running-config for protocol 0x0000. + _custom_data: _custom_data + + """ + + class Protocols(AvdIndexedList[str, ProtocolsItem]): + """Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`).""" + + _primary_key: ClassVar[str] = "protocol" + + Protocols._item_type = ProtocolsItem + + _fields: ClassVar[dict] = { + "destination": {"type": str}, + "source": {"type": str}, + "strip": {"type": bool}, + "protocols": {"type": Protocols}, + "_custom_data": {"type": dict}, + } + destination: str + """Destination IP address of tunnel packets.""" + source: str | None + """ + Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any + GRE packet that matches the `destination` is terminated. + """ + strip: bool | None + """Strip GRE encapsulation header for sepecific destination.""" + protocols: Protocols + """Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`).""" + _custom_data: dict[str, Any] + + if TYPE_CHECKING: + + def __init__( + self, + *, + destination: str | UndefinedType = Undefined, + source: str | None | UndefinedType = Undefined, + strip: bool | None | UndefinedType = Undefined, + protocols: Protocols | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + DestinationsItem. - if TYPE_CHECKING: - def __init__( - self, - *, - in_required: bool | None | UndefinedType = Undefined, - out_required: bool | None | UndefinedType = Undefined, - direction_in: DirectionIn | UndefinedType = Undefined, - direction_out: DirectionOut | UndefinedType = Undefined, - direction_both: DirectionBoth | UndefinedType = Undefined, - _custom_data: dict[str, Any] | UndefinedType = Undefined, - ) -> None: - """ - VlanTranslations. + Subclass of AvdModel. + Args: + destination: Destination IP address of tunnel packets. + source: + Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any + GRE packet that matches the `destination` is terminated. + strip: Strip GRE encapsulation header for sepecific destination. + protocols: Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`). + _custom_data: _custom_data - Subclass of AvdModel. + """ - Args: - in_required: Drop the ingress traffic that do not match any VLAN mapping. - out_required: Drop the egress traffic that do not match any VLAN mapping. - direction_in: - Map ingress traffic only. + class Destinations(AvdIndexedList[str, DestinationsItem]): + """Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`).""" - Subclass of AvdList with `DirectionInItem` items. - direction_out: - Map egress traffic only. + _primary_key: ClassVar[str] = "destination" - Subclass of AvdList with `DirectionOutItem` items. - direction_both: - Map both egress and ingress traffic. + Destinations._item_type = DestinationsItem - Subclass of AvdList with `DirectionBothItem` items. - _custom_data: _custom_data + _fields: ClassVar[dict] = { + "strip": {"type": bool}, + "protocols": {"type": Protocols}, + "destinations": {"type": Destinations}, + "_custom_data": {"type": dict}, + } + strip: bool | None + """Strip GRE encapsulation header for all GRE tunnels.""" + protocols: Protocols + """ + Protocols for all destinations; destination-specific protocols should be set under the + `destinations[].protocols` key. + Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key + is `protocol` (`str`). """ + destinations: Destinations + """Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`).""" + _custom_data: dict[str, Any] - class BackupLink(AvdModel): - """Subclass of AvdModel.""" + if TYPE_CHECKING: - _fields: ClassVar[dict] = {"interface": {"type": str}, "prefer_vlan": {"type": str}, "_custom_data": {"type": dict}} - interface: str - """Backup interface. Example - Ethernet4, Vlan10 etc.""" - prefer_vlan: str | None - """VLANs to carry on the backup interface (1-4094).""" - _custom_data: dict[str, Any] + def __init__( + self, + *, + strip: bool | None | UndefinedType = Undefined, + protocols: Protocols | UndefinedType = Undefined, + destinations: Destinations | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Gre. - if TYPE_CHECKING: - def __init__( - self, - *, - interface: str | UndefinedType = Undefined, - prefer_vlan: str | None | UndefinedType = Undefined, - _custom_data: dict[str, Any] | UndefinedType = Undefined, - ) -> None: - """ - BackupLink. + Subclass of AvdModel. + Args: + strip: Strip GRE encapsulation header for all GRE tunnels. + protocols: + Protocols for all destinations; destination-specific protocols should be set under the + `destinations[].protocols` key. + + Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key + is `protocol` (`str`). + destinations: Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`). + _custom_data: _custom_data - Subclass of AvdModel. + """ - Args: - interface: Backup interface. Example - Ethernet4, Vlan10 etc. - prefer_vlan: VLANs to carry on the backup interface (1-4094). - _custom_data: _custom_data + _fields: ClassVar[dict] = {"vxlan_strip": {"type": bool}, "gre": {"type": Gre}, "_custom_data": {"type": dict}} + vxlan_strip: bool | None + """ + Strip VXLAN encapsulation header. + `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually + exclusive. + `mpls_pop_all` takes precedence. + """ + gre: Gre + """Subclass of AvdModel.""" + _custom_data: dict[str, Any] - """ + if TYPE_CHECKING: + + def __init__( + self, + *, + vxlan_strip: bool | None | UndefinedType = Undefined, + gre: Gre | UndefinedType = Undefined, + _custom_data: dict[str, Any] | UndefinedType = Undefined, + ) -> None: + """ + Encapsulation. - class Backup(AvdModel): - """Subclass of AvdModel.""" + + Subclass of AvdModel. + + Args: + vxlan_strip: + Strip VXLAN encapsulation header. + `encapsulation.vxlan_strip` and `mpls_pop_all` are mutually + exclusive. + `mpls_pop_all` takes precedence. + gre: Subclass of AvdModel. + _custom_data: _custom_data + + """ _fields: ClassVar[dict] = { - "dest_macaddr": {"type": str}, - "initial_mac_move_delay": {"type": int}, - "mac_move_burst": {"type": int}, - "mac_move_burst_interval": {"type": int}, - "preemption_delay": {"type": int}, + "allowed_vlan": {"type": str}, + "default": {"type": Default}, + "identity": {"type": Identity}, + "mpls_pop_all": {"type": bool}, + "native_vlan": {"type": int}, + "truncation": {"type": Truncation}, + "mac_address": {"type": MacAddress}, + "encapsulation": {"type": Encapsulation}, "_custom_data": {"type": dict}, } - dest_macaddr: str | None + allowed_vlan: str | None + """VLAN ID or range(s) of VLAN IDs within range 1-4094.""" + default: Default """ - Destination MAC address for MAC move updates. - The mac address should be multicast or broadcast. - Example: 01:00:00:00:00:00 + Default tap destination config. + + Subclass of AvdModel. """ - initial_mac_move_delay: int | None - """Initial MAC move delay in milliseconds.""" - mac_move_burst: int | None - """Size of MAC move bursts.""" - mac_move_burst_interval: int | None - """MAC move burst interval in milliseconds.""" - preemption_delay: int | None - """Preemption delay in milliseconds.""" + identity: Identity + """Subclass of AvdModel.""" + mpls_pop_all: bool | None + """Pop all MPLS labels.""" + native_vlan: int | None + """Native VLAN ID when interface is in tap mode.""" + truncation: Truncation + """Subclass of AvdModel.""" + mac_address: MacAddress + """Subclass of AvdModel.""" + encapsulation: Encapsulation + """Subclass of AvdModel.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -30099,43 +31574,49 @@ class Backup(AvdModel): def __init__( self, *, - dest_macaddr: str | None | UndefinedType = Undefined, - initial_mac_move_delay: int | None | UndefinedType = Undefined, - mac_move_burst: int | None | UndefinedType = Undefined, - mac_move_burst_interval: int | None | UndefinedType = Undefined, - preemption_delay: int | None | UndefinedType = Undefined, + allowed_vlan: str | None | UndefinedType = Undefined, + default: Default | UndefinedType = Undefined, + identity: Identity | UndefinedType = Undefined, + mpls_pop_all: bool | None | UndefinedType = Undefined, + native_vlan: int | None | UndefinedType = Undefined, + truncation: Truncation | UndefinedType = Undefined, + mac_address: MacAddress | UndefinedType = Undefined, + encapsulation: Encapsulation | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - Backup. + Tap. Subclass of AvdModel. Args: - dest_macaddr: - Destination MAC address for MAC move updates. - The mac address should be multicast or broadcast. - Example: 01:00:00:00:00:00 - initial_mac_move_delay: Initial MAC move delay in milliseconds. - mac_move_burst: Size of MAC move bursts. - mac_move_burst_interval: MAC move burst interval in milliseconds. - preemption_delay: Preemption delay in milliseconds. + allowed_vlan: VLAN ID or range(s) of VLAN IDs within range 1-4094. + default: + Default tap destination config. + + Subclass of AvdModel. + identity: Subclass of AvdModel. + mpls_pop_all: Pop all MPLS labels. + native_vlan: Native VLAN ID when interface is in tap mode. + truncation: Subclass of AvdModel. + mac_address: Subclass of AvdModel. + encapsulation: Subclass of AvdModel. _custom_data: _custom_data """ - class PortSecurity(AvdModel): + class Tool(AvdModel): """Subclass of AvdModel.""" - class MacAddressMaximum(AvdModel): + class Encapsulation(AvdModel): """Subclass of AvdModel.""" - _fields: ClassVar[dict] = {"disabled": {"type": bool}, "limit": {"type": int}, "_custom_data": {"type": dict}} - disabled: bool | None - """Disable port level check for port security (only in violation 'shutdown' mode).""" - limit: int | None - """MAC address limit.""" + _fields: ClassVar[dict] = {"dot1br_strip": {"type": bool}, "vn_tag_strip": {"type": bool}, "_custom_data": {"type": dict}} + dot1br_strip: bool | None + """Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS.""" + vn_tag_strip: bool | None + """Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -30143,31 +31624,35 @@ class MacAddressMaximum(AvdModel): def __init__( self, *, - disabled: bool | None | UndefinedType = Undefined, - limit: int | None | UndefinedType = Undefined, + dot1br_strip: bool | None | UndefinedType = Undefined, + vn_tag_strip: bool | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - MacAddressMaximum. + Encapsulation. Subclass of AvdModel. Args: - disabled: Disable port level check for port security (only in violation 'shutdown' mode). - limit: MAC address limit. + dot1br_strip: Remove a 802.1 BR tag in packet header. 'mpls_pop_all' takes precedence over 'dot1br_strip' in EOS. + vn_tag_strip: Remove a VN-tag in packet header. 'mpls_pop_all' takes precedence over 'vn_tag_strip' in EOS. _custom_data: _custom_data """ - class Violation(AvdModel): + class Identity(AvdModel): """Subclass of AvdModel.""" - _fields: ClassVar[dict] = {"mode": {"type": str}, "protect_log": {"type": bool}, "_custom_data": {"type": dict}} - mode: Literal["shutdown", "protect"] | None - """Configure port security mode.""" - protect_log: bool | None - """Log new addresses seen after limit is reached in protect mode.""" + _fields: ClassVar[dict] = { + "tag": {"type": str}, + "dot1q_dzgre_source": {"type": str}, + "qinq_dzgre_source": {"type": str}, + "_custom_data": {"type": dict}, + } + tag: Literal["dot1q", "qinq"] | None + dot1q_dzgre_source: Literal["policy", "port"] | None + qinq_dzgre_source: Literal["policy inner port", "port inner policy"] | None _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -30175,36 +31660,32 @@ class Violation(AvdModel): def __init__( self, *, - mode: Literal["shutdown", "protect"] | None | UndefinedType = Undefined, - protect_log: bool | None | UndefinedType = Undefined, + tag: Literal["dot1q", "qinq"] | None | UndefinedType = Undefined, + dot1q_dzgre_source: Literal["policy", "port"] | None | UndefinedType = Undefined, + qinq_dzgre_source: Literal["policy inner port", "port inner policy"] | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - Violation. + Identity. Subclass of AvdModel. Args: - mode: Configure port security mode. - protect_log: Log new addresses seen after limit is reached in protect mode. + tag: tag + dot1q_dzgre_source: dot1q_dzgre_source + qinq_dzgre_source: qinq_dzgre_source _custom_data: _custom_data """ - class VlansItem(AvdModel): + class Truncation(AvdModel): """Subclass of AvdModel.""" - _fields: ClassVar[dict] = {"range": {"type": str}, "mac_address_maximum": {"type": int}, "_custom_data": {"type": dict}} - range: str - """ - VLAN ID or range(s) of VLAN IDs, <1-4094>. - Example: - - 3 - - 1,3 - - 1-10 - """ - mac_address_maximum: int | None + _fields: ClassVar[dict] = {"enabled": {"type": bool}, "size": {"type": int}, "_custom_data": {"type": dict}} + enabled: bool | None + size: Literal[160] | None + """Egress packet truncation size in bytes.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -30212,60 +31693,62 @@ class VlansItem(AvdModel): def __init__( self, *, - range: str | UndefinedType = Undefined, - mac_address_maximum: int | None | UndefinedType = Undefined, + enabled: bool | None | UndefinedType = Undefined, + size: Literal[160] | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - VlansItem. + Truncation. Subclass of AvdModel. Args: - range: - VLAN ID or range(s) of VLAN IDs, <1-4094>. - Example: # fmt: skip - - 3 - - 1,3 - - 1-10 - mac_address_maximum: mac_address_maximum + enabled: enabled + size: Egress packet truncation size in bytes. _custom_data: _custom_data """ - class Vlans(AvdIndexedList[str, VlansItem]): - """Subclass of AvdIndexedList with `VlansItem` items. Primary key is `range` (`str`).""" - - _primary_key: ClassVar[str] = "range" + class Groups(AvdList[str]): + """Subclass of AvdList with `str` items.""" - Vlans._item_type = VlansItem + Groups._item_type = str _fields: ClassVar[dict] = { - "enabled": {"type": bool}, - "mac_address_maximum": {"type": MacAddressMaximum}, - "violation": {"type": Violation}, - "vlan_default_mac_address_maximum": {"type": int}, - "vlans": {"type": Vlans}, + "mpls_pop_all": {"type": bool}, + "encapsulation": {"type": Encapsulation}, + "allowed_vlan": {"type": str}, + "identity": {"type": Identity}, + "truncation": {"type": Truncation}, + "groups": {"type": Groups}, + "dot1q_remove_outer_vlan_tag": {"type": str}, + "dzgre_preserve": {"type": bool}, "_custom_data": {"type": dict}, } - enabled: bool | None - mac_address_maximum: MacAddressMaximum + mpls_pop_all: bool | None + """Pop all MPLS labels.""" + encapsulation: Encapsulation + """Subclass of AvdModel.""" + allowed_vlan: str | None + """VLAN ID or range of VLAN IDs within range 1-4094.""" + identity: Identity + """Subclass of AvdModel.""" + truncation: Truncation + """Subclass of AvdModel.""" + groups: Groups """ - Maximum number of MAC addresses allowed on the interface. + Tool groups for the interface. - Subclass of AvdModel. + Subclass of AvdList with `str` items. """ - violation: Violation + dot1q_remove_outer_vlan_tag: str | None """ - Configure violation mode (shutdown or protect), EOS default is 'shutdown'. - - Subclass of AvdModel. + Indices of vlan tags to be removed. + Range: 1-2 """ - vlan_default_mac_address_maximum: int | None - """Default maximum MAC addresses for all VLANs on this interface.""" - vlans: Vlans - """Subclass of AvdIndexedList with `VlansItem` items. Primary key is `range` (`str`).""" + dzgre_preserve: bool | None + """Preserve the DzGRE header.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -30273,31 +31756,36 @@ class Vlans(AvdIndexedList[str, VlansItem]): def __init__( self, *, - enabled: bool | None | UndefinedType = Undefined, - mac_address_maximum: MacAddressMaximum | UndefinedType = Undefined, - violation: Violation | UndefinedType = Undefined, - vlan_default_mac_address_maximum: int | None | UndefinedType = Undefined, - vlans: Vlans | UndefinedType = Undefined, + mpls_pop_all: bool | None | UndefinedType = Undefined, + encapsulation: Encapsulation | UndefinedType = Undefined, + allowed_vlan: str | None | UndefinedType = Undefined, + identity: Identity | UndefinedType = Undefined, + truncation: Truncation | UndefinedType = Undefined, + groups: Groups | UndefinedType = Undefined, + dot1q_remove_outer_vlan_tag: str | None | UndefinedType = Undefined, + dzgre_preserve: bool | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ - PortSecurity. + Tool. Subclass of AvdModel. Args: - enabled: enabled - mac_address_maximum: - Maximum number of MAC addresses allowed on the interface. - - Subclass of AvdModel. - violation: - Configure violation mode (shutdown or protect), EOS default is 'shutdown'. + mpls_pop_all: Pop all MPLS labels. + encapsulation: Subclass of AvdModel. + allowed_vlan: VLAN ID or range of VLAN IDs within range 1-4094. + identity: Subclass of AvdModel. + truncation: Subclass of AvdModel. + groups: + Tool groups for the interface. - Subclass of AvdModel. - vlan_default_mac_address_maximum: Default maximum MAC addresses for all VLANs on this interface. - vlans: Subclass of AvdIndexedList with `VlansItem` items. Primary key is `range` (`str`). + Subclass of AvdList with `str` items. + dot1q_remove_outer_vlan_tag: + Indices of vlan tags to be removed. + Range: 1-2 + dzgre_preserve: Preserve the DzGRE header. _custom_data: _custom_data """ @@ -30316,6 +31804,8 @@ def __init__( "backup_link": {"type": BackupLink}, "backup": {"type": Backup}, "port_security": {"type": PortSecurity}, + "tap": {"type": Tap}, + "tool": {"type": Tool}, "_custom_data": {"type": dict}, } enabled: bool | None @@ -30365,6 +31855,24 @@ def __init__( """ port_security: PortSecurity """Subclass of AvdModel.""" + tap: Tap + """ + In tap mode, the interface operates as a tap port. + Tap ports receive traffic for replication on one + or more tool ports. + This setting applies only to parent interfaces. + + Subclass of AvdModel. + """ + tool: Tool + """ + In tool mode, the interface operates as a tool port. + Tool ports replicate traffic received by tap + ports. + This setting applies only to parent interfaces. + + Subclass of AvdModel. + """ _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -30385,6 +31893,8 @@ def __init__( backup_link: BackupLink | UndefinedType = Undefined, backup: Backup | UndefinedType = Undefined, port_security: PortSecurity | UndefinedType = Undefined, + tap: Tap | UndefinedType = Undefined, + tool: Tool | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ @@ -30424,6 +31934,20 @@ def __init__( Subclass of AvdModel. port_security: Subclass of AvdModel. + tap: + In tap mode, the interface operates as a tap port. + Tap ports receive traffic for replication on one + or more tool ports. + This setting applies only to parent interfaces. + + Subclass of AvdModel. + tool: + In tool mode, the interface operates as a tool port. + Tool ports replicate traffic received by tap + ports. + This setting applies only to parent interfaces. + + Subclass of AvdModel. _custom_data: _custom_data """ From 2514797c3b1b264e44f42f4cc55f24efc867164a Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Thu, 28 Nov 2024 13:15:57 +0530 Subject: [PATCH 25/32] fix spelling --- .../eos_cli_config_gen/docs/tables/ethernet-interfaces.md | 4 ++-- .../docs/tables/port-channel-interfaces.md | 4 ++-- python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py | 8 ++++---- .../schema/eos_cli_config_gen.schema.yml | 2 +- .../schema_fragments/ethernet_interfaces.schema.yml | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) 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 93bd8825049..0d30083a8f7 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 @@ -580,7 +580,7 @@ | [            destinations](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | | [              - destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | | [                source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | - | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for sepecific destination. | + | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for specific destination. | | [                protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | | [                  - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | | [                    strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | @@ -1867,7 +1867,7 @@ # Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. source: - # Strip GRE encapsulation header for sepecific destination. + # Strip GRE encapsulation header for specific destination. strip: protocols: 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 7c6948b14a0..e296443d585 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 @@ -405,7 +405,7 @@ | [            destinations](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | | [              - destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | | [                source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | - | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for sepecific destination. | + | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for specific destination. | | [                protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | | [                  - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | | [                    strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | @@ -1352,7 +1352,7 @@ # Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. source: - # Strip GRE encapsulation header for sepecific destination. + # Strip GRE encapsulation header for specific destination. strip: protocols: 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 898537cc6b9..8e03db32633 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py @@ -11662,7 +11662,7 @@ class Protocols(AvdIndexedList[str, ProtocolsItem]): GRE packet that matches the `destination` is terminated. """ strip: bool | None - """Strip GRE encapsulation header for sepecific destination.""" + """Strip GRE encapsulation header for specific destination.""" protocols: Protocols """Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`).""" _custom_data: dict[str, Any] @@ -11689,7 +11689,7 @@ def __init__( source: Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. - strip: Strip GRE encapsulation header for sepecific destination. + strip: Strip GRE encapsulation header for specific destination. protocols: Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`). _custom_data: _custom_data @@ -31409,7 +31409,7 @@ class Protocols(AvdIndexedList[str, ProtocolsItem]): GRE packet that matches the `destination` is terminated. """ strip: bool | None - """Strip GRE encapsulation header for sepecific destination.""" + """Strip GRE encapsulation header for specific destination.""" protocols: Protocols """Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`).""" _custom_data: dict[str, Any] @@ -31436,7 +31436,7 @@ def __init__( source: Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. - strip: Strip GRE encapsulation header for sepecific destination. + strip: Strip GRE encapsulation header for specific destination. protocols: Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`). _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 3f7475e576d..e3267157984 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 @@ -4292,7 +4292,7 @@ keys: type: str strip: type: bool - description: Strip GRE encapsulation header for sepecific + description: Strip GRE encapsulation header for specific destination. protocols: type: list 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 6f7426c1a12..173598dd008 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 @@ -2098,7 +2098,7 @@ keys: type: str strip: type: bool - description: Strip GRE encapsulation header for sepecific destination. + description: Strip GRE encapsulation header for specific destination. protocols: type: list primary_key: protocol From 419c9e4d366b6be6910327b9e95e9686af4a237d Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Wed, 4 Dec 2024 17:51:44 +0530 Subject: [PATCH 26/32] fixing protocol range --- .../documentation/devices/host1.md | 28 +++++++++---------- .../intended/configs/host1.cfg | 28 +++++++++---------- .../host_vars/host1/ethernet-interfaces.yml | 16 +++++------ .../host1/port-channel-interfaces.yml | 13 +++++---- .../docs/tables/ethernet-interfaces.md | 8 +++--- .../docs/tables/port-channel-interfaces.md | 8 +++--- .../_eos_cli_config_gen/schema/__init__.py | 24 ++++++++++------ .../schema/eos_cli_config_gen.schema.yml | 6 ++-- .../ethernet_interfaces.schema.yml | 4 +-- 9 files changed, 73 insertions(+), 62 deletions(-) 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 d1b6eec6302..3e864912b4d 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 @@ -3968,16 +3968,16 @@ interface Ethernet82 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap mpls pop all - switchport tap encapsulation gre protocol 0x0001 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre protocol 0x0004 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x1 strip + switchport tap encapsulation gre protocol 0x2 feature header length 3 strip + switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x4 strip re-encapsulation ethernet switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0 strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0012 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x10 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x11 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x12 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip @@ -4726,15 +4726,15 @@ interface Port-Channel133 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap mpls pop all - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre protocol 0x0010 strip + switchport tap encapsulation gre protocol 0x2 feature header length 3 strip + switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x10 strip switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0 strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0002 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x1 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x2 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip 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 4d295d49d02..fe6d198a674 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 @@ -1655,15 +1655,15 @@ interface Port-Channel133 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap mpls pop all - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre protocol 0x0010 strip + switchport tap encapsulation gre protocol 0x2 feature header length 3 strip + switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x10 strip switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0 strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0001 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0002 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x1 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x2 feature header length 2 strip re-encapsulation ethernet switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -2623,16 +2623,16 @@ interface Ethernet82 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab switchport tap mpls pop all - switchport tap encapsulation gre protocol 0x0001 strip - switchport tap encapsulation gre protocol 0x0002 feature header length 3 strip - switchport tap encapsulation gre protocol 0x0003 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre protocol 0x0004 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x1 strip + switchport tap encapsulation gre protocol 0x2 feature header length 3 strip + switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x4 strip re-encapsulation ethernet switchport tap encapsulation gre strip - switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0 strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0010 strip - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0011 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre destination 2.1.1.2 protocol 0x0012 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x10 strip + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x11 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre destination 2.1.1.2 protocol 0x12 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip switchport tool mpls pop all switchport tool encapsulation vn-tag strip 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 ac425eb7988..a70ef17f809 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 @@ -1797,34 +1797,34 @@ ethernet_interfaces: - destination: 1.1.1.1 source: 1.1.1.2 protocols: - - protocol: "0x0000" + - protocol: "0x0" strip: true strip: true - destination: 2.1.1.2 protocols: - - protocol: "0x0010" + - protocol: "0x10" strip: true - - protocol: "0x0011" + - protocol: "0x11" feature_header_length: 2 re_encapsulation_ethernet_header: true strip: true - - protocol: "0x0012" + - protocol: "0x12" re_encapsulation_ethernet_header: true strip: true - destination: 2.1.1.3 source: 2.1.1.4 strip: true protocols: - - protocol: "0x0001" + - protocol: "0x1" strip: true - - protocol: "0x0002" + - protocol: "0x2" feature_header_length: 3 strip: true - - protocol: "0x0003" + - protocol: "0x3" feature_header_length: 2 re_encapsulation_ethernet_header: true strip: true - - protocol: "0x0004" + - protocol: "0x4" re_encapsulation_ethernet_header: true strip: true 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 ed29b8c7401..1931180c79f 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 @@ -935,14 +935,15 @@ port_channel_interfaces: - destination: 1.1.1.1 source: 1.1.1.2 protocols: - - protocol: "0x0000" + # the protocol value must be enclosed in quotes + - protocol: "0x0" strip: true strip: true - destination: 2.1.1.2 protocols: - - protocol: "0x0001" + - protocol: "0x1" strip: true - - protocol: "0x0002" + - protocol: "0x2" feature_header_length: 2 re_encapsulation_ethernet_header: true strip: true @@ -950,12 +951,12 @@ port_channel_interfaces: source: 1.1.1.4 strip: true protocols: - - protocol: "0x0010" + - protocol: "0x10" strip: true - - protocol: "0x0002" + - protocol: "0x2" feature_header_length: 3 strip: true - - protocol: "0x0003" + - protocol: "0x3" feature_header_length: 2 re_encapsulation_ethernet_header: true strip: true 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 0d30083a8f7..c0f4146337c 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 @@ -573,7 +573,7 @@ | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | | [            strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header for all GRE tunnels. | | [            protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | - | [              - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [              - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". | | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | | [                feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | @@ -582,7 +582,7 @@ | [                source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for specific destination. | | [                protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | - | [                  - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                  - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". | | [                    strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | | [                    feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                    re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | @@ -1846,7 +1846,7 @@ protocols: # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF. + # Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". - protocol: # This is a required key to strip GRE encapsulation header with protocols. @@ -1872,7 +1872,7 @@ protocols: # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF. + # Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". - protocol: # This is a required key to strip GRE encapsulation header for specific destination with protocols. 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 e296443d585..5472734e0d7 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 @@ -398,7 +398,7 @@ | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | | [            strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.strip") | Boolean | | | | Strip GRE encapsulation header for all GRE tunnels. | | [            protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | - | [              - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [              - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". | | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | | [                feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | @@ -407,7 +407,7 @@ | [                source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for specific destination. | | [                protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | - | [                  - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF. | + | [                  - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". | | [                    strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | | [                    feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | | [                    re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | @@ -1331,7 +1331,7 @@ protocols: # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF. + # Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". - protocol: # This is a required key to strip GRE encapsulation header with protocols. @@ -1357,7 +1357,7 @@ protocols: # Protocol type in GRE header. - # Protocol range: 0x0000-0xFFFF. + # Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". - protocol: # This is a required key to strip GRE encapsulation header for specific destination with protocols. 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 8e03db32633..a2e924f2184 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py @@ -11513,7 +11513,8 @@ class ProtocolsItem(AvdModel): protocol: str """ Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., + "0x0". """ strip: bool | None """This is a required key to strip GRE encapsulation header with protocols.""" @@ -11551,7 +11552,8 @@ def __init__( Args: protocol: Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., + "0x0". strip: This is a required key to strip GRE encapsulation header with protocols. feature_header_length: Feature header length in bytes. @@ -11588,7 +11590,8 @@ class ProtocolsItem(AvdModel): protocol: str """ Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., + "0x0". """ strip: bool | None """This is a required key to strip GRE encapsulation header for specific destination with protocols.""" @@ -11626,7 +11629,8 @@ def __init__( Args: protocol: Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., + "0x0". strip: This is a required key to strip GRE encapsulation header for specific destination with protocols. feature_header_length: Feature header length in bytes. @@ -31260,7 +31264,8 @@ class ProtocolsItem(AvdModel): protocol: str """ Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., + "0x0". """ strip: bool | None """This is a required key to strip GRE encapsulation header with protocols.""" @@ -31298,7 +31303,8 @@ def __init__( Args: protocol: Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., + "0x0". strip: This is a required key to strip GRE encapsulation header with protocols. feature_header_length: Feature header length in bytes. @@ -31335,7 +31341,8 @@ class ProtocolsItem(AvdModel): protocol: str """ Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., + "0x0". """ strip: bool | None """This is a required key to strip GRE encapsulation header for specific destination with protocols.""" @@ -31373,7 +31380,8 @@ def __init__( Args: protocol: Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., + "0x0". strip: This is a required key to strip GRE encapsulation header for specific destination with protocols. feature_header_length: Feature header length in bytes. 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 e3267157984..02741385cad 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 @@ -4253,7 +4253,8 @@ keys: type: str description: 'Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF.' + Valid range: 0x0-0xFFFF. The value must be enclosed + in quotes, e.g., "0x0".' strip: type: bool description: This is a required key to strip GRE encapsulation @@ -4304,7 +4305,8 @@ keys: type: str description: 'Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF.' + Valid range: 0x0-0xFFFF. The value must be + enclosed in quotes, e.g., "0x0".' strip: type: bool description: This is a required key to strip 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 173598dd008..5212633d8b5 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 @@ -2065,7 +2065,7 @@ keys: type: str description: |- Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". strip: type: bool description: |- @@ -2109,7 +2109,7 @@ keys: type: str description: |- Protocol type in GRE header. - Protocol range: 0x0000-0xFFFF. + Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". strip: type: bool description: This is a required key to strip GRE encapsulation header for specific destination with protocols. From 54cf2827a7fe81d630a26856531bb9e75f25ac13 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Thu, 5 Dec 2024 14:34:43 +0530 Subject: [PATCH 27/32] Update description for feature header --- .../docs/tables/ethernet-interfaces.md | 16 ++--- .../docs/tables/port-channel-interfaces.md | 16 ++--- .../_eos_cli_config_gen/schema/__init__.py | 64 +++++++++---------- .../schema/eos_cli_config_gen.schema.yml | 16 ++--- .../ethernet_interfaces.schema.yml | 8 +-- 5 files changed, 60 insertions(+), 60 deletions(-) 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 c0f4146337c..ebd7a94fbc6 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 @@ -575,8 +575,8 @@ | [            protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | | [              - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". | | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | - | [                feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | - | [                re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [                feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | + | [                re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | | [            destinations](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | | [              - destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | | [                source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | @@ -584,8 +584,8 @@ | [                protocols](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | | [                  - protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". | | [                    strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | - | [                    feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | - | [                    re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [                    feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | + | [                    re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports.
This setting applies only to parent interfaces. | | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | @@ -1853,11 +1853,11 @@ strip: # Feature header length in bytes. - # This setting does not reflect in the EOS running-config for protocol 0x0000. + # Note: This setting does not appear in the EOS running-config for protocol 0x0. feature_header_length: # Extra ethernet header to prepend to the terminated packet. - # This setting does not reflect in the EOS running-config for protocol 0x0000. + # Note: This setting does not appear in the EOS running-config for protocol 0x0. re_encapsulation_ethernet_header: destinations: @@ -1879,11 +1879,11 @@ strip: # Feature header length in bytes. - # This setting does not reflect in the EOS running-config for protocol 0x0000. + # Note: This setting does not appear in the EOS running-config for protocol 0x0. feature_header_length: # Extra ethernet header to prepend to the terminated packet. - # This setting does not reflect in the EOS running-config for protocol 0x0000. + # Note: This setting does not appear in the EOS running-config for protocol 0x0. re_encapsulation_ethernet_header: # In tool mode, the interface operates as a tool port. 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 e1aabe554a3..9582a47ad38 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 @@ -401,8 +401,8 @@ | [            protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols") | List, items: Dictionary | | | | Protocols for all destinations; destination-specific protocols should be set under the `destinations[].protocols` key. | | [              - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". | | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | - | [                feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | - | [                re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [                feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | + | [                re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | | [            destinations](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | | [              - destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | | [                source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | @@ -410,8 +410,8 @@ | [                protocols](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols") | List, items: Dictionary | | | | | | [                  - protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].protocol") | String | Required, Unique | | | Protocol type in GRE header.
Valid range: 0x0-0xFFFF. The value must be enclosed in quotes, e.g., "0x0". | | [                    strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header for specific destination with protocols. | - | [                    feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
This setting does not reflect in the EOS running-config for protocol 0x0000. | - | [                    re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
This setting does not reflect in the EOS running-config for protocol 0x0000. | + | [                    feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | + | [                    re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | In tool mode, the interface operates as a tool port.
Tool ports replicate traffic received by tap ports.
This setting applies only to parent interfaces. | | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | | [        encapsulation](## "port_channel_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | @@ -1342,11 +1342,11 @@ strip: # Feature header length in bytes. - # This setting does not reflect in the EOS running-config for protocol 0x0000. + # Note: This setting does not appear in the EOS running-config for protocol 0x0. feature_header_length: # Extra ethernet header to prepend to the terminated packet. - # This setting does not reflect in the EOS running-config for protocol 0x0000. + # Note: This setting does not appear in the EOS running-config for protocol 0x0. re_encapsulation_ethernet_header: destinations: @@ -1368,11 +1368,11 @@ strip: # Feature header length in bytes. - # This setting does not reflect in the EOS running-config for protocol 0x0000. + # Note: This setting does not appear in the EOS running-config for protocol 0x0. feature_header_length: # Extra ethernet header to prepend to the terminated packet. - # This setting does not reflect in the EOS running-config for protocol 0x0000. + # Note: This setting does not appear in the EOS running-config for protocol 0x0. re_encapsulation_ethernet_header: # In tool mode, the interface operates as a tool port. 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 2a27e8b45a5..b2aeec84f24 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py @@ -11521,14 +11521,14 @@ class ProtocolsItem(AvdModel): feature_header_length: int | None """ Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol - 0x0000. + Note: This setting does not appear in the EOS running-config for + protocol 0x0. """ re_encapsulation_ethernet_header: bool | None """ Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS - running-config for protocol 0x0000. + Note: This setting does not appear in the + EOS running-config for protocol 0x0. """ _custom_data: dict[str, Any] @@ -11557,12 +11557,12 @@ def __init__( strip: This is a required key to strip GRE encapsulation header with protocols. feature_header_length: Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol - 0x0000. + Note: This setting does not appear in the EOS running-config for + protocol 0x0. re_encapsulation_ethernet_header: Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS - running-config for protocol 0x0000. + Note: This setting does not appear in the + EOS running-config for protocol 0x0. _custom_data: _custom_data """ @@ -11598,14 +11598,14 @@ class ProtocolsItem(AvdModel): feature_header_length: int | None """ Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol - 0x0000. + Note: This setting does not appear in the EOS running-config for + protocol 0x0. """ re_encapsulation_ethernet_header: bool | None """ Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS - running-config for protocol 0x0000. + Note: This setting does not appear in the + EOS running-config for protocol 0x0. """ _custom_data: dict[str, Any] @@ -11634,12 +11634,12 @@ def __init__( strip: This is a required key to strip GRE encapsulation header for specific destination with protocols. feature_header_length: Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol - 0x0000. + Note: This setting does not appear in the EOS running-config for + protocol 0x0. re_encapsulation_ethernet_header: Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS - running-config for protocol 0x0000. + Note: This setting does not appear in the + EOS running-config for protocol 0x0. _custom_data: _custom_data """ @@ -31272,14 +31272,14 @@ class ProtocolsItem(AvdModel): feature_header_length: int | None """ Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol - 0x0000. + Note: This setting does not appear in the EOS running-config for + protocol 0x0. """ re_encapsulation_ethernet_header: bool | None """ Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS - running-config for protocol 0x0000. + Note: This setting does not appear in the + EOS running-config for protocol 0x0. """ _custom_data: dict[str, Any] @@ -31308,12 +31308,12 @@ def __init__( strip: This is a required key to strip GRE encapsulation header with protocols. feature_header_length: Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol - 0x0000. + Note: This setting does not appear in the EOS running-config for + protocol 0x0. re_encapsulation_ethernet_header: Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS - running-config for protocol 0x0000. + Note: This setting does not appear in the + EOS running-config for protocol 0x0. _custom_data: _custom_data """ @@ -31349,14 +31349,14 @@ class ProtocolsItem(AvdModel): feature_header_length: int | None """ Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol - 0x0000. + Note: This setting does not appear in the EOS running-config for + protocol 0x0. """ re_encapsulation_ethernet_header: bool | None """ Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS - running-config for protocol 0x0000. + Note: This setting does not appear in the + EOS running-config for protocol 0x0. """ _custom_data: dict[str, Any] @@ -31385,12 +31385,12 @@ def __init__( strip: This is a required key to strip GRE encapsulation header for specific destination with protocols. feature_header_length: Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol - 0x0000. + Note: This setting does not appear in the EOS running-config for + protocol 0x0. re_encapsulation_ethernet_header: Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS - running-config for protocol 0x0000. + Note: This setting does not appear in the + EOS running-config for protocol 0x0. _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 b90a73032dc..e6271b4217a 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 @@ -4264,8 +4264,8 @@ keys: feature_header_length: description: 'Feature header length in bytes. - This setting does not reflect in the EOS running-config - for protocol 0x0000.' + Note: This setting does not appear in the EOS running-config + for protocol 0x0.' type: int convert_types: - str @@ -4276,8 +4276,8 @@ keys: description: 'Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS running-config - for protocol 0x0000.' + Note: This setting does not appear in the EOS running-config + for protocol 0x0.' destinations: type: list primary_key: destination @@ -4317,8 +4317,8 @@ keys: feature_header_length: description: 'Feature header length in bytes. - This setting does not reflect in the EOS running-config - for protocol 0x0000.' + Note: This setting does not appear in the + EOS running-config for protocol 0x0.' type: int convert_types: - str @@ -4329,8 +4329,8 @@ keys: description: 'Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS running-config - for protocol 0x0000.' + Note: This setting does not appear in the + EOS running-config for protocol 0x0.' tool: description: 'In tool mode, the interface operates as a tool port. 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 5212633d8b5..9aaa2dad6c8 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 @@ -2073,7 +2073,7 @@ keys: feature_header_length: description: |- Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol 0x0000. + Note: This setting does not appear in the EOS running-config for protocol 0x0. type: int convert_types: - str @@ -2083,7 +2083,7 @@ keys: type: bool description: |- Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS running-config for protocol 0x0000. + Note: This setting does not appear in the EOS running-config for protocol 0x0. destinations: type: list primary_key: destination @@ -2116,7 +2116,7 @@ keys: feature_header_length: description: |- Feature header length in bytes. - This setting does not reflect in the EOS running-config for protocol 0x0000. + Note: This setting does not appear in the EOS running-config for protocol 0x0. type: int convert_types: - str @@ -2126,7 +2126,7 @@ keys: type: bool description: |- Extra ethernet header to prepend to the terminated packet. - This setting does not reflect in the EOS running-config for protocol 0x0000. + Note: This setting does not appear in the EOS running-config for protocol 0x0. tool: description: |- In tool mode, the interface operates as a tool port. From 0b95c1d210580a8ed8960b815d76714cd1bdf02f Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Tue, 10 Dec 2024 12:52:57 +0530 Subject: [PATCH 28/32] fix order and add description for gre strip --- .../documentation/devices/host1.md | 4 +-- .../intended/configs/host1.cfg | 4 +-- .../docs/tables/ethernet-interfaces.md | 4 ++- .../docs/tables/port-channel-interfaces.md | 4 ++- .../j2templates/eos/ethernet-interfaces.j2 | 8 ++--- .../eos/port-channel-interfaces.j2 | 8 ++--- .../_eos_cli_config_gen/schema/__init__.py | 30 ++++++++++++++++--- .../schema/eos_cli_config_gen.schema.yml | 2 ++ .../ethernet_interfaces.schema.yml | 2 ++ 9 files changed, 48 insertions(+), 18 deletions(-) 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 74d0b2bbe15..3c8b5035f6a 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 @@ -4755,7 +4755,6 @@ interface Ethernet82 switchport tap native vlan 10 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap mpls pop all switchport tap encapsulation gre protocol 0x1 strip switchport tap encapsulation gre protocol 0x2 feature header length 3 strip switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet @@ -4767,6 +4766,7 @@ interface Ethernet82 switchport tap encapsulation gre destination 2.1.1.2 protocol 0x11 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.2 protocol 0x12 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip + switchport tap mpls pop all switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -5543,7 +5543,6 @@ interface Port-Channel133 switchport tap native vlan 10 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap mpls pop all switchport tap encapsulation gre protocol 0x2 feature header length 3 strip switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre protocol 0x10 strip @@ -5553,6 +5552,7 @@ interface Port-Channel133 switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x1 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x2 feature header length 2 strip re-encapsulation ethernet + switchport tap mpls pop all switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip 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 07ecd7750d6..4433562e336 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 @@ -2169,7 +2169,6 @@ interface Port-Channel133 switchport tap native vlan 10 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap mpls pop all switchport tap encapsulation gre protocol 0x2 feature header length 3 strip switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre protocol 0x10 strip @@ -2179,6 +2178,7 @@ interface Port-Channel133 switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x1 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x2 feature header length 2 strip re-encapsulation ethernet + switchport tap mpls pop all switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip @@ -3188,7 +3188,6 @@ interface Ethernet82 switchport tap native vlan 10 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap mpls pop all switchport tap encapsulation gre protocol 0x1 strip switchport tap encapsulation gre protocol 0x2 feature header length 3 strip switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet @@ -3200,6 +3199,7 @@ interface Ethernet82 switchport tap encapsulation gre destination 2.1.1.2 protocol 0x11 feature header length 2 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.2 protocol 0x12 strip re-encapsulation ethernet switchport tap encapsulation gre destination 2.1.1.3 source 2.1.1.4 strip + switchport tap mpls pop all switchport tool mpls pop all switchport tool encapsulation vn-tag strip switchport tool encapsulation dot1br strip 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 ebd7a94fbc6..0ff3ed8a8e7 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 @@ -577,7 +577,7 @@ | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | | [                feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | | [                re_encapsulation_ethernet_header](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | - | [            destinations](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | + | [            destinations](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | In EOS, `gre.strip` and `destinations.destination/source.strip` (without defining protocols) are mutually exclusive. | | [              - destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | | [                source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | | [                strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for specific destination. | @@ -1859,6 +1859,8 @@ # Extra ethernet header to prepend to the terminated packet. # Note: This setting does not appear in the EOS running-config for protocol 0x0. re_encapsulation_ethernet_header: + + # In EOS, `gre.strip` and `destinations.destination/source.strip` (without defining protocols) are mutually exclusive. destinations: # Destination IP address of tunnel packets. 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 9582a47ad38..8a7bd80b120 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 @@ -403,7 +403,7 @@ | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].strip") | Boolean | | | | This is a required key to strip GRE encapsulation header with protocols. | | [                feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | | [                re_encapsulation_ethernet_header](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocols.[].re_encapsulation_ethernet_header") | Boolean | | | | Extra ethernet header to prepend to the terminated packet.
Note: This setting does not appear in the EOS running-config for protocol 0x0. | - | [            destinations](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | | + | [            destinations](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations") | List, items: Dictionary | | | | In EOS, `gre.strip` and `destinations.destination/source.strip` (without defining protocols) are mutually exclusive. | | [              - destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].destination") | String | Required, Unique | | | Destination IP address of tunnel packets. | | [                source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].source") | String | | | | Source IP address of tunnel packets. Applied only when destination is defined. When not defined; any GRE packet that matches the `destination` is terminated. | | [                strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destinations.[].strip") | Boolean | | | | Strip GRE encapsulation header for specific destination. | @@ -1348,6 +1348,8 @@ # Extra ethernet header to prepend to the terminated packet. # Note: This setting does not appear in the EOS running-config for protocol 0x0. re_encapsulation_ethernet_header: + + # In EOS, `gre.strip` and `destinations.destination/source.strip` (without defining protocols) are mutually exclusive. destinations: # Destination IP address of tunnel packets. 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 66e06b2b7f1..45f2299447b 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 @@ -1008,10 +1008,7 @@ interface {{ ethernet_interface.name }} {% endif %} {{ tap_mac_address_cli }} {% endif %} -{# The position of "mpls_pop_all" does not match the EOS CLI to implement this "elif" with "vxlan_strip" #} -{% if ethernet_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} - switchport tap mpls pop all -{% elif ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} +{% if ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) and ethernet_interface.switchport.tap.mpls_pop_all is not arista.avd.defined(true) %} switchport tap encapsulation vxlan strip {% endif %} {% for protocol in ethernet_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} @@ -1053,6 +1050,9 @@ interface {{ ethernet_interface.name }} {{ tap_encapsulation_cli }} {% endif %} {% endfor %} +{% if ethernet_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} + switchport tap mpls pop all +{% endif %} {% if ethernet_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} switchport tool mpls pop all {% 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 a263c625584..0dfd423ac88 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 @@ -828,10 +828,7 @@ interface {{ port_channel_interface.name }} {% endif %} {{ tap_mac_address_cli }} {% endif %} -{# The position of "mpls_pop_all" does not match the EOS CLI to implement this "elif" with "vxlan_strip" #} -{% if port_channel_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} - switchport tap mpls pop all -{% elif port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} +{% if port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) and port_channel_interface.switchport.tap.mpls_pop_all is not arista.avd.defined(true) %} switchport tap encapsulation vxlan strip {% endif %} {% for protocol in port_channel_interface.switchport.tap.encapsulation.gre.protocols | arista.avd.natural_sort('protocol') %} @@ -873,6 +870,9 @@ interface {{ port_channel_interface.name }} {{ tap_encapsulation_cli }} {% endif %} {% endfor %} +{% if port_channel_interface.switchport.tap.mpls_pop_all is arista.avd.defined(true) %} + switchport tap mpls pop all +{% endif %} {% if port_channel_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} switchport tool mpls pop all {% endif %} 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 b2aeec84f24..eb115c5f28b 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py @@ -11723,7 +11723,13 @@ class Destinations(AvdIndexedList[str, DestinationsItem]): is `protocol` (`str`). """ destinations: Destinations - """Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`).""" + """ + In EOS, `gre.strip` and `destinations.destination/source.strip` (without defining protocols) are + mutually exclusive. + + Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is + `destination` (`str`). + """ _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -11750,7 +11756,12 @@ def __init__( Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`). - destinations: Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`). + destinations: + In EOS, `gre.strip` and `destinations.destination/source.strip` (without defining protocols) are + mutually exclusive. + + Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is + `destination` (`str`). _custom_data: _custom_data """ @@ -31474,7 +31485,13 @@ class Destinations(AvdIndexedList[str, DestinationsItem]): is `protocol` (`str`). """ destinations: Destinations - """Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`).""" + """ + In EOS, `gre.strip` and `destinations.destination/source.strip` (without defining protocols) are + mutually exclusive. + + Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is + `destination` (`str`). + """ _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -31501,7 +31518,12 @@ def __init__( Subclass of AvdIndexedList with `ProtocolsItem` items. Primary key is `protocol` (`str`). - destinations: Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is `destination` (`str`). + destinations: + In EOS, `gre.strip` and `destinations.destination/source.strip` (without defining protocols) are + mutually exclusive. + + Subclass of AvdIndexedList with `DestinationsItem` items. Primary key is + `destination` (`str`). _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 e6271b4217a..05d130b0ac9 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 @@ -4280,6 +4280,8 @@ keys: for protocol 0x0.' destinations: type: list + description: In EOS, `gre.strip` and `destinations.destination/source.strip` + (without defining protocols) are mutually exclusive. primary_key: destination items: type: dict 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 9aaa2dad6c8..95b8a511951 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 @@ -2086,6 +2086,8 @@ keys: Note: This setting does not appear in the EOS running-config for protocol 0x0. destinations: type: list + description: |- + In EOS, `gre.strip` and `destinations.destination/source.strip` (without defining protocols) are mutually exclusive. primary_key: destination items: type: dict From 793fbc0693bd0dc517cbc37e3aeb8f9d8a1a1a14 Mon Sep 17 00:00:00 2001 From: Shivani-gslab <145646625+Shivani-gslab@users.noreply.github.com> Date: Thu, 12 Dec 2024 14:55:21 +0530 Subject: [PATCH 29/32] Apply suggestions Co-authored-by: Guillaume Mulocher --- .../schema/schema_fragments/ethernet_interfaces.schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 95b8a511951..8e04d1aab78 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 @@ -1980,7 +1980,7 @@ keys: items: type: str interfaces: - description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + description: Interfaces like - Ethernet1, InternalRecirc1, Port-Channel1, Recirc-Channel1. type: list items: type: str From 61248204e6123f38d3a15c3d9d25563fa7a40977 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Thu, 12 Dec 2024 14:57:14 +0530 Subject: [PATCH 30/32] pre-commit --- .../docs/tables/ethernet-interfaces.md | 4 ++-- .../docs/tables/port-channel-interfaces.md | 4 ++-- .../_eos_cli_config_gen/schema/__init__.py | 24 +++++++++---------- .../schema/eos_cli_config_gen.schema.yml | 4 ++-- 4 files changed, 18 insertions(+), 18 deletions(-) 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 0ff3ed8a8e7..c500cb6ec57 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 @@ -553,7 +553,7 @@ | [        default](## "ethernet_interfaces.[].switchport.tap.default") | Dictionary | | | | Default tap destination config. | | [          groups](## "ethernet_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.groups.[]") | String | | | | | - | [          interfaces](## "ethernet_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. | + | [          interfaces](## "ethernet_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet1, InternalRecirc1, Port-Channel1, Recirc-Channel1. | | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.interfaces.[]") | String | | | | | | [          nexthop_groups](## "ethernet_interfaces.[].switchport.tap.default.nexthop_groups") | List, items: String | | | | Default nexthop-group names. | | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.nexthop_groups.[]") | String | | | | | @@ -1799,7 +1799,7 @@ groups: - - # Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + # Interfaces like - Ethernet1, InternalRecirc1, Port-Channel1, Recirc-Channel1. interfaces: - 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 8a7bd80b120..cd686825c3b 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 @@ -379,7 +379,7 @@ | [        default](## "port_channel_interfaces.[].switchport.tap.default") | Dictionary | | | | Default tap destination config. | | [          groups](## "port_channel_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.groups.[]") | String | | | | | - | [          interfaces](## "port_channel_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. | + | [          interfaces](## "port_channel_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet1, InternalRecirc1, Port-Channel1, Recirc-Channel1. | | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.interfaces.[]") | String | | | | | | [          nexthop_groups](## "port_channel_interfaces.[].switchport.tap.default.nexthop_groups") | List, items: String | | | | Default nexthop-group names. | | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.nexthop_groups.[]") | String | | | | | @@ -1288,7 +1288,7 @@ groups: - - # Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + # Interfaces like - Ethernet1, InternalRecirc1, Port-Channel1, Recirc-Channel1. interfaces: - 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 eb115c5f28b..708a868dce5 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py @@ -11352,10 +11352,10 @@ class NexthopGroups(AvdList[str]): """ interfaces: Interfaces """ - Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + Interfaces like - Ethernet1, InternalRecirc1, Port-Channel1, Recirc-Channel1. - Subclass of AvdList with - `str` items. + Subclass of AvdList + with `str` items. """ nexthop_groups: NexthopGroups """ @@ -11387,10 +11387,10 @@ def __init__( Subclass of AvdList with `str` items. interfaces: - Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + Interfaces like - Ethernet1, InternalRecirc1, Port-Channel1, Recirc-Channel1. - Subclass of AvdList with - `str` items. + Subclass of AvdList + with `str` items. nexthop_groups: Default nexthop-group names. @@ -31114,10 +31114,10 @@ class NexthopGroups(AvdList[str]): """ interfaces: Interfaces """ - Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + Interfaces like - Ethernet1, InternalRecirc1, Port-Channel1, Recirc-Channel1. - Subclass of AvdList with - `str` items. + Subclass of AvdList + with `str` items. """ nexthop_groups: NexthopGroups """ @@ -31149,10 +31149,10 @@ def __init__( Subclass of AvdList with `str` items. interfaces: - Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + Interfaces like - Ethernet1, InternalRecirc1, Port-Channel1, Recirc-Channel1. - Subclass of AvdList with - `str` items. + Subclass of AvdList + with `str` items. nexthop_groups: Default nexthop-group names. 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 05d130b0ac9..e75d85a8969 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 @@ -4162,8 +4162,8 @@ keys: items: type: str interfaces: - description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, - Recirc-Channel. + description: Interfaces like - Ethernet1, InternalRecirc1, + Port-Channel1, Recirc-Channel1. type: list items: type: str From 79364ae95d7a09326ad38e0d880714a8eab5572b Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 16 Dec 2024 18:31:20 +0530 Subject: [PATCH 31/32] Updated tests --- .../documentation/devices/host1.md | 27 +++--- .../intended/configs/host1.cfg | 27 +++--- .../host_vars/host1/ethernet-interfaces.yml | 39 +++++---- .../host1/port-channel-interfaces.yml | 35 ++++---- .../docs/tables/ethernet-interfaces.md | 12 --- .../docs/tables/port-channel-interfaces.md | 12 --- .../j2templates/eos/ethernet-interfaces.j2 | 7 -- .../eos/port-channel-interfaces.j2 | 10 --- .../_eos_cli_config_gen/schema/__init__.py | 82 ------------------- .../schema/eos_cli_config_gen.schema.yml | 15 ---- .../ethernet_interfaces.schema.yml | 15 ---- 11 files changed, 61 insertions(+), 220 deletions(-) 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 2c2a2542827..c3f7054acd0 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 @@ -4758,11 +4758,6 @@ interface Ethernet82 switchport tap native vlan 10 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap encapsulation gre protocol 0x1 strip - switchport tap encapsulation gre protocol 0x2 feature header length 3 strip - switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre protocol 0x4 strip re-encapsulation ethernet - switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0 strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x10 strip @@ -4778,14 +4773,12 @@ interface Ethernet82 switchport tool identity qinq switchport tool identity dot1q source dzgre port switchport tap truncation 150 - switchport tool truncation switchport tap default group g1 group g2 group g3 switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 switchport tap default interface ethernet4 switchport tap default interface port-channel10 switchport tool group set group1 group2 group3 switchport tool dot1q remove outer 1 - switchport tool dzgre preserve ! interface Ethernet83 description Test_tap_tool @@ -4796,7 +4789,12 @@ interface Ethernet83 switchport tool identity dot1q switchport tool identity qinq source dzgre policy inner port switchport tap truncation - switchport tool truncation 160 +! +interface Ethernet84 + switchport tap encapsulation gre protocol 0x1 strip + switchport tap encapsulation gre protocol 0x2 feature header length 3 strip + switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x4 strip re-encapsulation ethernet ``` ### Port-Channel Interfaces @@ -5547,10 +5545,6 @@ interface Port-Channel133 switchport tap native vlan 10 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap encapsulation gre protocol 0x2 feature header length 3 strip - switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre protocol 0x10 strip - switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0 strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip @@ -5565,24 +5559,27 @@ interface Port-Channel133 switchport tool identity qinq switchport tool identity qinq source dzgre port inner policy switchport tap truncation - switchport tool truncation 160 switchport tap default group g1 group g2 group g3 switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 switchport tap default interface ethernet4 switchport tap default interface port-channel10 switchport tool group set group1 group2 group3 switchport tool dot1q remove outer 1-2 - switchport tool dzgre preserve ! interface Port-Channel134 description Test2_switchport_tap_tool switchport tap identity 3 inner 10 switchport tap mac-address dest 01:00:00:00:00:00 switchport tap encapsulation vxlan strip + switchport tap encapsulation gre strip switchport tool identity dot1q switchport tool identity dot1q source dzgre policy switchport tap truncation 120 - switchport tool truncation +! +interface Port-Channel135 + switchport tap encapsulation gre protocol 0x2 feature header length 3 strip + switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x10 strip ``` ### 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 3d8d06e487f..3c5652b38b5 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 @@ -2172,10 +2172,6 @@ interface Port-Channel133 switchport tap native vlan 10 switchport tap identity 3 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap encapsulation gre protocol 0x2 feature header length 3 strip - switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre protocol 0x10 strip - switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0 strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 1.1.1.3 source 1.1.1.4 strip @@ -2190,24 +2186,27 @@ interface Port-Channel133 switchport tool identity qinq switchport tool identity qinq source dzgre port inner policy switchport tap truncation - switchport tool truncation 160 switchport tap default group g1 group g2 group g3 switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 switchport tap default interface ethernet4 switchport tap default interface port-channel10 switchport tool group set group1 group2 group3 switchport tool dot1q remove outer 1-2 - switchport tool dzgre preserve ! interface Port-Channel134 description Test2_switchport_tap_tool switchport tap identity 3 inner 10 switchport tap mac-address dest 01:00:00:00:00:00 switchport tap encapsulation vxlan strip + switchport tap encapsulation gre strip switchport tool identity dot1q switchport tool identity dot1q source dzgre policy switchport tap truncation 120 - switchport tool truncation +! +interface Port-Channel135 + switchport tap encapsulation gre protocol 0x2 feature header length 3 strip + switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x10 strip ! interface Dps1 description Test DPS Interface @@ -3191,11 +3190,6 @@ interface Ethernet82 switchport tap native vlan 10 switchport tap identity 3 inner 5 switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab - switchport tap encapsulation gre protocol 0x1 strip - switchport tap encapsulation gre protocol 0x2 feature header length 3 strip - switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet - switchport tap encapsulation gre protocol 0x4 strip re-encapsulation ethernet - switchport tap encapsulation gre strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0 strip switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 strip switchport tap encapsulation gre destination 2.1.1.2 protocol 0x10 strip @@ -3211,14 +3205,12 @@ interface Ethernet82 switchport tool identity qinq switchport tool identity dot1q source dzgre port switchport tap truncation 150 - switchport tool truncation switchport tap default group g1 group g2 group g3 switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 switchport tap default interface ethernet4 switchport tap default interface port-channel10 switchport tool group set group1 group2 group3 switchport tool dot1q remove outer 1 - switchport tool dzgre preserve ! interface Ethernet83 description Test_tap_tool @@ -3229,7 +3221,12 @@ interface Ethernet83 switchport tool identity dot1q switchport tool identity qinq source dzgre policy inner port switchport tap truncation - switchport tool truncation 160 +! +interface Ethernet84 + switchport tap encapsulation gre protocol 0x1 strip + switchport tap encapsulation gre protocol 0x2 feature header length 3 strip + switchport tap encapsulation gre protocol 0x3 feature header length 2 strip re-encapsulation ethernet + switchport tap encapsulation gre protocol 0x4 strip re-encapsulation ethernet ! interface Loopback0 description EVPN_Overlay_Peering 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 7ea9cfac60f..3911189f815 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,7 +1874,6 @@ ethernet_interfaces: source: 01:23:45:67:89:ab encapsulation: gre: - strip: true destinations: - destination: 1.1.1.1 source: 1.1.1.2 @@ -1896,19 +1895,6 @@ ethernet_interfaces: - destination: 2.1.1.3 source: 2.1.1.4 strip: true - protocols: - - protocol: "0x1" - strip: true - - protocol: "0x2" - feature_header_length: 3 - strip: true - - protocol: "0x3" - feature_header_length: 2 - re_encapsulation_ethernet_header: true - strip: true - - protocol: "0x4" - re_encapsulation_ethernet_header: true - strip: true tool: mpls_pop_all: true encapsulation: @@ -1918,14 +1904,11 @@ ethernet_interfaces: identity: tag: qinq dot1q_dzgre_source: port - truncation: - enabled: true groups: - group1 - group2 - group3 dot1q_remove_outer_vlan_tag: 1 - dzgre_preserve: true - name: Ethernet83 description: Test_tap_tool @@ -1945,6 +1928,22 @@ ethernet_interfaces: identity: tag: dot1q qinq_dzgre_source: policy inner port - truncation: - enabled: true - size: 160 + + - name: Ethernet84 + switchport: + tap: + encapsulation: + gre: + protocols: + - protocol: "0x1" + strip: true + - protocol: "0x2" + feature_header_length: 3 + strip: true + - protocol: "0x3" + feature_header_length: 2 + re_encapsulation_ethernet_header: true + strip: true + - protocol: "0x4" + re_encapsulation_ethernet_header: true + strip: true 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 332c97f2c67..16709ce88ce 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 @@ -976,7 +976,6 @@ port_channel_interfaces: source: 01:23:45:67:89:ab encapsulation: gre: - strip: true destinations: - destination: 1.1.1.1 source: 1.1.1.2 @@ -996,16 +995,6 @@ port_channel_interfaces: - destination: 1.1.1.3 source: 1.1.1.4 strip: true - protocols: - - protocol: "0x10" - strip: true - - protocol: "0x2" - feature_header_length: 3 - strip: true - - protocol: "0x3" - feature_header_length: 2 - re_encapsulation_ethernet_header: true - strip: true tool: mpls_pop_all: true encapsulation: @@ -1015,15 +1004,11 @@ port_channel_interfaces: identity: tag: qinq qinq_dzgre_source: port inner policy - truncation: - enabled: true - size: 160 groups: - group1 - group2 - group3 dot1q_remove_outer_vlan_tag: 1-2 - dzgre_preserve: true - name: Port-Channel134 description: Test2_switchport_tap_tool @@ -1036,12 +1021,28 @@ port_channel_interfaces: destination: 01:00:00:00:00:00 encapsulation: vxlan_strip: true + gre: + strip: true truncation: enabled: true size: 120 tool: - truncation: - enabled: true identity: tag: dot1q dot1q_dzgre_source: policy + + - name: Port-Channel135 + switchport: + tap: + encapsulation: + gre: + protocols: + - protocol: "0x10" + strip: true + - protocol: "0x2" + feature_header_length: 3 + strip: true + - protocol: "0x3" + feature_header_length: 2 + re_encapsulation_ethernet_header: true + strip: true 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 c500cb6ec57..2222322c542 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 @@ -596,13 +596,9 @@ | [          tag](## "ethernet_interfaces.[].switchport.tool.identity.tag") | String | | | Valid Values:
- dot1q
- qinq | | | [          dot1q_dzgre_source](## "ethernet_interfaces.[].switchport.tool.identity.dot1q_dzgre_source") | String | | | Valid Values:
- policy
- port | | | [          qinq_dzgre_source](## "ethernet_interfaces.[].switchport.tool.identity.qinq_dzgre_source") | String | | | Valid Values:
- policy inner port
- port inner policy | | - | [        truncation](## "ethernet_interfaces.[].switchport.tool.truncation") | Dictionary | | | | | - | [          enabled](## "ethernet_interfaces.[].switchport.tool.truncation.enabled") | Boolean | | | | | - | [          size](## "ethernet_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | | [        groups](## "ethernet_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | | [          - <str>](## "ethernet_interfaces.[].switchport.tool.groups.[]") | String | | | | | | [        dot1q_remove_outer_vlan_tag](## "ethernet_interfaces.[].switchport.tool.dot1q_remove_outer_vlan_tag") | String | | | | Indices of vlan tags to be removed.
Range: 1-2 | - | [        dzgre_preserve](## "ethernet_interfaces.[].switchport.tool.dzgre_preserve") | Boolean | | | | Preserve the DzGRE header. | | [    eos_cli](## "ethernet_interfaces.[].eos_cli") | String | | | | Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. | === "YAML" @@ -1909,11 +1905,6 @@ tag: dot1q_dzgre_source: qinq_dzgre_source: - truncation: - enabled: - - # Egress packet truncation size in bytes. - size: # Tool groups for the interface. groups: @@ -1923,9 +1914,6 @@ # Range: 1-2 dot1q_remove_outer_vlan_tag: - # Preserve the DzGRE header. - dzgre_preserve: - # 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 bd19f34ede5..91739aff4a7 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 @@ -423,13 +423,9 @@ | [          tag](## "port_channel_interfaces.[].switchport.tool.identity.tag") | String | | | Valid Values:
- dot1q
- qinq | | | [          dot1q_dzgre_source](## "port_channel_interfaces.[].switchport.tool.identity.dot1q_dzgre_source") | String | | | Valid Values:
- policy
- port | | | [          qinq_dzgre_source](## "port_channel_interfaces.[].switchport.tool.identity.qinq_dzgre_source") | String | | | Valid Values:
- policy inner port
- port inner policy | | - | [        truncation](## "port_channel_interfaces.[].switchport.tool.truncation") | Dictionary | | | | | - | [          enabled](## "port_channel_interfaces.[].switchport.tool.truncation.enabled") | Boolean | | | | | - | [          size](## "port_channel_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | | [        groups](## "port_channel_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | | [          - <str>](## "port_channel_interfaces.[].switchport.tool.groups.[]") | String | | | | | | [        dot1q_remove_outer_vlan_tag](## "port_channel_interfaces.[].switchport.tool.dot1q_remove_outer_vlan_tag") | String | | | | Indices of vlan tags to be removed.
Range: 1-2 | - | [        dzgre_preserve](## "port_channel_interfaces.[].switchport.tool.dzgre_preserve") | Boolean | | | | Preserve the DzGRE header. | | [    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. | @@ -1403,11 +1399,6 @@ tag: dot1q_dzgre_source: qinq_dzgre_source: - truncation: - enabled: - - # Egress packet truncation size in bytes. - size: # Tool groups for the interface. groups: @@ -1417,9 +1408,6 @@ # Range: 1-2 dot1q_remove_outer_vlan_tag: - # Preserve the DzGRE header. - dzgre_preserve: - # 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/eos/ethernet-interfaces.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/ethernet-interfaces.j2 index 45f2299447b..9467cd18e05 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 @@ -1083,13 +1083,6 @@ interface {{ ethernet_interface.name }} {% endif %} {{ tap_truncation_cli }} {% endif %} -{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} -{% set tool_truncation_cli = "switchport tool truncation" %} -{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} -{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} -{% endif %} - {{ tool_truncation_cli }} -{% endif %} {% if ethernet_interface.switchport.tap.default.groups is arista.avd.defined %} switchport tap default group {{ ethernet_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} {% 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 17d8db9b3b3..25cdb756206 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 @@ -906,13 +906,6 @@ interface {{ port_channel_interface.name }} {% endif %} {{ tap_truncation_cli }} {% endif %} -{% if port_channel_interface.switchport.tool.truncation.enabled is arista.avd.defined(true) %} -{% set tool_truncation_cli = "switchport tool truncation" %} -{% if port_channel_interface.switchport.tool.truncation.size is arista.avd.defined %} -{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ port_channel_interface.switchport.tool.truncation.size %} -{% endif %} - {{ tool_truncation_cli }} -{% endif %} {% if port_channel_interface.switchport.tap.default.groups is arista.avd.defined %} switchport tap default group {{ port_channel_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} {% endif %} @@ -929,9 +922,6 @@ interface {{ port_channel_interface.name }} {% if port_channel_interface.switchport.tool.dot1q_remove_outer_vlan_tag is arista.avd.defined %} switchport tool dot1q remove outer {{ port_channel_interface.switchport.tool.dot1q_remove_outer_vlan_tag }} {% endif %} -{% if port_channel_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} - switchport tool dzgre preserve -{% endif %} {% 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 %} 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 6ba0acfe72f..5fa27adc5a7 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/__init__.py @@ -11947,37 +11947,6 @@ def __init__( """ - class Truncation(AvdModel): - """Subclass of AvdModel.""" - - _fields: ClassVar[dict] = {"enabled": {"type": bool}, "size": {"type": int}, "_custom_data": {"type": dict}} - enabled: bool | None - size: Literal[160] | None - """Egress packet truncation size in bytes.""" - _custom_data: dict[str, Any] - - if TYPE_CHECKING: - - def __init__( - self, - *, - enabled: bool | None | UndefinedType = Undefined, - size: Literal[160] | None | UndefinedType = Undefined, - _custom_data: dict[str, Any] | UndefinedType = Undefined, - ) -> None: - """ - Truncation. - - - Subclass of AvdModel. - - Args: - enabled: enabled - size: Egress packet truncation size in bytes. - _custom_data: _custom_data - - """ - class Groups(AvdList[str]): """Subclass of AvdList with `str` items.""" @@ -11988,10 +11957,8 @@ class Groups(AvdList[str]): "encapsulation": {"type": Encapsulation}, "allowed_vlan": {"type": str}, "identity": {"type": Identity}, - "truncation": {"type": Truncation}, "groups": {"type": Groups}, "dot1q_remove_outer_vlan_tag": {"type": str}, - "dzgre_preserve": {"type": bool}, "_custom_data": {"type": dict}, } mpls_pop_all: bool | None @@ -12002,8 +11969,6 @@ class Groups(AvdList[str]): """VLAN ID or range of VLAN IDs within range 1-4094.""" identity: Identity """Subclass of AvdModel.""" - truncation: Truncation - """Subclass of AvdModel.""" groups: Groups """ Tool groups for the interface. @@ -12015,8 +11980,6 @@ class Groups(AvdList[str]): Indices of vlan tags to be removed. Range: 1-2 """ - dzgre_preserve: bool | None - """Preserve the DzGRE header.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -12028,10 +11991,8 @@ def __init__( encapsulation: Encapsulation | UndefinedType = Undefined, allowed_vlan: str | None | UndefinedType = Undefined, identity: Identity | UndefinedType = Undefined, - truncation: Truncation | UndefinedType = Undefined, groups: Groups | UndefinedType = Undefined, dot1q_remove_outer_vlan_tag: str | None | UndefinedType = Undefined, - dzgre_preserve: bool | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ @@ -12045,7 +12006,6 @@ def __init__( encapsulation: Subclass of AvdModel. allowed_vlan: VLAN ID or range of VLAN IDs within range 1-4094. identity: Subclass of AvdModel. - truncation: Subclass of AvdModel. groups: Tool groups for the interface. @@ -12053,7 +12013,6 @@ def __init__( dot1q_remove_outer_vlan_tag: Indices of vlan tags to be removed. Range: 1-2 - dzgre_preserve: Preserve the DzGRE header. _custom_data: _custom_data """ @@ -31769,37 +31728,6 @@ def __init__( """ - class Truncation(AvdModel): - """Subclass of AvdModel.""" - - _fields: ClassVar[dict] = {"enabled": {"type": bool}, "size": {"type": int}, "_custom_data": {"type": dict}} - enabled: bool | None - size: Literal[160] | None - """Egress packet truncation size in bytes.""" - _custom_data: dict[str, Any] - - if TYPE_CHECKING: - - def __init__( - self, - *, - enabled: bool | None | UndefinedType = Undefined, - size: Literal[160] | None | UndefinedType = Undefined, - _custom_data: dict[str, Any] | UndefinedType = Undefined, - ) -> None: - """ - Truncation. - - - Subclass of AvdModel. - - Args: - enabled: enabled - size: Egress packet truncation size in bytes. - _custom_data: _custom_data - - """ - class Groups(AvdList[str]): """Subclass of AvdList with `str` items.""" @@ -31810,10 +31738,8 @@ class Groups(AvdList[str]): "encapsulation": {"type": Encapsulation}, "allowed_vlan": {"type": str}, "identity": {"type": Identity}, - "truncation": {"type": Truncation}, "groups": {"type": Groups}, "dot1q_remove_outer_vlan_tag": {"type": str}, - "dzgre_preserve": {"type": bool}, "_custom_data": {"type": dict}, } mpls_pop_all: bool | None @@ -31824,8 +31750,6 @@ class Groups(AvdList[str]): """VLAN ID or range of VLAN IDs within range 1-4094.""" identity: Identity """Subclass of AvdModel.""" - truncation: Truncation - """Subclass of AvdModel.""" groups: Groups """ Tool groups for the interface. @@ -31837,8 +31761,6 @@ class Groups(AvdList[str]): Indices of vlan tags to be removed. Range: 1-2 """ - dzgre_preserve: bool | None - """Preserve the DzGRE header.""" _custom_data: dict[str, Any] if TYPE_CHECKING: @@ -31850,10 +31772,8 @@ def __init__( encapsulation: Encapsulation | UndefinedType = Undefined, allowed_vlan: str | None | UndefinedType = Undefined, identity: Identity | UndefinedType = Undefined, - truncation: Truncation | UndefinedType = Undefined, groups: Groups | UndefinedType = Undefined, dot1q_remove_outer_vlan_tag: str | None | UndefinedType = Undefined, - dzgre_preserve: bool | None | UndefinedType = Undefined, _custom_data: dict[str, Any] | UndefinedType = Undefined, ) -> None: """ @@ -31867,7 +31787,6 @@ def __init__( encapsulation: Subclass of AvdModel. allowed_vlan: VLAN ID or range of VLAN IDs within range 1-4094. identity: Subclass of AvdModel. - truncation: Subclass of AvdModel. groups: Tool groups for the interface. @@ -31875,7 +31794,6 @@ def __init__( dot1q_remove_outer_vlan_tag: Indices of vlan tags to be removed. Range: 1-2 - dzgre_preserve: Preserve the DzGRE header. _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 f0ba50bbc46..5c918399c04 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 @@ -4379,18 +4379,6 @@ keys: valid_values: - policy inner port - port inner policy - truncation: - type: dict - keys: - enabled: - type: bool - size: - description: Egress packet truncation size in bytes. - type: int - convert_types: - - str - valid_values: - - 160 groups: type: list items: @@ -4403,9 +4391,6 @@ keys: description: 'Indices of vlan tags to be removed. Range: 1-2' - dzgre_preserve: - type: bool - description: Preserve the DzGRE header. eos_cli: type: str description: Multiline EOS CLI rendered directly on the ethernet interface 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 8e04d1aab78..2dca349d154 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 @@ -2171,18 +2171,6 @@ keys: valid_values: - policy inner port - port inner policy - truncation: - type: dict - keys: - enabled: - type: bool - size: - description: Egress packet truncation size in bytes. - type: int - convert_types: - - str - valid_values: - - 160 groups: type: list items: @@ -2195,9 +2183,6 @@ keys: description: |- Indices of vlan tags to be removed. Range: 1-2 - dzgre_preserve: - type: bool - description: Preserve the DzGRE header. eos_cli: type: str description: Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. From d07d1de22ae9b8f1c8449ed9e0f10ece7df85739 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Mon, 16 Dec 2024 18:46:31 +0530 Subject: [PATCH 32/32] Fixing CI --- .../inventory/host_vars/host1/ethernet-interfaces.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 59942dac990..b6c5faea864 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 @@ -1936,7 +1936,7 @@ ethernet_interfaces: - name: Ethernet84 switchport: - tap: + tap: encapsulation: gre: protocols: