diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-ipv4-labeled-unicast.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-ipv4-labeled-unicast.md index a416c8b5e0a..cd4206b8bd1 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-ipv4-labeled-unicast.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-ipv4-labeled-unicast.md @@ -75,6 +75,7 @@ ASN Notation: asplain ```eos ! router bgp 65101 + timers bgp 4 6 min-hold-time 5 send-failure hold-time 67 ! address-family ipv4 labeled-unicast update wait-for-convergence diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-ipv4-labeled-unicast.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-ipv4-labeled-unicast.cfg index 6edb13b7e19..f2c8e34e718 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-ipv4-labeled-unicast.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-ipv4-labeled-unicast.cfg @@ -5,6 +5,7 @@ interface Management1 ip address 10.73.255.122/24 ! router bgp 65101 + timers bgp 4 6 min-hold-time 5 send-failure hold-time 67 ! address-family ipv4 labeled-unicast update wait-for-convergence diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-ipv4-labeled-unicast.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-ipv4-labeled-unicast.yml index 004fa07f5ea..2be120391df 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-ipv4-labeled-unicast.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-ipv4-labeled-unicast.yml @@ -1,5 +1,10 @@ router_bgp: as: 65101 + timers: + keepalive_time: 4 + hold_time: 6 + min_hold_time: 5 + send_failure_hold_time: 67 address_family_ipv4_labeled_unicast: update_wait_for_convergence: true aigp_session: 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 a8090791a64..1cb9c3eaf34 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 @@ -12,10 +12,10 @@ | [  as_notation](## "router_bgp.as_notation") | String | | | Valid Values:
- asdot
- asplain | BGP AS can be deplayed in the asplain <1-4294967295> or asdot notation "<1-65535>.<0-65535>". This flag indicates which mode is preferred - asplain is the default. | | [  router_id](## "router_bgp.router_id") | String | | | | In IP address format A.B.C.D. | | [  timers](## "router_bgp.timers") | Dictionary | | | | | - | [    keepalive_time](## "router_bgp.timers.keepalive_time") | Integer | | | Min: 0
Max: 3600 | Time between BGP keepalive messages in seconds. | - | [    hold_time](## "router_bgp.timers.hold_time") | Integer | | | Min: 0
Max: 7200 | Hold time in seconds. Must be defined along with keepalive_time.
The valid values are 3-7200 or 0 if both values are 0. | - | [    min_hold_time](## "router_bgp.timers.min_hold_time") | Integer | | | Min: 3
Max: 7200 | Neighbor's minimum hold time constraint in seconds. | - | [    send_failure_hold_time](## "router_bgp.timers.send_failure_hold_time") | Integer | | | Min: 60
Max: 65335 | Send failure hold time in seconds. | + | [    keepalive_time](## "router_bgp.timers.keepalive_time") | Integer | | | Min: 0
Max: 3600 | Time between BGP keepalive messages in seconds.
`keepalive_time` should be lesser than `hold_time`. | + | [    hold_time](## "router_bgp.timers.hold_time") | Integer | | | Min: 0
Max: 7200 | Hold time in seconds. Must be defined along with `keepalive_time`.
The valid values are 3-7200 or 0 if both values are 0. | + | [    min_hold_time](## "router_bgp.timers.min_hold_time") | Integer | | | Min: 3
Max: 7200 | Neighbor's minimum hold time constraint in seconds.
`min_hold_time` should be less than `hold_time`. | + | [    send_failure_hold_time](## "router_bgp.timers.send_failure_hold_time") | Integer | | | Min: 60
Max: 65535 | Send failure hold time in seconds. | | [  distance](## "router_bgp.distance") | Dictionary | | | | | | [    external_routes](## "router_bgp.distance.external_routes") | Integer | Required | | Min: 1
Max: 255 | | | [    internal_routes](## "router_bgp.distance.internal_routes") | Integer | Required | | Min: 1
Max: 255 | | @@ -1592,17 +1592,19 @@ timers: # Time between BGP keepalive messages in seconds. + # `keepalive_time` should be lesser than `hold_time`. keepalive_time: - # Hold time in seconds. Must be defined along with keepalive_time. + # Hold time in seconds. Must be defined along with `keepalive_time`. # The valid values are 3-7200 or 0 if both values are 0. hold_time: # Neighbor's minimum hold time constraint in seconds. + # `min_hold_time` should be less than `hold_time`. min_hold_time: # Send failure hold time in seconds. - send_failure_hold_time: + send_failure_hold_time: distance: external_routes: internal_routes: 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 b92960f32d8..65ffa32e5f0 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 @@ -30,10 +30,11 @@ router bgp {{ router_bgp.as }} no bgp default ipv4-unicast transport ipv6 {% endif %} {% if router_bgp.timers is arista.avd.defined %} +{% set timers_bgp_cli = "timers bgp" %} {% if router_bgp.timers.keepalive_time is arista.avd.defined and router_bgp.timers.hold_time is arista.avd.defined %} -{% set timers_bgp_cli = "timers bgp " ~ router_bgp.timers.keepalive_time ~ " " ~ router_bgp.timers.hold_time %} -{% elif router_bgp.timers.min_hold_time is arista.avd.defined or router_bgp.timers.send_failure_hold_time is arista.avd.defined %} -{% set timers_bgp_cli = "timers bgp" %} +{% set timers_bgp_cli = timers_bgp_cli ~ " " ~ router_bgp.timers.keepalive_time ~ " " ~ router_bgp.timers.hold_time %} +{% endif %} +{% if router_bgp.timers.min_hold_time is arista.avd.defined or router_bgp.timers.send_failure_hold_time is arista.avd.defined %} {% if router_bgp.timers.min_hold_time is arista.avd.defined %} {% set timers_bgp_cli = timers_bgp_cli ~ " min-hold-time " ~ router_bgp.timers.min_hold_time %} {% 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 b99461095eb..3803be97108 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 @@ -11898,14 +11898,16 @@ keys: type: dict keys: keepalive_time: - description: Time between BGP keepalive messages in seconds. + description: 'Time between BGP keepalive messages in seconds. + + `keepalive_time` should be lesser than `hold_time`.' type: int convert_types: - str min: 0 max: 3600 hold_time: - description: 'Hold time in seconds. Must be defined along with keepalive_time. + description: 'Hold time in seconds. Must be defined along with `keepalive_time`. The valid values are 3-7200 or 0 if both values are 0.' type: int @@ -11914,7 +11916,9 @@ keys: min: 0 max: 7200 min_hold_time: - description: Neighbor's minimum hold time constraint in seconds. + description: 'Neighbor''s minimum hold time constraint in seconds. + + `min_hold_time` should be less than `hold_time`.' type: int convert_types: - str @@ -11926,7 +11930,7 @@ keys: convert_types: - str min: 60 - max: 65335 + max: 65535 distance: 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 da0c8bcab8b..625ee6df1a3 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 @@ -31,7 +31,9 @@ keys: type: dict keys: keepalive_time: - description: Time between BGP keepalive messages in seconds. + description: |- + Time between BGP keepalive messages in seconds. + `keepalive_time` should be lesser than `hold_time`. type: int convert_types: - str @@ -39,7 +41,7 @@ keys: max: 3600 hold_time: description: |- - Hold time in seconds. Must be defined along with keepalive_time. + Hold time in seconds. Must be defined along with `keepalive_time`. The valid values are 3-7200 or 0 if both values are 0. type: int convert_types: @@ -47,7 +49,9 @@ keys: min: 0 max: 7200 min_hold_time: - description: Neighbor's minimum hold time constraint in seconds. + description: |- + Neighbor's minimum hold time constraint in seconds. + `min_hold_time` should be less than `hold_time`. type: int convert_types: - str @@ -59,7 +63,7 @@ keys: convert_types: - str min: 60 - max: 65335 + max: 65535 distance: type: dict keys: