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

Feat(eos_designs): Refactor topology data models for AVD v3.0 #1000

Merged

Conversation

ClausHolbechArista
Copy link
Contributor

@ClausHolbechArista ClausHolbechArista commented Jun 3, 2021

Change Summary

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Code style update (formatting, renaming)
  • Refactoring (no functional changes)
  • Documentation content changes
  • Other (please describe):

Related Issue(s)

Fixes #

Component(s) name

arista.avd.eos_designs

Proposed changes

Behavioral changes

  • l3leaf will no longer have spine asn hardcoded on underlay peer-group, but instead specified per uplink switch.
  • raw_eos_cli defined under tenants.vrfs.<vrf>.raw_eos_cli is no longer rendered on l2leaf
  • structured_config defined under tenants.vrfs.<vrf>.raw_eos_cli is no longer rendered on l2leaf
  • Rewording in fabric documentation
    • "Uplink IPv4 Pool" instead of "P2P Summary"
    • "VTEPs only" instead of "Leafs Only"

New features

  • inheritance for all settings from <switch_type_key>.defaults->switch_type_key>.node_groups.<node_group>->switch_type_key>.node_groups.<node_group>.nodes.<node>
  • Support for evpn setting per network service (vrfs,svis,l2vlans) to allow non-vxlan enabled services
  • Update upgrade_tools to upgrade variables from AVD v2.x to v3.0 during the play

Data model changes

All changes below can be handles automatically by the upgrade_tools role.

Changes to spine data model

  • Change from spine.platform to spine.defaults.platform
  • Change from spine.bgp_as to spine.defaults.bgp_as
  • Change from overlay_loopback_network_summary to spine.defaults.loopback_ipv4_pool
  • Change from spine.uplinks_to_super_spine_interfaces to spine.defaults.uplink_interfaces
  • New spine.defaults.uplink_switches variable based on keys in super_spine.nodes
  • Change from max_super_spines to spine.defaults.max_uplink_switches
  • Change from max_spine_to_super_spine_links to spine.defaults.max_parallel_uplinks
  • Change from super_spine_underlay_p2p_network_summary to spine.defaults.uplink_ipv4_pool
  • Change from p2p_uplinks_ptp to spine.defaults.uplink_ptp
  • Change from spine_bgp_defaults to spine.defaults.bgp_defaults
  • Change from isis_site_id.0000 to spine.defaults.isis_system_id_prefix
  • New spine.defaults.isis_maximum_paths based on max_spines * max_l3leaf_to_spine_links
  • Change from spine.nodes.{{ node }}.super_spine_interfaces to spine.nodes.{{ node }}.uplink_switch_interfaces

Changes to l3leaf data model

  • Change from overlay_loopback_network_summary to l3leaf.defaults.loopback_ipv4_pool
  • New loopback_network_offset variable based on max_spines or length of spine.nodes
  • Change from vtep_loopback_network_summary to l3leaf.defaults.vtep_loopback_ipv4_pool
  • Change from l3leaf.defaults.uplink_to_spine_interfaces to l3leaf.defaults.uplink_interfaces
  • Change from l3leaf.defaults.spines to l3leaf.defaults.uplink_switches
  • Change from max_spines to l3leaf.defaults.max_uplink_switches
  • Change from max_l3leaf_to_spine_links to l3leaf.defaults.max_parallel_uplinks
  • Change from underlay_p2p_network_summary to l3leaf.defaults.uplink_ipv4_pool
  • Change from p2p_uplinks_ptp.* to l3leaf.defaults.uplink_ptp.*
  • Change from l3leaf.defaults.p2p_link_interface_speed to l3leaf.defaults.uplink_interface_speed
  • Change from leaf_bgp_defaults to l3leaf.defaults.bgp_defaults
  • Change from isis_site_id.0001 to l3leaf.defaults.isis_system_id_prefix
  • New l3leaf.defaults.isis_maximum_paths based on max_spines * max_l3leaf_to_spine_links
  • Change from l3leaf.node_groups.{{ node_group }}.uplink_to_spine_interfaces to l3leaf.node_groups.{{ node_group }}.uplink_interfaces
  • Change from l3leaf.node_groups.{{ node_group }}.spines to l3leaf.node_groups.{{ node_group }}.uplink_switches
  • Change from l3leaf.node_groups.{{ node_group }}.p2p_link_interface_speed to l3leaf.node_groups.{{ node_group }}.uplink_interface_speed
  • Change from l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.spine_interfaces to l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_switch_interfaces
  • Change from l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_to_spine_interfaces to l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_interfaces
  • Change from l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.spines to l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_switches

Changes to l2leaf data model

  • Change from l2leaf.defaults.parent_l3leafs to l2leaf.defaults.uplink_switches
  • Change from l2leaf_inband_management_subnet to l2leaf.defaults.inband_management_subnet
  • Change from l2leaf_inband_management_vlan to l2leaf.defaults.inband_management_vlan
  • Change from l2leaf.defaults.p2p_link_interface_speed to l2leaf.defaults.uplink_interface_speed
  • Change from l2leaf.node_groups.{{ node_group }}.parent_l3leafs to l2leaf.node_groups.{{ node_group }}.uplink_switches
  • Change from l2leaf.node_groups.{{ node_group }}.p2p_link_interface_speed to l2leaf.node_groups.{{ node_group }}.uplink_interface_speed
  • Change from l2leaf.node_groups.{{ node_group }}.nodes.{{ node }}.l3leaf_interfaces to l2leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_switch_interfaces
  • Change from l2leaf.node_groups.{{ node_group }}.nodes.{{ node }}.parent_l3leafs to l2leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_switches

Changes to super-spine data model

  • Change from super_spine.bgp_as to super_spine.defaults.bgp_as

  • Change from super_spine.platform to super_spine.defaults.platform

  • Change from super_spine_loopback_network_summary to super_spine.defaults.loopback_ipv4_pool

  • Change from super_spine_bgp_defaults to super_spine.defaults.bgp_defaults

  • Change from overlay_controller.bgp_as to overlay_controller.defaults.bgp_as

  • Change from overlay_controller.platform to overlay_controller.defaults.platform

  • Change from overlay_controller_loopback_network_summary to overlay_controller.defaults.loopback_ipv4_pool

  • Change from overlay_controller_p2p_bfd to overlay_controller.defaults.uplink_bfd

  • Change from overlay_controller.defaults.uplink_to_remote_switches to overlay_controller.defaults.uplink_interfaces

  • Change from overlay_controller.defaults.remote_switches to overlay_controller.defaults.uplink_switches

  • Change from max_overlay_controller_to_switch_links (default=2) to overlay_controller.defaults.max_uplink_switches
    (old algorithm expected max_overlay_controller_to_switch_links to be the sum of links to all uplink switches)

  • Change from overlay_controller_p2p_network_summary to overlay_controller.defaults.uplink_ipv4_pool

  • Change from overlay_controller_bgp_defaults to overlay_controller.defaults.bgp_defaults

  • Change from overlay_controller.nodes.{{ node }}.remote_switches_interfaces to overlay_controller.nodes.{{ node }}.uplink_switch_interfaces

  • Change from overlay_controller.nodes.{{ node }}.uplink_to_remote_switches to overlay_controller.defaults.uplink_interfaces

  • Change from overlay_controller.nodes.{{ node }}.remote_switches to overlay_controller.defaults.uplink_switches

Changes to spine to super-spine p2p IP adressing

For existing fabrics this be reverted by overriding the ip addressing templates as
done automatically by the upgrade role:

switch_type_keys:
  spine:
    type: spine
    default_evpn_role: server
    ip_addressing:
      p2p_uplinks_ip: 'designs/l3ls-evpn/ip-addressing/avd-v2-spine-p2p-uplinks-ip.j2'
      p2p_uplinks_peer_ip: 'designs/l3ls-evpn/ip-addressing/avd-v2-spine-p2p-uplinks-peer-ip.j2'
  l3leaf:
    type: l3leaf
    connected_endpoints: true
    default_evpn_role: client
    mlag_support: true
    network_services:
      l2: true
      l3: true
    vtep: true
  l2leaf:
    type: l2leaf
    connected_endpoints: true
    mlag_support: true
    network_services:
      l2: true
    underlay_router: false
    uplink_type: port-channel
  super_spine:
    type: super-spine
  overlay_controller:
    type: overlay-controller

Changes to evpn_rd_type and evpn_rt_type data models

  • Change evpn_rd_type.admin_subfield value from "spine_asn" to
  • Change evpn_rd_type.admin_subfield value from "leaf_asn" to "bgp_as"
  • Change evpn_rt_type.admin_subfield value from "spine_asn" to
  • Change evpn_rt_type.admin_subfield value from "leaf_asn" to "bgp_as"

How to test

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.
  • I have updated the documentation accordingly.
  • I have updated molecule CI testing accordingly
  • All new and existing tests passed (pre-commit, make linting and make sanity-lint).

@github-actions github-actions bot added the role: eos_designs issue related to eos_designs role label Jun 3, 2021
@github-actions github-actions bot added the state: CI Updated CI scenario have been updated in the PR label Jun 4, 2021
@github-actions github-actions bot requested a review from titom73 June 4, 2021 10:06
@github-actions github-actions bot added type: code quality CI and development toolset state: conflict PR with conflict labels Jun 4, 2021
@github-actions
Copy link

github-actions bot commented Jun 5, 2021

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions
Copy link

github-actions bot commented Jun 5, 2021

Conflicts have been resolved. A maintainer will review the pull request shortly.

@github-actions github-actions bot added role: eos_config_deploy_cvp issue related to eos_config_deploy_cvp role state: conflict PR with conflict and removed state: conflict PR with conflict labels Jun 5, 2021
@github-actions
Copy link

github-actions bot commented Jun 5, 2021

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions
Copy link

github-actions bot commented Jun 5, 2021

Conflicts have been resolved. A maintainer will review the pull request shortly.

@github-actions github-actions bot removed the state: conflict PR with conflict label Jun 5, 2021
@titom73 titom73 added this to the v3.0.0 milestone Jun 6, 2021
@github-actions
Copy link

github-actions bot commented Jun 8, 2021

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot added the state: conflict PR with conflict label Jun 8, 2021
@github-actions github-actions bot removed the state: conflict PR with conflict label Jun 8, 2021
@github-actions
Copy link

github-actions bot commented Jun 8, 2021

Conflicts have been resolved. A maintainer will review the pull request shortly.

@github-actions github-actions bot added the state: conflict PR with conflict label Jun 11, 2021
@github-actions
Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@titom73 titom73 added the data model change Change to existing data model label Jul 22, 2021
@titom73 titom73 changed the title Refactor topology data models for AVD v3.0 Feat(eos_desgins): Refactor topology data models for AVD v3.0 Jul 22, 2021
@carlbuchmann carlbuchmann changed the title Feat(eos_desgins): Refactor topology data models for AVD v3.0 Feat(eos_designs): Refactor topology data models for AVD v3.0 Jul 22, 2021
@carlbuchmann carlbuchmann marked this pull request as ready for review July 23, 2021 01:56
@titom73 titom73 self-assigned this Jul 23, 2021
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!

@carlbuchmann carlbuchmann merged commit 1e9c100 into aristanetworks:devel Jul 23, 2021
@ClausHolbechArista ClausHolbechArista deleted the disagg-topology-support branch December 22, 2022 07:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
data model change Change to existing data model role: eos_cli_config_gen issue related to eos_cli_config_gen role role: eos_config_deploy_cvp issue related to eos_config_deploy_cvp 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: code quality CI and development toolset type: documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add option to avoid configuring vni for vlan in eos_designs
3 participants