Skip to content

Conversation

@emilarista
Copy link
Contributor

@emilarista emilarista commented Oct 8, 2025

Change Summary

Added support for ipv6_pool, ipv6_prefix_length in core_interfaces -> p2p_links_ip_pools.
Added ipv6_prefix, ipv6 (addresses) under core_interfaces p2p_links and profiles data model.

This PR also changes behavior of underlay_ipv6 knob slightly. Before this PR, nodes with underlay protocol == ospf would get ipv6 unicast-routing turned on and ipv6 enable on core interfaces despite ospf protocol not being compatible with ipv6. Additional conditions were added for shared_utils.underlay_ipv6 to only return true if underlay protocol is isis, or if underlay_rfc5549 or underlay_ipv6_numbered is active.

Related Issue(s)

Fixes #5961

Component(s) name

arista.avd.eos_designs

Proposed changes

core_interfaces:
  p2p_links_ip_pools:
    - name: <name>
      ipv6_pool: 2001:db8:64:49::/64
      ipv6_prefix_size: 126 # if custom prefix length is required, default -> /127
  p2p_links:
    - nodes: [node1, node2]
      ipv6_prefix: 2001:db8:64:48:1234::4/127
    - nodes: [node3, node4]
      ipv6:
        - 2001:db8:64:48:1234::6/127
        - 2001:db8:64:48:1234::7/127

How to test

Added test with molecule, awaiting feedback from customer/SE.

Checklist

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
Copy link

github-actions bot commented Oct 8, 2025

Review docs on Read the Docs

To test this pull request:

# Create virtual environment for this testing below the current directory
python -m venv test-avd-pr-5988
# Activate the virtual environment
source test-avd-pr-5988/bin/activate
# Install all requirements including PyAVD
pip install "pyavd[ansible] @ git+https://github.com/emilarista/ansible-avd.git@core_if_ipv6#subdirectory=python-avd" --force
# Point Ansible collections path to the Python virtual environment
export ANSIBLE_COLLECTIONS_PATH=$VIRTUAL_ENV/ansible_collections
# Install Ansible collection
ansible-galaxy collection install git+https://github.com/emilarista/ansible-avd.git#/ansible_collections/arista/avd/,core_if_ipv6 --force
# Optional: Install AVD examples
cd test-avd-pr-5988
ansible-playbook arista.avd.install_examples

@github-actions github-actions bot added state: CI Updated CI scenario have been updated in the PR state: Documentation role Updated role: eos_designs issue related to eos_designs role labels Oct 8, 2025
@emilarista emilarista changed the title Feat(eos_desings): ipv6 support for core_interfaces Feat(eos_designs): ipv6 support for core_interfaces Oct 15, 2025
@emilarista emilarista marked this pull request as ready for review October 15, 2025 11:37
@emilarista emilarista requested review from a team as code owners October 15, 2025 11:37
if (
(self.inputs.underlay_rfc5549 and p2p_link.routing_protocol != "ebgp")
or p2p_link.ipv6_enable is True
or self.shared_utils.underlay_ipv6 is True
Copy link
Contributor

Choose a reason for hiding this comment

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

This extra condition will be breaking, so we will need to write a porting guide entry, where in the diff we show they can set ipv6_enable: false to prevent the change.

Also since we now use strong typing we can rely on bool:

Suggested change
or self.shared_utils.underlay_ipv6 is True
or self.shared_utils.underlay_ipv6

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Have added porting guide entry. Let me know if it looks ok.

@github-actions github-actions bot added the state: conflict PR with conflict label Oct 15, 2025
@github-actions
Copy link

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

1 similar comment
@github-actions
Copy link

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

@github-actions github-actions bot removed the state: CI Updated CI scenario have been updated in the PR label Oct 20, 2025
@github-actions github-actions bot removed the state: conflict PR with conflict label Oct 20, 2025
@github-actions
Copy link

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

@github-actions github-actions bot added state: CI Updated CI scenario have been updated in the PR state: conflict PR with conflict labels Oct 20, 2025
@github-actions
Copy link

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

@github-actions github-actions bot removed the state: conflict PR with conflict label Oct 27, 2025
@github-actions
Copy link

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

Copy link
Contributor

@carl-baillargeon carl-baillargeon left a comment

Choose a reason for hiding this comment

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

Hey Emil, I tested your PR in my existing repo but I am getting an error.

Model:

l3_edge:
  p2p_links_ip_pools:
    - name: DCI_POOL
      ipv6_pool: 2001:db8:3:255::/64
  p2p_links:
    - id: 1
      ip_pool: DCI_POOL
      nodes: [ DC1-BL1, DC2-BL1 ]
      interfaces: [Ethernet3, Ethernet3]
      as: [ 65120, 65220 ]
      include_in_underlay_protocol: true
    - id: 2
      ip_pool: DCI_POOL
      nodes: [ DC1-BL1, DC2-BL2 ]
      interfaces: [Ethernet4, Ethernet3]
      as: [ 65120, 65220 ]
      include_in_underlay_protocol: true
    - id: 3
      ip_pool: DCI_POOL
      nodes: [ DC1-BL2, DC2-BL1 ]
      interfaces: [Ethernet3, Ethernet4]
      as: [ 65120, 65220 ]
      include_in_underlay_protocol: true
    - id: 4
      ip_pool: DCI_POOL
      nodes: [ DC1-BL2, DC2-BL2 ]
      interfaces: [Ethernet4, Ethernet4]
      as: [ 65120, 65220 ]
      include_in_underlay_protocol: true

Error:

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: pyavd._errors.AristaAvdMissingVariableError: 'l3_edge.p2p_links.[].ip, .subnet or .ip_pool' is required but was not found.
fatal: [DC2-BL2 -> localhost]: FAILED! => {"changed": false, "msg": "'l3_edge.p2p_links.[].ip, .subnet or .ip_pool' is required but was not found."}

Am I missing something?

@sonarqubecloud
Copy link

@carl-baillargeon
Copy link
Contributor

Also, can we separate this PR for clarity? We could have one PR for the new feature (IPv6 support on core_interfaces/l3_edge models) and other PR(s) for change of behaviors/bug fixes. Thanks.

@github-actions
Copy link

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 Oct 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

role: eos_designs issue related to eos_designs role state: CI Updated CI scenario have been updated in the PR state: conflict PR with conflict state: Documentation role Updated

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feat: core_interfaces/l3_edge ipv6 support

3 participants