From 17614b91c3f25261ebb2bf184bde5b4235cb26da Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Fri, 18 Oct 2024 10:17:45 +0100 Subject: [PATCH 01/15] Add support for EVPN remote domains --- .../documentation/devices/router-bgp-evpn-mpls.md | 2 ++ .../documentation/devices/router-bgp-evpn.md | 1 + .../intended/configs/router-bgp-evpn-mpls.cfg | 2 ++ .../inventory/host_vars/router-bgp-evpn-mpls.yml | 2 ++ .../avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md | 2 ++ .../j2templates/documentation/router-bgp.j2 | 6 ++++++ .../pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 | 3 +++ .../schema/eos_cli_config_gen.schema.yml | 2 ++ .../schema/schema_fragments/router_bgp.schema.yml | 2 ++ 9 files changed, 22 insertions(+) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md index a4b663331bd..e5915b35413 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md @@ -145,5 +145,7 @@ router bgp 65101 neighbor 192.168.255.3 activate neighbor 192.168.255.4 rcf in Address_Family_EVPN_In() neighbor 192.168.255.4 rcf out Address_Family_EVPN_Out() + domain identifier 1:1 + domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds ``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md index 48ecf97b27c..9f2a191106d 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md @@ -146,6 +146,7 @@ ASN Notation: asplain | Settings | Value | | -------- | ----- | +| Local Domain | 65101:0 | | Remote Domain Peer Groups | EVPN-OVERLAY-PEERS | | L3 Gateway Configured | True | | L3 Gateway Inter-domain | True | diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg index 8dc866980e4..056fee02bce 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg @@ -34,4 +34,6 @@ router bgp 65101 neighbor 192.168.255.3 activate neighbor 192.168.255.4 rcf in Address_Family_EVPN_In() neighbor 192.168.255.4 rcf out Address_Family_EVPN_Out() + domain identifier 1:1 + domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml index 739bf7afadb..534bbc5a027 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml @@ -46,6 +46,8 @@ router_bgp: - rib_type: "tunnel-rib" rib_name: "test-rib" - rib_type: "system-connected" + domain_identifier: "1:1" + domain_identifier_remote: "2:2" neighbor_default: encapsulation: mpls next_hop_self_source_interface: Loopback0 diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index da99f910a3c..7d56c73fd59 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -345,6 +345,7 @@ | [          id_remote](## "router_bgp.vpws.[].pseudowires.[].id_remote") | Integer | | | | Must match id_local on other pe. | | [  address_family_evpn](## "router_bgp.address_family_evpn") | Dictionary | | | | | | [    domain_identifier](## "router_bgp.address_family_evpn.domain_identifier") | String | | | | | + | [    domain_identifier_remote](## "router_bgp.address_family_evpn.domain_identifier_remote") | String | | | | | | [    neighbor_default](## "router_bgp.address_family_evpn.neighbor_default") | Dictionary | | | | | | [      encapsulation](## "router_bgp.address_family_evpn.neighbor_default.encapsulation") | String | | | Valid Values:
- vxlan
- mpls
- path-selection | Transport encapsulation for neighbor. | | [      next_hop_self_source_interface](## "router_bgp.address_family_evpn.neighbor_default.next_hop_self_source_interface") | String | | | | Source interface name. | @@ -2231,6 +2232,7 @@ id_remote: address_family_evpn: domain_identifier: + domain_identifier_remote: neighbor_default: # Transport encapsulation for neighbor. diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 index 2e2351b613b..4e4add2713e 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 @@ -645,6 +645,12 @@ ASN Notation: {{ router_bgp.as_notation | arista.avd.default('asplain') }} | Settings | Value | | -------- | ----- | +{% if router_bgp.address_family_evpn.domain_identifier is arista.avd.defined %} +| Local Domain | {{ router_bgp.address_family_evpn.domain_identifier }} | +{% endif %} +{% if router_bgp.address_family_evpn.domain_identifier_remote is arista.avd.defined %} +| Remote Domain | {{ router_bgp.address_family_evpn.domain_identifier_remote }} | +{% endif %} {% if evpn_gw_config.peer_groups | length > 0 %} | Remote Domain Peer Groups | {{ evpn_gw_config.peer_groups | join(", ") }} | {% endif %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 index d477194a94b..9e9975509b7 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 @@ -931,6 +931,9 @@ router bgp {{ router_bgp.as }} {% if router_bgp.address_family_evpn.domain_identifier is arista.avd.defined %} domain identifier {{ router_bgp.address_family_evpn.domain_identifier }} {% endif %} +{% if router_bgp.address_family_evpn.domain_identifier_remote is arista.avd.defined %} + domain identifier {{ router_bgp.address_family_evpn.domain_identifier_remote }} remote +{% endif %} {% if router_bgp.address_family_evpn.next_hop.resolution_disabled is arista.avd.defined(true) %} next-hop resolution disabled {% 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 2a4b8346936..b1137baf30a 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 @@ -13066,6 +13066,8 @@ keys: keys: domain_identifier: type: str + domain_identifier_remote: + type: str neighbor_default: type: dict keys: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index 275fb466252..b8d7f69cea4 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1248,6 +1248,8 @@ keys: keys: domain_identifier: type: str + domain_identifier_remote: + type: str neighbor_default: type: dict keys: From 82fa08d8c13b8039a24771ffc9ca185d5832e772 Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Fri, 18 Oct 2024 11:12:35 +0100 Subject: [PATCH 02/15] Allow the evpn ethernet segments to be defined --- .../devices/router-bgp-evpn-mpls.md | 6 ++++++ .../intended/configs/router-bgp-evpn-mpls.cfg | 6 ++++++ .../host_vars/router-bgp-evpn-mpls.yml | 7 +++++++ .../docs/tables/router-bgp.md | 12 +++++++++++ .../j2templates/documentation/router-bgp.j2 | 15 ++++++++++++++ .../j2templates/eos/router-bgp.j2 | 16 +++++++++++++++ .../schema/eos_cli_config_gen.schema.yml | 20 +++++++++++++++++++ .../schema_fragments/router_bgp.schema.yml | 20 +++++++++++++++++++ 8 files changed, 102 insertions(+) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md index e5915b35413..10ec9b375c0 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md @@ -148,4 +148,10 @@ router bgp 65101 domain identifier 1:1 domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds + evpn ethernet-segment domain local + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 + evpn ethernet-segment domain remote + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg index 056fee02bce..5d90ffb15fa 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg @@ -37,3 +37,9 @@ router bgp 65101 domain identifier 1:1 domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds + evpn ethernet-segment domain local + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 + evpn ethernet-segment domain remote + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml index 534bbc5a027..d89da9cd03f 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml @@ -63,3 +63,10 @@ router_bgp: layer_2_fec_in_place_update: enabled: true timeout: 100 + evpn_ethernet_segment: + - domain: remote + identifier: "0022:2222:2222:2222:2222" + route_target_import: "22:22:22:22:22:22" + - domain: local + identifier: "0011:1111:1111:1111:1111" + route_target_import: "11:11:11:11:11:11" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index 7d56c73fd59..a5bd86452b1 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -415,6 +415,10 @@ | [        ecmp](## "router_bgp.address_family_evpn.bgp_additional_paths.send.ecmp") | Boolean | | | | All paths in best path ECMP group. | | [        ecmp_limit](## "router_bgp.address_family_evpn.bgp_additional_paths.send.ecmp_limit") | Integer | | | Min: 2
Max: 64 | Amount of ECMP paths to send. | | [        limit](## "router_bgp.address_family_evpn.bgp_additional_paths.send.limit") | Integer | | | Min: 2
Max: 64 | Amount of paths to send. | + | [    evpn_ethernet_segment](## "router_bgp.address_family_evpn.evpn_ethernet_segment") | List, items: Dictionary | | | | | + | [      - domain](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].domain") | String | Required, Unique | | Valid Values:
- all
- local
- remote | | + | [        identifier](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].identifier") | String | Required | | | 10 octet ethernet segment identifier. | + | [        route_target_import](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].route_target_import") | String | Required | | | Low-order 6 bytes of ES-Import Route Target. | | [  address_family_rtc](## "router_bgp.address_family_rtc") | Dictionary | | | | | | [    peer_groups](## "router_bgp.address_family_rtc.peer_groups") | List, items: Dictionary | | | | | | [      - name](## "router_bgp.address_family_rtc.peer_groups.[].name") | String | Required, Unique | | | Peer-group name. | @@ -2402,6 +2406,14 @@ # Amount of paths to send. limit: + evpn_ethernet_segment: + - domain: + + # 10 octet ethernet segment identifier. + identifier: + + # Low-order 6 bytes of ES-Import Route Target. + route_target_import: address_family_rtc: peer_groups: diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 index 4e4add2713e..59d50c63a51 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 @@ -660,6 +660,21 @@ ASN Notation: {{ router_bgp.as_notation | arista.avd.default('asplain') }} {% if router_bgp.address_family_evpn.neighbor_default.next_hop_self_received_evpn_routes.inter_domain is arista.avd.defined(true) %} | L3 Gateway Inter-domain | True | {% endif %} +{% if router_bgp.address_family_evpn.evpn_ethernet_segment is arista.avd.defined %} +{% set domain_list = ['all', 'local','remote'] %} +{% for domain in domain_list %} +{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment %} +{% if segment.domain == domain %} +{% if segment.identifier is arista.avd.defined %} +| Domain {{ domain | title }}: Ethernet-Segment Identifier | {{ segment.identifier }} | +{% endif %} +{% if segment.route_target_import is arista.avd.defined %} +| Domain {{ domain | title }}: Ethernet-Segment Route-Target | {{ segment.route_target_import }} | +{% endif %} +{% endif %} +{% endfor %} +{% endfor %} +{% endif %} {% endif %} {% if router_bgp.address_family_ipv4_labeled_unicast is arista.avd.defined %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 index 9e9975509b7..86ac0954fbc 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 @@ -974,6 +974,22 @@ router bgp {{ router_bgp.as }} {% if router_bgp.address_family_evpn.route.import_overlay_index_gateway is arista.avd.defined(true) %} route import overlay-index gateway {% endif %} +{% if router_bgp.address_family_evpn.evpn_ethernet_segment is arista.avd.defined %} +{% set domain_list = ['all', 'local','remote'] %} +{% for domain in domain_list %} +{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment %} +{% if segment.domain == domain %} + evpn ethernet-segment domain {{ segment.domain }} +{% if segment.identifier is arista.avd.defined %} + identifier {{ segment.identifier }} +{% endif %} +{% if segment.route_target_import is arista.avd.defined %} + route-target import {{ segment.route_target_import }} +{% endif %} +{% endif %} +{% endfor %} +{% endfor %} +{% endif %} {% endif %} {# address family flow-spec ipv4 activation #} {% if router_bgp.address_family_flow_spec_ipv4 is arista.avd.defined %} 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 b1137baf30a..054e75e4ef1 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 @@ -13308,6 +13308,26 @@ keys: - str min: 2 max: 64 + evpn_ethernet_segment: + type: list + primary_key: domain + items: + type: dict + keys: + domain: + type: str + valid_values: + - all + - local + - remote + identifier: + type: str + description: 10 octet ethernet segment identifier. + required: true + route_target_import: + type: str + description: Low-order 6 bytes of ES-Import Route Target. + required: true address_family_rtc: type: dict keys: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index b8d7f69cea4..62a29e0ba7c 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1486,6 +1486,26 @@ keys: - str min: 2 max: 64 + evpn_ethernet_segment: + type: list + primary_key: domain + items: + type: dict + keys: + domain: + type: str + valid_values: + - "all" + - "local" + - "remote" + identifier: + type: str + description: "10 octet ethernet segment identifier." + required: true + route_target_import: + type: "str" + description: "Low-order 6 bytes of ES-Import Route Target." + required: true address_family_rtc: type: dict keys: From 4f3131161eeaae032c074739b5d3ce2882559e2a Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Fri, 18 Oct 2024 14:07:36 +0100 Subject: [PATCH 03/15] Rely on natural_sort for the domain ordering --- .../j2templates/documentation/router-bgp.j2 | 15 +++++---------- .../j2templates/eos/router-bgp.j2 | 15 +++++---------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 index 59d50c63a51..1d353755e11 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 @@ -661,18 +661,13 @@ ASN Notation: {{ router_bgp.as_notation | arista.avd.default('asplain') }} | L3 Gateway Inter-domain | True | {% endif %} {% if router_bgp.address_family_evpn.evpn_ethernet_segment is arista.avd.defined %} -{% set domain_list = ['all', 'local','remote'] %} -{% for domain in domain_list %} -{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment %} -{% if segment.domain == domain %} -{% if segment.identifier is arista.avd.defined %} +{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | avd.natural_sort('domain') %} +{% if segment.identifier is arista.avd.defined %} | Domain {{ domain | title }}: Ethernet-Segment Identifier | {{ segment.identifier }} | -{% endif %} -{% if segment.route_target_import is arista.avd.defined %} +{% endif %} +{% if segment.route_target_import is arista.avd.defined %} | Domain {{ domain | title }}: Ethernet-Segment Route-Target | {{ segment.route_target_import }} | -{% endif %} -{% endif %} -{% endfor %} +{% endif %} {% endfor %} {% endif %} {% endif %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 index 86ac0954fbc..069d8c98a75 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 @@ -975,19 +975,14 @@ router bgp {{ router_bgp.as }} route import overlay-index gateway {% endif %} {% if router_bgp.address_family_evpn.evpn_ethernet_segment is arista.avd.defined %} -{% set domain_list = ['all', 'local','remote'] %} -{% for domain in domain_list %} -{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment %} -{% if segment.domain == domain %} +{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | arista.avd.natural_sort('domain') %} evpn ethernet-segment domain {{ segment.domain }} -{% if segment.identifier is arista.avd.defined %} +{% if segment.identifier is arista.avd.defined %} identifier {{ segment.identifier }} -{% endif %} -{% if segment.route_target_import is arista.avd.defined %} +{% endif %} +{% if segment.route_target_import is arista.avd.defined %} route-target import {{ segment.route_target_import }} -{% endif %} -{% endif %} -{% endfor %} +{% endif %} {% endfor %} {% endif %} {% endif %} From 20374c696bcb34099d018ca0133d1da491fa3a57 Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Mon, 21 Oct 2024 10:08:46 +0100 Subject: [PATCH 04/15] Remove unnecessary check --- .../j2templates/documentation/router-bgp.j2 | 14 ++++++-------- .../j2templates/eos/router-bgp.j2 | 14 ++++++-------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 index 1d353755e11..8597226db9c 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 @@ -660,16 +660,14 @@ ASN Notation: {{ router_bgp.as_notation | arista.avd.default('asplain') }} {% if router_bgp.address_family_evpn.neighbor_default.next_hop_self_received_evpn_routes.inter_domain is arista.avd.defined(true) %} | L3 Gateway Inter-domain | True | {% endif %} -{% if router_bgp.address_family_evpn.evpn_ethernet_segment is arista.avd.defined %} -{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | avd.natural_sort('domain') %} -{% if segment.identifier is arista.avd.defined %} +{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | arista.avd.natural_sort('domain') %} +{% if segment.identifier is arista.avd.defined %} | Domain {{ domain | title }}: Ethernet-Segment Identifier | {{ segment.identifier }} | -{% endif %} -{% if segment.route_target_import is arista.avd.defined %} +{% endif %} +{% if segment.route_target_import is arista.avd.defined %} | Domain {{ domain | title }}: Ethernet-Segment Route-Target | {{ segment.route_target_import }} | -{% endif %} -{% endfor %} -{% endif %} +{% endif %} +{% endfor %} {% endif %} {% if router_bgp.address_family_ipv4_labeled_unicast is arista.avd.defined %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 index 069d8c98a75..ef665d433cc 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 @@ -974,17 +974,15 @@ router bgp {{ router_bgp.as }} {% if router_bgp.address_family_evpn.route.import_overlay_index_gateway is arista.avd.defined(true) %} route import overlay-index gateway {% endif %} -{% if router_bgp.address_family_evpn.evpn_ethernet_segment is arista.avd.defined %} -{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | arista.avd.natural_sort('domain') %} +{% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | arista.avd.natural_sort('domain') %} evpn ethernet-segment domain {{ segment.domain }} -{% if segment.identifier is arista.avd.defined %} +{% if segment.identifier is arista.avd.defined %} identifier {{ segment.identifier }} -{% endif %} -{% if segment.route_target_import is arista.avd.defined %} +{% endif %} +{% if segment.route_target_import is arista.avd.defined %} route-target import {{ segment.route_target_import }} -{% endif %} -{% endfor %} -{% endif %} +{% endif %} +{% endfor %} {% endif %} {# address family flow-spec ipv4 activation #} {% if router_bgp.address_family_flow_spec_ipv4 is arista.avd.defined %} From 33e4ba4bc226b5032927a202050e61ead0f043db Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Tue, 22 Oct 2024 21:00:33 +0100 Subject: [PATCH 05/15] Relax schema --- .../roles/eos_cli_config_gen/docs/tables/router-bgp.md | 8 ++++---- .../schema/eos_cli_config_gen.schema.yml | 2 -- .../schema/schema_fragments/router_bgp.schema.yml | 2 -- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index a5bd86452b1..2f1f361c668 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -417,8 +417,8 @@ | [        limit](## "router_bgp.address_family_evpn.bgp_additional_paths.send.limit") | Integer | | | Min: 2
Max: 64 | Amount of paths to send. | | [    evpn_ethernet_segment](## "router_bgp.address_family_evpn.evpn_ethernet_segment") | List, items: Dictionary | | | | | | [      - domain](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].domain") | String | Required, Unique | | Valid Values:
- all
- local
- remote | | - | [        identifier](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].identifier") | String | Required | | | 10 octet ethernet segment identifier. | - | [        route_target_import](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].route_target_import") | String | Required | | | Low-order 6 bytes of ES-Import Route Target. | + | [        identifier](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].identifier") | String | | | | 10 octet ethernet segment identifier. | + | [        route_target_import](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].route_target_import") | String | | | | Low-order 6 bytes of ES-Import Route Target. | | [  address_family_rtc](## "router_bgp.address_family_rtc") | Dictionary | | | | | | [    peer_groups](## "router_bgp.address_family_rtc.peer_groups") | List, items: Dictionary | | | | | | [      - name](## "router_bgp.address_family_rtc.peer_groups.[].name") | String | Required, Unique | | | Peer-group name. | @@ -2410,10 +2410,10 @@ - domain: # 10 octet ethernet segment identifier. - identifier: + identifier: # Low-order 6 bytes of ES-Import Route Target. - route_target_import: + route_target_import: address_family_rtc: peer_groups: 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 054e75e4ef1..7c290fae4d0 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 @@ -13323,11 +13323,9 @@ keys: identifier: type: str description: 10 octet ethernet segment identifier. - required: true route_target_import: type: str description: Low-order 6 bytes of ES-Import Route Target. - required: true address_family_rtc: type: dict keys: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index 62a29e0ba7c..eef4a871dba 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1501,11 +1501,9 @@ keys: identifier: type: str description: "10 octet ethernet segment identifier." - required: true route_target_import: type: "str" description: "Low-order 6 bytes of ES-Import Route Target." - required: true address_family_rtc: type: dict keys: From bc8bc33f897221e5f8ef3c36d3078262792c0e26 Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Wed, 23 Oct 2024 15:58:30 +0200 Subject: [PATCH 06/15] Add additional test case --- .../documentation/devices/router-bgp-evpn.md | 10 ++++++++++ .../intended/configs/router-bgp-evpn.cfg | 6 ++++++ .../inventory/host_vars/router-bgp-evpn.yml | 7 +++++++ .../j2templates/documentation/router-bgp.j2 | 4 ++-- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md index 9f2a191106d..4c8d7564aa3 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md @@ -150,6 +150,10 @@ ASN Notation: asplain | Remote Domain Peer Groups | EVPN-OVERLAY-PEERS | | L3 Gateway Configured | True | | L3 Gateway Inter-domain | True | +| Domain Local: Ethernet-Segment Identifier | 0011:1111:1111:1111:1111 | +| Domain Local: Ethernet-Segment Route-Target | 11:11:11:11:11:11 | +| Domain Remote: Ethernet-Segment Identifier | 0022:2222:2222:2222:2222 | +| Domain Remote: Ethernet-Segment Route-Target | 22:22:22:22:22:22 | #### Router BGP VLAN Aware Bundles @@ -329,6 +333,12 @@ router bgp 65101 host-flap detection window 10 threshold 1 expiry timeout 3 seconds layer-2 fec in-place update route import overlay-index gateway + evpn ethernet-segment domain local + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 + evpn ethernet-segment domain remote + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg index 9e91718cc3b..110b953e775 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg @@ -151,6 +151,12 @@ router bgp 65101 host-flap detection window 10 threshold 1 expiry timeout 3 seconds layer-2 fec in-place update route import overlay-index gateway + evpn ethernet-segment domain local + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 + evpn ethernet-segment domain remote + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml index aba25568ce9..1d4464d0754 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml @@ -207,6 +207,13 @@ router_bgp: send: any layer_2_fec_in_place_update: enabled: true + evpn_ethernet_segment: + - domain: remote + identifier: '0022:2222:2222:2222:2222' + route_target_import: '22:22:22:22:22:22' + - domain: local + identifier: '0011:1111:1111:1111:1111' + route_target_import: '11:11:11:11:11:11' address_family_ipv4_multicast: redistribute: ospf: diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 index 8597226db9c..b40a17040a6 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 @@ -662,10 +662,10 @@ ASN Notation: {{ router_bgp.as_notation | arista.avd.default('asplain') }} {% endif %} {% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | arista.avd.natural_sort('domain') %} {% if segment.identifier is arista.avd.defined %} -| Domain {{ domain | title }}: Ethernet-Segment Identifier | {{ segment.identifier }} | +| Domain {{ segment.domain | title }}: Ethernet-Segment Identifier | {{ segment.identifier }} | {% endif %} {% if segment.route_target_import is arista.avd.defined %} -| Domain {{ domain | title }}: Ethernet-Segment Route-Target | {{ segment.route_target_import }} | +| Domain {{ segment.domain | title }}: Ethernet-Segment Route-Target | {{ segment.route_target_import }} | {% endif %} {% endfor %} {% endif %} From 5b7baf5ebd2297cd2bc3bbbeee40fd154f9b8e1e Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Wed, 23 Oct 2024 16:23:08 +0200 Subject: [PATCH 07/15] Improve documentation output --- .../documentation/devices/router-bgp-evpn.md | 8 ++++---- .../j2templates/documentation/router-bgp.j2 | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md index 4c8d7564aa3..36be619d3be 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md @@ -150,10 +150,10 @@ ASN Notation: asplain | Remote Domain Peer Groups | EVPN-OVERLAY-PEERS | | L3 Gateway Configured | True | | L3 Gateway Inter-domain | True | -| Domain Local: Ethernet-Segment Identifier | 0011:1111:1111:1111:1111 | -| Domain Local: Ethernet-Segment Route-Target | 11:11:11:11:11:11 | -| Domain Remote: Ethernet-Segment Identifier | 0022:2222:2222:2222:2222 | -| Domain Remote: Ethernet-Segment Route-Target | 22:22:22:22:22:22 | +| Local Domain: Ethernet-Segment Identifier | 0011:1111:1111:1111:1111 | +| Local Domain: Ethernet-Segment Route-Target | 11:11:11:11:11:11 | +| Remote Domain: Ethernet-Segment Identifier | 0022:2222:2222:2222:2222 | +| Remote Domain: Ethernet-Segment Route-Target | 22:22:22:22:22:22 | #### Router BGP VLAN Aware Bundles diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 index b40a17040a6..ffdab7cd9a1 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 @@ -662,10 +662,10 @@ ASN Notation: {{ router_bgp.as_notation | arista.avd.default('asplain') }} {% endif %} {% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | arista.avd.natural_sort('domain') %} {% if segment.identifier is arista.avd.defined %} -| Domain {{ segment.domain | title }}: Ethernet-Segment Identifier | {{ segment.identifier }} | +| {{ segment.domain | title }} Domain: Ethernet-Segment Identifier | {{ segment.identifier }} | {% endif %} {% if segment.route_target_import is arista.avd.defined %} -| Domain {{ segment.domain | title }}: Ethernet-Segment Route-Target | {{ segment.route_target_import }} | +| {{ segment.domain | title }} Domain: Ethernet-Segment Route-Target | {{ segment.route_target_import }} | {% endif %} {% endfor %} {% endif %} From 73c8c4059f480d42e7cd01b1c57bc13554237827 Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain <43743234+colinmacgiolla@users.noreply.github.com> Date: Thu, 24 Oct 2024 16:04:23 +0100 Subject: [PATCH 08/15] Update python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml Co-authored-by: Mahesh Kumar <122076792+MaheshGSLAB@users.noreply.github.com> --- .../schema/schema_fragments/router_bgp.schema.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index eef4a871dba..ef79f0ee7b3 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1495,15 +1495,15 @@ keys: domain: type: str valid_values: - - "all" - - "local" - - "remote" + - all + - local + - remote identifier: type: str - description: "10 octet ethernet segment identifier." + description: 10 octet ethernet segment identifier. route_target_import: type: "str" - description: "Low-order 6 bytes of ES-Import Route Target." + description: Low-order 6 bytes of ES-Import Route Target. address_family_rtc: type: dict keys: From 1d2adaec37eb4ea78e08c90792cdaecdf9c78233 Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Thu, 24 Oct 2024 16:21:50 +0100 Subject: [PATCH 09/15] Fix indentation --- .../documentation/devices/router-bgp-evpn-mpls.md | 8 ++++---- .../documentation/devices/router-bgp-evpn.md | 8 ++++---- .../intended/configs/router-bgp-evpn-mpls.cfg | 8 ++++---- .../intended/configs/router-bgp-evpn.cfg | 8 ++++---- .../_eos_cli_config_gen/j2templates/eos/router-bgp.j2 | 4 ++-- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md index 10ec9b375c0..a92dd458fc3 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md @@ -149,9 +149,9 @@ router bgp 65101 domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds evpn ethernet-segment domain local - identifier 0011:1111:1111:1111:1111 - route-target import 11:11:11:11:11:11 + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 evpn ethernet-segment domain remote - identifier 0022:2222:2222:2222:2222 - route-target import 22:22:22:22:22:22 + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md index 36be619d3be..26356d9d8d1 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md @@ -334,11 +334,11 @@ router bgp 65101 layer-2 fec in-place update route import overlay-index gateway evpn ethernet-segment domain local - identifier 0011:1111:1111:1111:1111 - route-target import 11:11:11:11:11:11 + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 evpn ethernet-segment domain remote - identifier 0022:2222:2222:2222:2222 - route-target import 22:22:22:22:22:22 + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg index 5d90ffb15fa..65af9213621 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg @@ -38,8 +38,8 @@ router bgp 65101 domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds evpn ethernet-segment domain local - identifier 0011:1111:1111:1111:1111 - route-target import 11:11:11:11:11:11 + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 evpn ethernet-segment domain remote - identifier 0022:2222:2222:2222:2222 - route-target import 22:22:22:22:22:22 + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg index 110b953e775..7f5fb17905b 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg @@ -152,11 +152,11 @@ router bgp 65101 layer-2 fec in-place update route import overlay-index gateway evpn ethernet-segment domain local - identifier 0011:1111:1111:1111:1111 - route-target import 11:11:11:11:11:11 + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 evpn ethernet-segment domain remote - identifier 0022:2222:2222:2222:2222 - route-target import 22:22:22:22:22:22 + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 index ef665d433cc..9fc1452f540 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 @@ -977,10 +977,10 @@ router bgp {{ router_bgp.as }} {% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | arista.avd.natural_sort('domain') %} evpn ethernet-segment domain {{ segment.domain }} {% if segment.identifier is arista.avd.defined %} - identifier {{ segment.identifier }} + identifier {{ segment.identifier }} {% endif %} {% if segment.route_target_import is arista.avd.defined %} - route-target import {{ segment.route_target_import }} + route-target import {{ segment.route_target_import }} {% endif %} {% endfor %} {% endif %} From 3e5d2c5a31b7950673cb6920cb7c79baa30f3a7d Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain <43743234+colinmacgiolla@users.noreply.github.com> Date: Fri, 25 Oct 2024 10:57:14 +0100 Subject: [PATCH 10/15] Update python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml Co-authored-by: Shivani-gslab <145646625+Shivani-gslab@users.noreply.github.com> --- .../schema/schema_fragments/router_bgp.schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index ef79f0ee7b3..6183415ba57 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1502,7 +1502,7 @@ keys: type: str description: 10 octet ethernet segment identifier. route_target_import: - type: "str" + type: str description: Low-order 6 bytes of ES-Import Route Target. address_family_rtc: type: dict From 91b681d00cc0e277cebea452fa6b2306b59eb2e3 Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain <43743234+colinmacgiolla@users.noreply.github.com> Date: Tue, 29 Oct 2024 15:40:09 +0000 Subject: [PATCH 11/15] Update python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 Co-authored-by: Guillaume Mulocher --- .../pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 index 9fc1452f540..068476ac1fd 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 @@ -975,6 +975,7 @@ router bgp {{ router_bgp.as }} route import overlay-index gateway {% endif %} {% for segment in router_bgp.address_family_evpn.evpn_ethernet_segment | arista.avd.natural_sort('domain') %} + ! evpn ethernet-segment domain {{ segment.domain }} {% if segment.identifier is arista.avd.defined %} identifier {{ segment.identifier }} From b43cdae28e66caaf2a9d0e86c2f6c49c41e5e5c1 Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Tue, 29 Oct 2024 16:47:36 +0000 Subject: [PATCH 12/15] Improve config output Move all tests to evpn-mpls Improve ESI description --- .../documentation/devices/router-bgp-evpn-mpls.md | 2 ++ .../documentation/devices/router-bgp-evpn.md | 10 ---------- .../intended/configs/router-bgp-evpn-mpls.cfg | 2 ++ .../intended/configs/router-bgp-evpn.cfg | 6 ------ .../inventory/host_vars/router-bgp-evpn.yml | 7 ------- .../roles/eos_cli_config_gen/docs/tables/router-bgp.md | 4 ++-- .../schema/eos_cli_config_gen.schema.yml | 2 +- .../schema/schema_fragments/router_bgp.schema.yml | 2 +- 8 files changed, 8 insertions(+), 27 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md index 9f943d46c3b..4d914c456d0 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md @@ -149,9 +149,11 @@ router bgp 65101 domain identifier 1:1 domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds + ! evpn ethernet-segment domain local identifier 0011:1111:1111:1111:1111 route-target import 11:11:11:11:11:11 + ! evpn ethernet-segment domain remote identifier 0022:2222:2222:2222:2222 route-target import 22:22:22:22:22:22 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md index 1689f082227..956cab947f9 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md @@ -150,10 +150,6 @@ ASN Notation: asplain | Remote Domain Peer Groups | EVPN-OVERLAY-PEERS | | L3 Gateway Configured | True | | L3 Gateway Inter-domain | True | -| Local Domain: Ethernet-Segment Identifier | 0011:1111:1111:1111:1111 | -| Local Domain: Ethernet-Segment Route-Target | 11:11:11:11:11:11 | -| Remote Domain: Ethernet-Segment Identifier | 0022:2222:2222:2222:2222 | -| Remote Domain: Ethernet-Segment Route-Target | 22:22:22:22:22:22 | #### Router BGP VLAN Aware Bundles @@ -335,12 +331,6 @@ router bgp 65101 host-flap detection window 10 threshold 1 expiry timeout 3 seconds layer-2 fec in-place update route import overlay-index gateway - evpn ethernet-segment domain local - identifier 0011:1111:1111:1111:1111 - route-target import 11:11:11:11:11:11 - evpn ethernet-segment domain remote - identifier 0022:2222:2222:2222:2222 - route-target import 22:22:22:22:22:22 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg index 718a71895e0..c8b17ce6143 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg @@ -38,9 +38,11 @@ router bgp 65101 domain identifier 1:1 domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds + ! evpn ethernet-segment domain local identifier 0011:1111:1111:1111:1111 route-target import 11:11:11:11:11:11 + ! evpn ethernet-segment domain remote identifier 0022:2222:2222:2222:2222 route-target import 22:22:22:22:22:22 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg index dd4cb62761f..83bac4e7634 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg @@ -153,12 +153,6 @@ router bgp 65101 host-flap detection window 10 threshold 1 expiry timeout 3 seconds layer-2 fec in-place update route import overlay-index gateway - evpn ethernet-segment domain local - identifier 0011:1111:1111:1111:1111 - route-target import 11:11:11:11:11:11 - evpn ethernet-segment domain remote - identifier 0022:2222:2222:2222:2222 - route-target import 22:22:22:22:22:22 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml index d5441bd3a63..a44a1b1234b 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml @@ -209,13 +209,6 @@ router_bgp: send: any layer_2_fec_in_place_update: enabled: true - evpn_ethernet_segment: - - domain: remote - identifier: '0022:2222:2222:2222:2222' - route_target_import: '22:22:22:22:22:22' - - domain: local - identifier: '0011:1111:1111:1111:1111' - route_target_import: '11:11:11:11:11:11' address_family_ipv4_multicast: redistribute: ospf: diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index 095bd2a0190..862b9bdd4bc 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -420,7 +420,7 @@ | [        limit](## "router_bgp.address_family_evpn.bgp_additional_paths.send.limit") | Integer | | | Min: 2
Max: 64 | Amount of paths to send. | | [    evpn_ethernet_segment](## "router_bgp.address_family_evpn.evpn_ethernet_segment") | List, items: Dictionary | | | | | | [      - domain](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].domain") | String | Required, Unique | | Valid Values:
- all
- local
- remote | | - | [        identifier](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].identifier") | String | | | | 10 octet ethernet segment identifier. | + | [        identifier](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].identifier") | String | | | | EVPN Ethernet Segment Identifier (Type 1 format). | | [        route_target_import](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].route_target_import") | String | | | | Low-order 6 bytes of ES-Import Route Target. | | [  address_family_rtc](## "router_bgp.address_family_rtc") | Dictionary | | | | | | [    peer_groups](## "router_bgp.address_family_rtc.peer_groups") | List, items: Dictionary | | | | | @@ -2424,7 +2424,7 @@ evpn_ethernet_segment: - domain: - # 10 octet ethernet segment identifier. + # EVPN Ethernet Segment Identifier (Type 1 format). identifier: # Low-order 6 bytes of ES-Import Route Target. 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 e4fb5710d92..42d2c9cc103 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 @@ -13385,7 +13385,7 @@ keys: - remote identifier: type: str - description: 10 octet ethernet segment identifier. + description: EVPN Ethernet Segment Identifier (Type 1 format). route_target_import: type: str description: Low-order 6 bytes of ES-Import Route Target. diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index 017a3501e6d..8434f7abbb3 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1509,7 +1509,7 @@ keys: - remote identifier: type: str - description: 10 octet ethernet segment identifier. + description: EVPN Ethernet Segment Identifier (Type 1 format). route_target_import: type: str description: Low-order 6 bytes of ES-Import Route Target. From 9aec485888c604ca7b7df79d4ff7e24eb14b6d2b Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Tue, 29 Oct 2024 16:52:37 +0000 Subject: [PATCH 13/15] Reorder schema --- .../docs/tables/router-bgp.md | 24 ++++++------- .../schema/eos_cli_config_gen.schema.yml | 36 +++++++++---------- .../schema_fragments/router_bgp.schema.yml | 36 +++++++++---------- 3 files changed, 48 insertions(+), 48 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index 862b9bdd4bc..330c78d14c9 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -410,6 +410,10 @@ | [    layer_2_fec_in_place_update](## "router_bgp.address_family_evpn.layer_2_fec_in_place_update") | Dictionary | | | | BGP layer-2 in-place FEC operation. | | [      enabled](## "router_bgp.address_family_evpn.layer_2_fec_in_place_update.enabled") | Boolean | Required | | | | | [      timeout](## "router_bgp.address_family_evpn.layer_2_fec_in_place_update.timeout") | Integer | | | Min: 0
Max: 300 | In-place FEC update tracking timeout in seconds. | + | [    evpn_ethernet_segment](## "router_bgp.address_family_evpn.evpn_ethernet_segment") | List, items: Dictionary | | | | | + | [      - domain](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].domain") | String | Required, Unique | | Valid Values:
- all
- local
- remote | | + | [        identifier](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].identifier") | String | | | | EVPN Ethernet Segment Identifier (Type 1 format). | + | [        route_target_import](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].route_target_import") | String | | | | Low-order 6 bytes of ES-Import Route Target. | | [    bgp_additional_paths](## "router_bgp.address_family_evpn.bgp_additional_paths") deprecated | Dictionary | | | | BGP additional-paths commands.This key is deprecated. Support will be removed in AVD version 6.0.0. Use bgp.additional_paths instead. | | [      receive](## "router_bgp.address_family_evpn.bgp_additional_paths.receive") | Boolean | | | | Receive multiple paths. | | [      send](## "router_bgp.address_family_evpn.bgp_additional_paths.send") | Dictionary | | | | Send multiple paths. | @@ -418,10 +422,6 @@ | [        ecmp](## "router_bgp.address_family_evpn.bgp_additional_paths.send.ecmp") | Boolean | | | | All paths in best path ECMP group. | | [        ecmp_limit](## "router_bgp.address_family_evpn.bgp_additional_paths.send.ecmp_limit") | Integer | | | Min: 2
Max: 64 | Amount of ECMP paths to send. | | [        limit](## "router_bgp.address_family_evpn.bgp_additional_paths.send.limit") | Integer | | | Min: 2
Max: 64 | Amount of paths to send. | - | [    evpn_ethernet_segment](## "router_bgp.address_family_evpn.evpn_ethernet_segment") | List, items: Dictionary | | | | | - | [      - domain](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].domain") | String | Required, Unique | | Valid Values:
- all
- local
- remote | | - | [        identifier](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].identifier") | String | | | | EVPN Ethernet Segment Identifier (Type 1 format). | - | [        route_target_import](## "router_bgp.address_family_evpn.evpn_ethernet_segment.[].route_target_import") | String | | | | Low-order 6 bytes of ES-Import Route Target. | | [  address_family_rtc](## "router_bgp.address_family_rtc") | Dictionary | | | | | | [    peer_groups](## "router_bgp.address_family_rtc.peer_groups") | List, items: Dictionary | | | | | | [      - name](## "router_bgp.address_family_rtc.peer_groups.[].name") | String | Required, Unique | | | Peer-group name. | @@ -2394,6 +2394,14 @@ # In-place FEC update tracking timeout in seconds. timeout: + evpn_ethernet_segment: + - domain: + + # EVPN Ethernet Segment Identifier (Type 1 format). + identifier: + + # Low-order 6 bytes of ES-Import Route Target. + route_target_import: # BGP additional-paths commands. # This key is deprecated. @@ -2421,14 +2429,6 @@ # Amount of paths to send. limit: - evpn_ethernet_segment: - - domain: - - # EVPN Ethernet Segment Identifier (Type 1 format). - identifier: - - # Low-order 6 bytes of ES-Import Route Target. - route_target_import: address_family_rtc: peer_groups: 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 42d2c9cc103..0c853a01b8c 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 @@ -13333,6 +13333,24 @@ keys: - str min: 0 max: 300 + evpn_ethernet_segment: + type: list + primary_key: domain + items: + type: dict + keys: + domain: + type: str + valid_values: + - all + - local + - remote + identifier: + type: str + description: EVPN Ethernet Segment Identifier (Type 1 format). + route_target_import: + type: str + description: Low-order 6 bytes of ES-Import Route Target. bgp_additional_paths: type: dict deprecation: @@ -13371,24 +13389,6 @@ keys: - str min: 2 max: 64 - evpn_ethernet_segment: - type: list - primary_key: domain - items: - type: dict - keys: - domain: - type: str - valid_values: - - all - - local - - remote - identifier: - type: str - description: EVPN Ethernet Segment Identifier (Type 1 format). - route_target_import: - type: str - description: Low-order 6 bytes of ES-Import Route Target. address_family_rtc: type: dict keys: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index 8434f7abbb3..0141aef82ae 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1457,6 +1457,24 @@ keys: - str min: 0 max: 300 + evpn_ethernet_segment: + type: list + primary_key: domain + items: + type: dict + keys: + domain: + type: str + valid_values: + - all + - local + - remote + identifier: + type: str + description: EVPN Ethernet Segment Identifier (Type 1 format). + route_target_import: + type: str + description: Low-order 6 bytes of ES-Import Route Target. bgp_additional_paths: type: dict deprecation: @@ -1495,24 +1513,6 @@ keys: - str min: 2 max: 64 - evpn_ethernet_segment: - type: list - primary_key: domain - items: - type: dict - keys: - domain: - type: str - valid_values: - - all - - local - - remote - identifier: - type: str - description: EVPN Ethernet Segment Identifier (Type 1 format). - route_target_import: - type: str - description: Low-order 6 bytes of ES-Import Route Target. address_family_rtc: type: dict keys: From 07447d2801dc87478638e96fa2963b6a2e42f8df Mon Sep 17 00:00:00 2001 From: Colin MacGiollaEain Date: Tue, 29 Oct 2024 16:59:00 +0000 Subject: [PATCH 14/15] Update documentation --- .../_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 index 6d474ce7382..ee85ab289c9 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/router-bgp.j2 @@ -665,7 +665,7 @@ ASN Notation: {{ router_bgp.as_notation | arista.avd.default('asplain') }} | {{ segment.domain | title }} Domain: Ethernet-Segment Identifier | {{ segment.identifier }} | {% endif %} {% if segment.route_target_import is arista.avd.defined %} -| {{ segment.domain | title }} Domain: Ethernet-Segment Route-Target | {{ segment.route_target_import }} | +| {{ segment.domain | title }} Domain: Ethernet-Segment import Route-Target | {{ segment.route_target_import }} | {% endif %} {% endfor %} {% endif %} From 5f5b8a998c1762533c6cab4829b844463dc4b02b Mon Sep 17 00:00:00 2001 From: gmuloc Date: Wed, 30 Oct 2024 11:09:49 +0100 Subject: [PATCH 15/15] Test: Move test to another host to trigger documentation rendering --- .../documentation/devices/router-bgp-evpn-mpls.md | 10 ---------- .../documentation/devices/router-bgp-evpn.md | 14 ++++++++++++++ .../intended/configs/router-bgp-evpn-mpls.cfg | 10 ---------- .../intended/configs/router-bgp-evpn.cfg | 9 +++++++++ .../inventory/host_vars/router-bgp-evpn-mpls.yml | 9 --------- .../inventory/host_vars/router-bgp-evpn.yml | 8 ++++++++ 6 files changed, 31 insertions(+), 29 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md index 4d914c456d0..3c0ee579295 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn-mpls.md @@ -146,15 +146,5 @@ router bgp 65101 neighbor 192.168.255.4 rcf in Address_Family_EVPN_In() neighbor 192.168.255.4 rcf out Address_Family_EVPN_Out() neighbor 192.168.255.4 encapsulation mpls next-hop-self source-interface Ethernet1 - domain identifier 1:1 - domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds - ! - evpn ethernet-segment domain local - identifier 0011:1111:1111:1111:1111 - route-target import 11:11:11:11:11:11 - ! - evpn ethernet-segment domain remote - identifier 0022:2222:2222:2222:2222 - route-target import 22:22:22:22:22:22 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md index 956cab947f9..7e28738025b 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md @@ -147,9 +147,14 @@ ASN Notation: asplain | Settings | Value | | -------- | ----- | | Local Domain | 65101:0 | +| Remote Domain | 65101:1 | | Remote Domain Peer Groups | EVPN-OVERLAY-PEERS | | L3 Gateway Configured | True | | L3 Gateway Inter-domain | True | +| Local Domain: Ethernet-Segment Identifier | 0011:1111:1111:1111:1111 | +| Local Domain: Ethernet-Segment import Route-Target | 11:11:11:11:11:11 | +| Remote Domain: Ethernet-Segment Identifier | 0022:2222:2222:2222:2222 | +| Remote Domain: Ethernet-Segment import Route-Target | 22:22:22:22:22:22 | #### Router BGP VLAN Aware Bundles @@ -326,11 +331,20 @@ router bgp 65101 neighbor 10.100.100.5 activate neighbor 10.100.100.5 encapsulation mpls domain identifier 65101:0 + domain identifier 65101:1 remote next-hop resolution disabled neighbor default next-hop-self received-evpn-routes route-type ip-prefix inter-domain host-flap detection window 10 threshold 1 expiry timeout 3 seconds layer-2 fec in-place update route import overlay-index gateway + ! + evpn ethernet-segment domain local + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 + ! + evpn ethernet-segment domain remote + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg index c8b17ce6143..fbd0ce41546 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn-mpls.cfg @@ -35,14 +35,4 @@ router bgp 65101 neighbor 192.168.255.4 rcf in Address_Family_EVPN_In() neighbor 192.168.255.4 rcf out Address_Family_EVPN_Out() neighbor 192.168.255.4 encapsulation mpls next-hop-self source-interface Ethernet1 - domain identifier 1:1 - domain identifier 2:2 remote layer-2 fec in-place update timeout 100 seconds - ! - evpn ethernet-segment domain local - identifier 0011:1111:1111:1111:1111 - route-target import 11:11:11:11:11:11 - ! - evpn ethernet-segment domain remote - identifier 0022:2222:2222:2222:2222 - route-target import 22:22:22:22:22:22 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg index 83bac4e7634..c2318bc8222 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg @@ -148,11 +148,20 @@ router bgp 65101 neighbor 10.100.100.5 activate neighbor 10.100.100.5 encapsulation mpls domain identifier 65101:0 + domain identifier 65101:1 remote next-hop resolution disabled neighbor default next-hop-self received-evpn-routes route-type ip-prefix inter-domain host-flap detection window 10 threshold 1 expiry timeout 3 seconds layer-2 fec in-place update route import overlay-index gateway + ! + evpn ethernet-segment domain local + identifier 0011:1111:1111:1111:1111 + route-target import 11:11:11:11:11:11 + ! + evpn ethernet-segment domain remote + identifier 0022:2222:2222:2222:2222 + route-target import 22:22:22:22:22:22 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml index 4ea48d79d26..7aa5a5372e4 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn-mpls.yml @@ -46,8 +46,6 @@ router_bgp: - rib_type: "tunnel-rib" rib_name: "test-rib" - rib_type: "system-connected" - domain_identifier: "1:1" - domain_identifier_remote: "2:2" neighbor_default: encapsulation: mpls next_hop_self_source_interface: Loopback0 @@ -65,10 +63,3 @@ router_bgp: layer_2_fec_in_place_update: enabled: true timeout: 100 - evpn_ethernet_segment: - - domain: remote - identifier: "0022:2222:2222:2222:2222" - route_target_import: "22:22:22:22:22:22" - - domain: local - identifier: "0011:1111:1111:1111:1111" - route_target_import: "11:11:11:11:11:11" diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml index a44a1b1234b..d9878868301 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml @@ -122,6 +122,7 @@ router_bgp: inter_domain: true encapsulation: path-selection domain_identifier: "65101:0" + domain_identifier_remote: "65101:1" neighbors: - ip_address: 10.100.100.1 activate: true @@ -191,6 +192,13 @@ router_bgp: - name: TEST-ENCAPSULATION-2 activate: true encapsulation: path-selection + evpn_ethernet_segment: + - domain: remote + identifier: "0022:2222:2222:2222:2222" + route_target_import: "22:22:22:22:22:22" + - domain: local + identifier: "0011:1111:1111:1111:1111" + route_target_import: "11:11:11:11:11:11" evpn_hostflap_detection: enabled: true window: 10