diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-isis-new.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-isis-new.md index a2a696190da..bc50210c31e 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-isis-new.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-isis-new.md @@ -201,6 +201,12 @@ interface Vlan4094 | Local Convergence Delay (ms) | 15000 | | Advertise Passive-only | True | | SR MPLS Enabled | True | +| SPF Interval | 250 | +| SPF Interval Wait Time| 10 | +| Graceful-restart Enabled | True | +| Graceful-restart t2 Level-1 | 10 | +| Graceful-restart t2 Level-2 | 20 | +| Graceful-restart Restart-hold-time | 10 | #### ISIS Route Redistribution @@ -235,6 +241,7 @@ interface Vlan4094 | -------- | ----- | | IPv4 Address-family Enabled | True | | Maximum-paths | 4 | +| BFD All-interfaces | True | | TI-LFA Mode | link-protection | | TI-LFA Level | level-2 | | TI-LFA SRLG Enabled | True | @@ -252,6 +259,7 @@ interface Vlan4094 | -------- | ----- | | IPv6 Address-family Enabled | True | | Maximum-paths | 4 | +| BFD All-interfaces | True | | TI-LFA Mode | node-protection | | TI-LFA SRLG Enabled | True | @@ -272,15 +280,22 @@ router isis EVPN_UNDERLAY mpls ldp sync default timers local-convergence-delay 15000 protected-prefixes advertise passive-only + spf-interval 250 10 + graceful-restart + graceful-restart t2 level-1 10 + graceful-restart t2 level-2 20 + graceful-restart restart-hold-time 10 ! address-family ipv4 unicast maximum-paths 4 tunnel source-protocol bgp ipv4 labeled-unicast rcf lu_2_sr_pfx() + bfd all-interfaces fast-reroute ti-lfa mode link-protection level-2 fast-reroute ti-lfa srlg strict ! address-family ipv6 unicast maximum-paths 4 + bfd all-interfaces fast-reroute ti-lfa mode node-protection fast-reroute ti-lfa srlg ! diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-isis-new.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-isis-new.cfg index 3fe249e1318..a6172c5f86d 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-isis-new.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-isis-new.cfg @@ -78,15 +78,22 @@ router isis EVPN_UNDERLAY mpls ldp sync default timers local-convergence-delay 15000 protected-prefixes advertise passive-only + spf-interval 250 10 + graceful-restart + graceful-restart t2 level-1 10 + graceful-restart t2 level-2 20 + graceful-restart restart-hold-time 10 ! address-family ipv4 unicast maximum-paths 4 tunnel source-protocol bgp ipv4 labeled-unicast rcf lu_2_sr_pfx() + bfd all-interfaces fast-reroute ti-lfa mode link-protection level-2 fast-reroute ti-lfa srlg strict ! address-family ipv6 unicast maximum-paths 4 + bfd all-interfaces fast-reroute ti-lfa mode node-protection fast-reroute ti-lfa srlg ! diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-isis-new.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-isis-new.yml index e43865c0c53..2e7046498ab 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-isis-new.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-isis-new.yml @@ -6,6 +6,15 @@ router_isis: is_type: level-2 log_adjacency_changes: true mpls_ldp_sync_default: true + spf_interval: + interval: 250 + wait_interval: 10 + graceful_restart: + enabled: true + restart_hold_time: 10 + t2: + level_1_wait_time: 10 + level_2_wait_time: 20 timers: local_convergence: protected_prefixes: true @@ -29,6 +38,7 @@ router_isis: route_map: RM-OSPF-NSSA_EXT-TO-ISIS address_family_ipv4: maximum_paths: 4 + bfd_all_interfaces: true fast_reroute_ti_lfa: mode: link-protection level: level-2 @@ -40,6 +50,7 @@ router_isis: rcf: lu_2_sr_pfx() address_family_ipv6: maximum_paths: 4 + bfd_all_interfaces: true fast_reroute_ti_lfa: mode: node-protection srlg: diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-isis.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-isis.md index dfc5a39e170..ea4c735bd8d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-isis.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-isis.md @@ -32,6 +32,7 @@ | [  address_family_ipv4](## "router_isis.address_family_ipv4") | Dictionary | | | | | | [    enabled](## "router_isis.address_family_ipv4.enabled") | Boolean | | | | | | [    maximum_paths](## "router_isis.address_family_ipv4.maximum_paths") | Integer | | | Min: 1
Max: 128 | | + | [    bfd_all_interfaces](## "router_isis.address_family_ipv4.bfd_all_interfaces") | Boolean | | | | Enable BFD on all interfaces. | | [    fast_reroute_ti_lfa](## "router_isis.address_family_ipv4.fast_reroute_ti_lfa") | Dictionary | | | | | | [      mode](## "router_isis.address_family_ipv4.fast_reroute_ti_lfa.mode") | String | | | Valid Values:
- link-protection
- node-protection | | | [      level](## "router_isis.address_family_ipv4.fast_reroute_ti_lfa.level") | String | | | Valid Values:
- level-1
- level-2 | | @@ -44,9 +45,10 @@ | [  address_family_ipv6](## "router_isis.address_family_ipv6") | Dictionary | | | | | | [    enabled](## "router_isis.address_family_ipv6.enabled") | Boolean | | | | | | [    maximum_paths](## "router_isis.address_family_ipv6.maximum_paths") | Integer | | | Min: 1
Max: 128 | | + | [    bfd_all_interfaces](## "router_isis.address_family_ipv6.bfd_all_interfaces") | Boolean | | | | Enable BFD on all interfaces. | | [    fast_reroute_ti_lfa](## "router_isis.address_family_ipv6.fast_reroute_ti_lfa") | Dictionary | | | | | | [      mode](## "router_isis.address_family_ipv6.fast_reroute_ti_lfa.mode") | String | | | Valid Values:
- link-protection
- node-protection | | - | [      level](## "router_isis.address_family_ipv6.fast_reroute_ti_lfa.level") | String | | | Valid Values:
- level-1
- level-2 | Optional, default is to protect all levels | + | [      level](## "router_isis.address_family_ipv6.fast_reroute_ti_lfa.level") | String | | | Valid Values:
- level-1
- level-2 | Optional, default is to protect all levels. | | [      srlg](## "router_isis.address_family_ipv6.fast_reroute_ti_lfa.srlg") | Dictionary | | | | Shared Risk Link Group | | [        enable](## "router_isis.address_family_ipv6.fast_reroute_ti_lfa.srlg.enable") | Boolean | | | | | | [        strict](## "router_isis.address_family_ipv6.fast_reroute_ti_lfa.srlg.strict") | Boolean | | | | | @@ -56,6 +58,15 @@ | [    prefix_segments](## "router_isis.segment_routing_mpls.prefix_segments") | List, items: Dictionary | | | | | | [      - prefix](## "router_isis.segment_routing_mpls.prefix_segments.[].prefix") | String | | | | | | [        index](## "router_isis.segment_routing_mpls.prefix_segments.[].index") | Integer | | | | | + | [  spf_interval](## "router_isis.spf_interval") | Dictionary | | | | | + | [    interval](## "router_isis.spf_interval.interval") | Integer | | | Min: 1
Max: 300 | Maximum interval between two SPFs in seconds. | + | [    wait_interval](## "router_isis.spf_interval.wait_interval") | Integer | | | Min: 1
Max: 300000 | Initial wait interval for SPF in milliseconds. | + | [  graceful_restart](## "router_isis.graceful_restart") | Dictionary | | | | | + | [    enabled](## "router_isis.graceful_restart.enabled") | Boolean | | | | | + | [    restart_hold_time](## "router_isis.graceful_restart.restart_hold_time") | Integer | | | Min: 5
Max: 300 | Number of seconds. | + | [    t2](## "router_isis.graceful_restart.t2") | Dictionary | | | | | + | [      level_1_wait_time](## "router_isis.graceful_restart.t2.level_1_wait_time") | Integer | | | Min: 5
Max: 300 | Level-1 LSP database sync wait time in seconds. | + | [      level_2_wait_time](## "router_isis.graceful_restart.t2.level_2_wait_time") | Integer | | | Min: 5
Max: 300 | Level-2 LSP database sync wait time in seconds. | === "YAML" @@ -108,6 +119,9 @@ address_family_ipv4: enabled: maximum_paths: + + # Enable BFD on all interfaces. + bfd_all_interfaces: fast_reroute_ti_lfa: mode: level: @@ -124,10 +138,13 @@ address_family_ipv6: enabled: maximum_paths: + + # Enable BFD on all interfaces. + bfd_all_interfaces: fast_reroute_ti_lfa: mode: - # Optional, default is to protect all levels + # Optional, default is to protect all levels. level: # Shared Risk Link Group @@ -140,4 +157,23 @@ prefix_segments: - prefix: index: + spf_interval: + + # Maximum interval between two SPFs in seconds. + interval: + + # Initial wait interval for SPF in milliseconds. + wait_interval: + graceful_restart: + enabled: + + # Number of seconds. + restart_hold_time: + t2: + + # Level-1 LSP database sync wait time in seconds. + level_1_wait_time: + + # Level-2 LSP database sync wait time in seconds. + level_2_wait_time: ``` diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json index 9947076ec65..b9402c878ad 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json @@ -20494,6 +20494,11 @@ "maximum": 128, "title": "Maximum Paths" }, + "bfd_all_interfaces": { + "type": "boolean", + "description": "Enable BFD on all interfaces.", + "title": "BFD All Interfaces" + }, "fast_reroute_ti_lfa": { "type": "object", "properties": { @@ -20578,6 +20583,11 @@ "maximum": 128, "title": "Maximum Paths" }, + "bfd_all_interfaces": { + "type": "boolean", + "description": "Enable BFD on all interfaces.", + "title": "BFD All Interfaces" + }, "fast_reroute_ti_lfa": { "type": "object", "properties": { @@ -20595,7 +20605,7 @@ "level-1", "level-2" ], - "description": "Optional, default is to protect all levels", + "description": "Optional, default is to protect all levels.", "title": "Level" }, "srlg": { @@ -20669,6 +20679,75 @@ "^_.+$": {} }, "title": "Segment Routing MPLS" + }, + "spf_interval": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 300, + "description": "Maximum interval between two SPFs in seconds.", + "title": "Interval" + }, + "wait_interval": { + "type": "integer", + "minimum": 1, + "maximum": 300000, + "description": "Initial wait interval for SPF in milliseconds.", + "title": "Wait Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SPF Interval" + }, + "graceful_restart": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "restart_hold_time": { + "type": "integer", + "minimum": 5, + "maximum": 300, + "description": "Number of seconds.", + "title": "Restart Hold Time" + }, + "t2": { + "type": "object", + "properties": { + "level_1_wait_time": { + "type": "integer", + "minimum": 5, + "maximum": 300, + "description": "Level-1 LSP database sync wait time in seconds.", + "title": "Level 1 Wait Time" + }, + "level_2_wait_time": { + "type": "integer", + "minimum": 5, + "maximum": 300, + "description": "Level-2 LSP database sync wait time in seconds.", + "title": "Level 2 Wait Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "T2" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Graceful Restart" } }, "required": [ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml index 956173c6f8a..212ef7a9f1d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml @@ -11897,6 +11897,9 @@ keys: - str min: 1 max: 128 + bfd_all_interfaces: + type: bool + description: Enable BFD on all interfaces. fast_reroute_ti_lfa: type: dict keys: @@ -11937,6 +11940,9 @@ keys: - str min: 1 max: 128 + bfd_all_interfaces: + type: bool + description: Enable BFD on all interfaces. fast_reroute_ti_lfa: type: dict keys: @@ -11950,7 +11956,7 @@ keys: valid_values: - level-1 - level-2 - description: Optional, default is to protect all levels + description: Optional, default is to protect all levels. srlg: type: dict description: Shared Risk Link Group @@ -11979,6 +11985,52 @@ keys: type: int convert_types: - str + spf_interval: + type: dict + keys: + interval: + type: int + convert_types: + - str + min: 1 + max: 300 + description: Maximum interval between two SPFs in seconds. + wait_interval: + type: int + convert_types: + - str + min: 1 + max: 300000 + description: Initial wait interval for SPF in milliseconds. + graceful_restart: + type: dict + keys: + enabled: + type: bool + restart_hold_time: + type: int + convert_types: + - str + min: 5 + max: 300 + description: Number of seconds. + t2: + type: dict + keys: + level_1_wait_time: + type: int + convert_types: + - str + min: 5 + max: 300 + description: Level-1 LSP database sync wait time in seconds. + level_2_wait_time: + type: int + convert_types: + - str + min: 5 + max: 300 + description: Level-2 LSP database sync wait time in seconds. router_l2_vpn: type: dict keys: diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_isis.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_isis.schema.yml index bfec01c9eec..db5dc24ece2 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_isis.schema.yml +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_isis.schema.yml @@ -112,6 +112,9 @@ keys: - "str" min: 1 max: 128 + bfd_all_interfaces: + type: bool + description: Enable BFD on all interfaces. fast_reroute_ti_lfa: type: dict keys: @@ -152,6 +155,9 @@ keys: - "str" min: 1 max: 128 + bfd_all_interfaces: + type: bool + description: Enable BFD on all interfaces. fast_reroute_ti_lfa: type: dict keys: @@ -165,7 +171,7 @@ keys: valid_values: - "level-1" - "level-2" - description: Optional, default is to protect all levels + description: Optional, default is to protect all levels. srlg: type: dict description: Shared Risk Link Group @@ -194,3 +200,49 @@ keys: type: int convert_types: - str + spf_interval: + type: dict + keys: + interval: + type: int + convert_types: + - str + min: 1 + max: 300 + description: Maximum interval between two SPFs in seconds. + wait_interval: + type: int + convert_types: + - str + min: 1 + max: 300000 + description: Initial wait interval for SPF in milliseconds. + graceful_restart: + type: dict + keys: + enabled: + type: bool + restart_hold_time: + type: int + convert_types: + - str + min: 5 + max: 300 + description: Number of seconds. + t2: + type: dict + keys: + level_1_wait_time: + type: int + convert_types: + - str + min: 5 + max: 300 + description: Level-1 LSP database sync wait time in seconds. + level_2_wait_time: + type: int + convert_types: + - str + min: 5 + max: 300 + description: Level-2 LSP database sync wait time in seconds. diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/router-isis.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/router-isis.j2 index c2433bf9f58..4a9814d1d3a 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/router-isis.j2 +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/router-isis.j2 @@ -42,6 +42,26 @@ {% if router_isis.segment_routing_mpls.enabled is arista.avd.defined %} | SR MPLS Enabled | {{ router_isis.segment_routing_mpls.enabled }} | {% endif %} +{% if router_isis.spf_interval.interval is arista.avd.defined %} +| SPF Interval | {{ router_isis.spf_interval.interval }} | +{% if router_isis.spf_interval.wait_interval is arista.avd.defined %} +| SPF Interval Wait Time| {{ router_isis.spf_interval.wait_interval }} | +{% endif %} +{% endif %} +{% if router_isis.graceful_restart is arista.avd.defined %} +{% if router_isis.graceful_restart.enabled is arista.avd.defined(true) %} +| Graceful-restart Enabled | {{ router_isis.graceful_restart.enabled }} | +{% endif %} +{% if router_isis.graceful_restart.t2.level_1_wait_time is arista.avd.defined %} +| Graceful-restart t2 Level-1 | {{ router_isis.graceful_restart.t2.level_1_wait_time }} | +{% endif %} +{% if router_isis.graceful_restart.t2.level_2_wait_time is arista.avd.defined %} +| Graceful-restart t2 Level-2 | {{ router_isis.graceful_restart.t2.level_2_wait_time }} | +{% endif %} +{% if router_isis.graceful_restart.restart_hold_time is arista.avd.defined %} +| Graceful-restart Restart-hold-time | {{ router_isis.graceful_restart.restart_hold_time }} | +{% endif %} +{% endif %} {% if router_isis.redistribute_routes is arista.avd.defined %} #### ISIS Route Redistribution @@ -161,6 +181,9 @@ {% if router_isis.address_family_ipv4.maximum_paths is arista.avd.defined %} | Maximum-paths | {{ router_isis.address_family_ipv4.maximum_paths }} | {% endif %} +{% if router_isis.address_family_ipv4.bfd_all_interfaces is arista.avd.defined %} +| BFD All-interfaces | {{ router_isis.address_family_ipv4.bfd_all_interfaces }} | +{% endif %} {% if router_isis.address_family_ipv4.fast_reroute_ti_lfa.mode is arista.avd.defined %} | TI-LFA Mode | {{ router_isis.address_family_ipv4.fast_reroute_ti_lfa.mode }} | {% if router_isis.address_family_ipv4.fast_reroute_ti_lfa.level is arista.avd.defined %} @@ -193,6 +216,9 @@ {% if router_isis.address_family_ipv6.maximum_paths is arista.avd.defined %} | Maximum-paths | {{ router_isis.address_family_ipv6.maximum_paths }} | {% endif %} +{% if router_isis.address_family_ipv6.bfd_all_interfaces is arista.avd.defined %} +| BFD All-interfaces | {{ router_isis.address_family_ipv6.bfd_all_interfaces }} | +{% endif %} {% if router_isis.address_family_ipv6.fast_reroute_ti_lfa.mode is arista.avd.defined %} | TI-LFA Mode | {{ router_isis.address_family_ipv6.fast_reroute_ti_lfa.mode }} | {% if router_isis.address_family_ipv6.fast_reroute_ti_lfa.level is arista.avd.defined %} diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/router-isis.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/router-isis.j2 index 34145ec4fe4..ba602fe2685 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/router-isis.j2 +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/router-isis.j2 @@ -62,6 +62,27 @@ router isis {{ router_isis.instance }} {% endif %} {% if router_isis.advertise.passive_only is arista.avd.defined(true) %} advertise passive-only +{% endif %} +{% if router_isis.spf_interval.interval is arista.avd.defined %} +{% if router_isis.spf_interval.wait_interval is arista.avd.defined %} + spf-interval {{ router_isis.spf_interval.interval }} {{ router_isis.spf_interval.wait_interval }} +{% else %} + spf-interval {{ router_isis.spf_interval.interval }} +{% endif %} +{% endif %} +{% if router_isis.graceful_restart is arista.avd.defined %} +{% if router_isis.graceful_restart.enabled is arista.avd.defined(true) %} + graceful-restart +{% endif %} +{% if router_isis.graceful_restart.t2.level_1_wait_time is arista.avd.defined %} + graceful-restart t2 level-1 {{ router_isis.graceful_restart.t2.level_1_wait_time }} +{% endif %} +{% if router_isis.graceful_restart.t2.level_2_wait_time is arista.avd.defined %} + graceful-restart t2 level-2 {{ router_isis.graceful_restart.t2.level_2_wait_time }} +{% endif %} +{% if router_isis.graceful_restart.restart_hold_time is arista.avd.defined %} + graceful-restart restart-hold-time {{ router_isis.graceful_restart.restart_hold_time }} +{% endif %} {% endif %} ! {% if router_isis.address_family is arista.avd.defined %} @@ -87,6 +108,9 @@ router isis {{ router_isis.instance }} {% endif %} {{ lu_cli }} {% endif %} +{% if router_isis.address_family_ipv4.bfd_all_interfaces is arista.avd.defined(true) %} + bfd all-interfaces +{% endif %} {% if router_isis.address_family_ipv4.fast_reroute_ti_lfa.mode is arista.avd.defined %} {% set ti_lfa_cli = "fast-reroute ti-lfa mode " ~ router_isis.address_family_ipv4.fast_reroute_ti_lfa.mode %} {% if router_isis.address_family_ipv4.fast_reroute_ti_lfa.level is arista.avd.defined %} @@ -108,6 +132,9 @@ router isis {{ router_isis.instance }} {% if router_isis.address_family_ipv6.maximum_paths is arista.avd.defined %} maximum-paths {{ router_isis.address_family_ipv6.maximum_paths }} {% endif %} +{% if router_isis.address_family_ipv6.bfd_all_interfaces is arista.avd.defined(true) %} + bfd all-interfaces +{% endif %} {% if router_isis.address_family_ipv6.fast_reroute_ti_lfa.mode is arista.avd.defined %} {% set ti_lfa_cli = "fast-reroute ti-lfa mode " ~ router_isis.address_family_ipv6.fast_reroute_ti_lfa.mode %} {% if router_isis.address_family_ipv6.fast_reroute_ti_lfa.level is arista.avd.defined %}