Skip to content

Fix Spectrum-X deployment reconciliation and rail names - #225

Merged
almaslennikov merged 4 commits into
mainfrom
dev/fix-spectrum-x-deployment
Aug 18, 2026
Merged

Fix Spectrum-X deployment reconciliation and rail names#225
almaslennikov merged 4 commits into
mainfrom
dev/fix-spectrum-x-deployment

Conversation

@almaslennikov

Copy link
Copy Markdown
Collaborator

Summary

  • treat NicInterfaceNameTemplate interface-name mismatches as retryable for up to five minutes while keeping later verification gated
  • align RA2.2 and RA2.3 example workloads and DRA selectors with SpectrumXRailPoolConfig railTopology names such as rail0 and rail0p0
  • preserve the explicit legacy rail naming used by RA2.1 and document both contracts

Validation

  • make test
  • make build
  • go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.11.3 run ./...
  • UV_CACHE_DIR=/Users/amaslennikov/workspace/tmp/uv-cache uv run --with-requirements requirements-docs.txt mkdocs build --strict
  • git diff --check

@greptile-apps

greptile-apps Bot commented Aug 18, 2026

Copy link
Copy Markdown

Greptile Summary

The PR corrects Spectrum-X rail identifiers and adds bounded retry handling for transient NIC interface-name mismatches.

  • Marks InterfaceNameMismatch errors as retryable while preserving terminal errors for one-shot validation.
  • Starts the five-minute reconciliation window only while a retryable mismatch is observed and clears it when reconciliation returns to an ordinary in-progress state.
  • Aligns RA2.2 and RA2.3 workloads, DRA selectors, documentation, and agent guidance with consumer-visible rail names such as rail0 and rail0p0.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
pkg/networkoperatorplugin/crstate/nicconfig.go Preserves interface-name mismatches as validation errors while attaching retryable metadata for deploy polling.
pkg/networkoperatorplugin/deploy.go Implements a mismatch-specific retry timer whose lifecycle now excludes ordinary initialization and cleared-mismatch states.
pkg/networkoperatorplugin/deploy_test.go Adds regression coverage for delayed timer creation, timeout behavior, and timer cancellation after mismatch recovery.
pkg/networkoperatorplugin/workload.go Aligns generated Spectrum-X workload resources and network annotations with v1alpha2 rail-topology names.
profiles/spectrum-x/90-example-daemonset.yaml Updates the RA2.3 example workload to consume the corrected per-rail and per-plane identifiers.
profiles/spectrum-x-ra2.2/90-example-daemonset.yaml Updates the RA2.2 example workload to use rail-topology names consistently.
profiles/spectrum-x/85-resourceclaimtemplate.yaml Aligns RA2.3 DRA selectors with the corrected rail resource names.
profiles/spectrum-x-ra2.2/85-resourceclaimtemplate.yaml Aligns RA2.2 DRA selectors with the corrected rail resource names.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Poll NicInterfaceNameTemplate] --> B{Validation state}
  B -->|InterfaceNameMismatch retryable error| C[Start five-minute timer]
  C --> A
  B -->|Ordinary in-progress| D[Stop mismatch timer]
  D --> A
  B -->|Success| E[Continue deployment verification]
  B -->|Non-retryable error| F[Fail deployment]
  C -->|Timer expires| F
Loading

Reviews (3): Last reviewed commit: "Reset interface mismatch timer after rec..." | Re-trigger Greptile

Comment thread pkg/networkoperatorplugin/deploy.go Outdated
Comment thread pkg/networkoperatorplugin/crstate/nicconfig.go Outdated
Treat InterfaceNameMismatch as retryable and bound interface template
reconciliation to five minutes. This lets udev renames settle while
keeping later manifest verification gated.

Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Use v1alpha2 railTopology names for NAD annotations, device-plugin
requests, and DRA selectors in RA2.2 and RA2.3 workloads. Preserve the
explicit legacy naming used by the RA2.1 profile.

Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Keep InterfaceNameMismatch terminal for one-shot validation and mark it
retryable for deploy. Start the five-minute window only after deploy
observes that retryable mismatch, leaving normal initialization unbounded.

Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
@almaslennikov
almaslennikov force-pushed the dev/fix-spectrum-x-deployment branch from 09a3259 to d54782c Compare August 18, 2026 11:48
Comment thread pkg/networkoperatorplugin/deploy.go
Stop the local retry timer when a retryable interface-name mismatch
clears and reconciliation returns to an ordinary in-progress state. Add a
transition test that verifies the deploy-wide context resumes control.

Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
@almaslennikov
almaslennikov merged commit 9791dd4 into main Aug 18, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant