Skip to content

Conversation

@nikatza
Copy link
Contributor

@nikatza nikatza commented Oct 21, 2025

Multi-Chassis Link Aggregation (MC-LAG) is quite vendor and platform
specific. We don't see much intersection in their respective
configuration to justify a common API type. Instead, we move forward
with a platform specific API exclusive to Cisco NXOS devices.

In this PR we add types, controller, and provider code to configure
virtual Port Channels (vPCs) via the operator as:

feature vpc

vpc domain 5
  peer-switch
  role priority 100
  system-priority 10
  peer-keepalive destination 10.1.1.2 source 10.1.1.1 vrf VPC_KEEPALIVE
  delay restore 150
  peer-gateway
  layer3 peer-router
  auto-recovery reload-delay 360
  delay restore interface-vlan 140
  fast-convergence

interface port-channel1
  vpc peer-link

The vpcdomain controller ensures that the vpc peer-link is configured.
This is because on gNMI this property is configured at the vpcDom (sub-)containers.
Having this property as a provider-specific resource does not seem a good
option and the moment as it complicates the code base.

The operational status of the resource is UP if the peer is alive and the remote
device returns a positive uptime value for the peer.

@hardikdr hardikdr added the area/metal-automation Automation processes within the Metal project. label Oct 22, 2025
@hardikdr hardikdr added this to Roadmap Oct 22, 2025
@nikatza nikatza force-pushed the cisco-nxos-vpc branch 2 times, most recently from 0b789b3 to 52078ca Compare October 22, 2025 16:31
@nikatza nikatza changed the title Enable Cisco vPC feat: Enable Cisco vPC Oct 22, 2025
@nikatza nikatza changed the title feat: Enable Cisco vPC feat: Cisco NXOS vPCs Oct 22, 2025
@nikatza nikatza force-pushed the cisco-nxos-vpc branch 11 times, most recently from 218ebd5 to 2f2cd99 Compare October 23, 2025 16:55
@nikatza nikatza force-pushed the cisco-nxos-vpc branch 10 times, most recently from f6fb13c to b3fd3db Compare November 28, 2025 10:16
@nikatza nikatza force-pushed the cisco-nxos-vpc branch 5 times, most recently from 9fe01a4 to a046ec2 Compare December 30, 2025 15:56
@nikatza nikatza marked this pull request as ready for review December 30, 2025 16:08
@nikatza nikatza requested a review from a team as a code owner December 30, 2025 16:08
@nikatza nikatza force-pushed the cisco-nxos-vpc branch 2 times, most recently from e39fa48 to 6e86fa3 Compare January 7, 2026 10:42
@nikatza nikatza force-pushed the cisco-nxos-vpc branch 7 times, most recently from eb05dfb to 6ba3749 Compare January 8, 2026 13:32
Multi-Chassis Link Aggregation (MC-LAG) is quite vendor and platform
specific. We don't see much intersection in their respective
configuration to justify a common API type. Instead, we move forward
with a platform specific API exclusive to Cisco NXOS devices.

This commit adds new types, controller, and provider to configure
virtual Port Channels (vPCs) via the operator.
@github-actions
Copy link

github-actions bot commented Jan 8, 2026

Merging this branch changes the coverage (2 decrease, 1 increase)

Impacted Packages Coverage Δ 🤖
github.com/ironcore-dev/network-operator/api/cisco/nx/v1alpha1 0.00% (ø)
github.com/ironcore-dev/network-operator/api/core/v1alpha1 0.00% (ø)
github.com/ironcore-dev/network-operator/cmd 0.00% (ø)
github.com/ironcore-dev/network-operator/internal/controller/cisco/nx 75.18% (+8.90%) 👍
github.com/ironcore-dev/network-operator/internal/controller/core 69.79% (-0.09%) 👎
github.com/ironcore-dev/network-operator/internal/provider 20.00% (ø)
github.com/ironcore-dev/network-operator/internal/provider/cisco/nxos 12.08% (-0.52%) 👎

Coverage by file

Changed files (no unit tests)

Changed File Coverage Δ Total Covered Missed 🤖
github.com/ironcore-dev/network-operator/api/cisco/nx/v1alpha1/vpcdomain_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/cisco/nx/v1alpha1/zz_generated.deepcopy.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/interface_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/api/core/v1alpha1/vrf_types.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/cmd/main.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/internal/controller/cisco/nx/provider.go 0.00% (ø) 0 0 0
github.com/ironcore-dev/network-operator/internal/controller/cisco/nx/vpcdomain_controller.go 77.55% (+77.55%) 196 (+196) 152 (+152) 44 (+44) 🌟
github.com/ironcore-dev/network-operator/internal/controller/core/interface_controller.go 79.48% (-0.46%) 346 (+2) 275 71 (+2) 👎
github.com/ironcore-dev/network-operator/internal/provider/cisco/nxos/intf.go 19.33% (ø) 119 23 96
github.com/ironcore-dev/network-operator/internal/provider/cisco/nxos/provider.go 0.08% (-0.00%) 1226 (+65) 1 1225 (+65) 👎
github.com/ironcore-dev/network-operator/internal/provider/cisco/nxos/vpc.go 12.00% (-16.57%) 25 (+18) 3 (+1) 22 (+17) 💀
github.com/ironcore-dev/network-operator/internal/provider/provider.go 20.00% (ø) 25 5 20

Please note that the "Total", "Covered", and "Missed" counts above refer to code statements instead of lines of code. The value in brackets refers to the test coverage of that file in the old version of the code.

Changed unit test files

  • github.com/ironcore-dev/network-operator/internal/controller/cisco/nx/suite_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/cisco/nx/vpcdomain_controller_test.go
  • github.com/ironcore-dev/network-operator/internal/controller/core/suite_test.go
  • github.com/ironcore-dev/network-operator/internal/provider/cisco/nxos/vpc_test.go

@nikatza nikatza merged commit e9325c6 into main Jan 8, 2026
8 checks passed
@nikatza nikatza deleted the cisco-nxos-vpc branch January 8, 2026 14:47
@github-project-automation github-project-automation bot moved this to Done in Roadmap Jan 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/metal-automation Automation processes within the Metal project.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants