Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor(eos_designs, eos_cli_config_gen): BGP VRF peer group options, global context ipv6 multicast and flowspec #2976

Merged
merged 12 commits into from
Jun 12, 2023

Conversation

emilarista
Copy link
Contributor

Change Summary

This PR is refactoring peer group configuration under VRF mode in BGP. Since all the configurable options for peer groups under VRF submode get pushed out to the global mode, these options have been moved to the global BGP context where applicable.

New multicast ipv6 and flow-spec AFs have been implemented in the global context since there was an indirect way to configure them via the VRF submodes with the old (now deprecated) vrf.address_families data model.

Also featuring an update to router_bgp.address_family_ipv4.neighbor..next_hop.address_family_ipv6_originate data model to add an option for enabling it without the "originate" keyword which is also supported in EOS.

Component(s) name

arista.avd.eos_cli_config_gen
arista.avd.eos_designs

Proposed changes

router_bgp:
      ...
      address_family_ipv6_multicast:
        type: dict
        keys:
          bgp:
            type: dict
            keys:
              missing_policy:
                type: dict
                keys:
                  direction_in_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
                  direction_out_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
              additional_paths:
                type: dict
                keys:
                  receive:
                    type: bool
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool
          networks:
            type: list
            primary_key: prefix
            convert_types:
            - dict
            items:
              type: dict
              keys:
                prefix:
                  type: str
                  description: IPv6 prefix "A:B:C:D:E:F:G:H/I"
                route_map:
                  type: str
      address_family_flow_spec_ipv4:
        type: dict
        keys:
          bgp:
            type: dict
            keys:
              missing_policy:
                type: dict
                keys:
                  direction_in_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
                  direction_out_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool
      address_family_flow_spec_ipv6:
        type: dict
        keys:
          bgp:
            type: dict
            keys:
              missing_policy:
                type: dict
                keys:
                  direction_in_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
                  direction_out_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool

How to test

Expanded molecule to test the new knobs.

Repository Checklist

  • My code has been rebased from devel before I start
  • I have read the CONTRIBUTING document.
  • My change requires a change to the documentation and documentation have been updated accordingly.
  • I have updated molecule CI testing accordingly. (check the box if not applicable)

@github-actions github-actions bot added role: eos_cli_config_gen issue related to eos_cli_config_gen role role: eos_designs issue related to eos_designs role state: CI Updated CI scenario have been updated in the PR state: Documentation role Updated labels Jun 9, 2023
Copy link
Contributor

@ClausHolbechArista ClausHolbechArista left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added some schema comments. Written in free-hand, so please verify that the models are correct. Please keep the required: true on the enabled key.
Please add release-notes and porting-guide details.

@ClausHolbechArista ClausHolbechArista added this to the v4.0.0 milestone Jun 9, 2023
emilarista and others added 3 commits June 9, 2023 11:43
…s/schema_fragments/router_bgp.schema.yml

Co-authored-by: Claus Holbech <holbech@arista.com>
…s/schema_fragments/router_bgp.schema.yml

Co-authored-by: Claus Holbech <holbech@arista.com>
@github-actions github-actions bot added the type: documentation Improvements or additions to documentation label Jun 9, 2023
emilarista and others added 2 commits June 9, 2023 14:59
…recated_vars/inventory/host_vars/host1/router-bgp.yml

Co-authored-by: Claus Holbech <holbech@arista.com>
@emilarista emilarista marked this pull request as ready for review June 12, 2023 10:51
@emilarista emilarista requested a review from a team as a code owner June 12, 2023 10:51
Copy link
Member

@carlbuchmann carlbuchmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ClausHolbechArista ClausHolbechArista merged commit e7a6be6 into aristanetworks:devel Jun 12, 2023
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rn: Refactor(eos_designs|eos_cli_config_gen) role: eos_cli_config_gen issue related to eos_cli_config_gen role role: eos_designs issue related to eos_designs role state: CI Updated CI scenario have been updated in the PR state: Documentation role Updated type: documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants