Skip to content

test(operator): cover vLLM single-node Component upgrades - #17006

Merged
sttts merged 2 commits into
ai-dynamo:mainfrom
xianlubird:codex/16650-vllm-component
Oct 29, 2026
Merged

sttts merged 2 commits into
ai-dynamo:mainfrom
xianlubird:codex/16650-vllm-component

Conversation

@xianlubird

@xianlubird xianlubird commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Complete the two missing single-node vLLM Component scenarios in the operator upgrade matrix: aggregated and disaggregated. Production admission and DGD/DCD controllers must produce the complete expected Deployment resource graphs and propagate intentional edits to the requested worker generation.

Key Changes

Core logic: 0 lines. This PR adds fixture coverage only.

  • Add latest/vllm/{aggregated,disaggregated}/single/component inputs and full output goldens, with runtime images fixed at 1.6.0. Use vLLM's supported --model flag, and configure NixlConnector with producer/consumer roles for the PD workers.
  • Reuse the shared topology, resource-graph and target-generation worker-edit assertions already on main; no new helpers or normalization.
  • Replace the README's fixed coverage count with merge-order-independent tracking. This PR alone advances canonical CREATE coverage from 23/27 to 25/27.

Validation

Validated on current main plus these fixtures using an exclusive CPU Kind v1.36.1 cluster:

Behavior Evidence
Aggregated single-node lowering Complete golden matched: 2 DCD-owned Deployments, correct Component provider and no Grove/LWS/DS fallback; intentional worker edit reached the target generation.
Disaggregated single-node lowering Complete golden matched: frontend/prefill/decode DCDs and Deployments; intentional edits reached both worker components at the target generation.
Workload containment Historical snapshot restoration and Component quota barriers passed; serving Pods and ReplicaSets remained blocked.
Matrix boundary This branch correctly reports only the two TensorRT-LLM single-node cases missing. Combining the two independent branches passes all 27 canonical entries.

Review follow-up corrects the three --model-path arguments to vLLM's --model and supplies explicit NixlConnector producer/consumer configuration for PD (the released 1.6 wrapper requires KV transfer configuration for prefill). Regenerated only these two new latest output goldens from production-controller resource graphs. The semantic changes are the corrected args in DGD intent, DCD templates, and Deployment templates. Worker generation identities remain exactly bound to the reviewed DGD specification; no hash wildcard or new normalization is introduced.

Replayed the corrected aggregated and disaggregated CPU cases through the original admission/controller suite, including the target-generation worker-edit checks for the aggregated worker and both PD roles. Upgrade unit regressions, golden matcher tests, and all 19 fixture-tooling tests passed. Historical inputs, provenance, RECONCILED_VERSION, and all pre-existing fixture goldens remain unchanged.

This validates CPU admission/controller/API resource graphs and upgrade intent. It does not run serving Pods, model inference, or real PD KV transfer.

Issues and Ongoing Work

Pull Request Checklist
  • I used Dynamo's /pr-checklist skill.

Summary by CodeRabbit

  • Tests
    • Added upgrade-test coverage for single-component vLLM deployments in aggregated and disaggregated configurations, including expected frontend, worker, and Kubernetes resource states.
  • Documentation
    • Clarified that release-matrix completeness and the missing historical-origin case remain tracked, while the release-matrix gate continues to be enforced.

@copy-pr-bot

copy-pr-bot Bot commented Oct 21, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@xianlubird
xianlubird temporarily deployed to external_collaborator October 21, 2026 10:31 — with GitHub Actions Inactive
@xianlubird
xianlubird temporarily deployed to external_collaborator October 21, 2026 10:31 — with GitHub Actions Inactive
@github-actions github-actions Bot added external-contribution Pull request is from an external contributor trusted-contributor Org-External user who is trusted to run CI without Org-member approval labels Oct 21, 2026
@dynamo-ops

Copy link
Copy Markdown
Contributor

/ok to test 3857a62

@devin-ai-integration

devin-ai-integration Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Dynamo PR CI passed — run 40798789461 (attempt 1) on a64ef82dfa

Gate checks: ✅ backend-status-check · ✅ deploy-status-check · ✅ dynamo-status-check

Posted automatically by Devin for run 40798789461. Updated on every full-CI run of this PR.

Signed-off-by: xianlubird <xianlubird@gmail.com>
@xianlubird
xianlubird force-pushed the codex/16650-vllm-component branch from 3857a62 to 4fb85ae Compare October 28, 2026 13:21
@xianlubird
xianlubird temporarily deployed to external_collaborator October 28, 2026 13:21 — with GitHub Actions Inactive
@dynamo-ops

Copy link
Copy Markdown
Contributor

/ok to test 4fb85ae

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Oct 28, 2026
@xianlubird xianlubird changed the title test(operator): add the vLLM Component upgrade matrix test(operator): cover vLLM single-node Component upgrades Oct 28, 2026
@xianlubird
xianlubird marked this pull request as ready for review October 28, 2026 13:21
@xianlubird
xianlubird requested a review from a team as a code owner October 28, 2026 13:21
@coderabbitai

coderabbitai Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 833405b and 4fb85ae.

Files selected for processing: 5
  • deploy/operator/internal/controller/testdata/upgrade/README.md
  • deploy/operator/internal/controller/testdata/upgrade/latest/vllm/aggregated/single/component/input.yaml
  • deploy/operator/internal/controller/testdata/upgrade/latest/vllm/aggregated/single/component/output.yaml
  • deploy/operator/internal/controller/testdata/upgrade/latest/vllm/disaggregated/single/component/input.yaml
  • deploy/operator/internal/controller/testdata/upgrade/latest/vllm/disaggregated/single/component/output.yaml

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.

Walkthrough

The upgrade test data now includes aggregated and disaggregated single-node vLLM Component input and expected output manifests. The README updates its description of matrix completeness and the missing-origin historical case.

Changes

vLLM Component upgrade fixtures

Layer / File(s) Summary
Aggregated single-node fixture
deploy/operator/internal/controller/testdata/upgrade/latest/vllm/aggregated/single/component/*, deploy/operator/internal/controller/testdata/upgrade/README.md
Adds an input manifest for one frontend and two vLLM workers. The expected output captures Deployments, component and graph resources, discovery permissions, Services, and a ServiceAccount. The README updates the matrix status.
Disaggregated single-node fixture
deploy/operator/internal/controller/testdata/upgrade/latest/vllm/disaggregated/single/component/*
Adds an input manifest for one frontend and two each of prefill and decode workers. The expected output captures their Deployments, component and graph resources, discovery permissions, Services, and a ServiceAccount.

Priority: Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: Minimal · up to 4fb85

No specific issue in these single-node upgrade fixtures currently blocks merging; complete the normal validation checks before merging.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title "test(operator): cover vLLM single-node Component upgrades" matches the main change: fixture coverage for the aggregated and disaggregated single-node vLLM Component upgrade scenarios. It is…
Linked Issues check Passed Issue #17001 requires four vLLM Component fixtures. The head contains aggregated and disaggregated multinode Component fixtures that were present at the merge base, plus the two new single-node Compon…
Out of Scope Changes check Passed The changes stay within issue #17001. The four new fixture files add the two requested single-node cases. The README change updates matrix coverage tracking for these fixtures. No production controlle…
Description check Passed The description provides a clear overview under “Summary,” detailed key changes, validation evidence and limits, ongoing work, issue references, and a completed checklist. It does not use the template…
Full details: Title check

Explanation

The title "test(operator): cover vLLM single-node Component upgrades" matches the main change: fixture coverage for the aggregated and disaggregated single-node vLLM Component upgrade scenarios. It is concise and specific, and it follows a conventional commit style. The PR adds only test fixtures (inputs and output goldens) and a README update, with no core logic changes, which the title accurately reflects.

Full details: Linked Issues check

Explanation

Issue #17001 requires four vLLM Component fixtures. The head contains aggregated and disaggregated multinode Component fixtures that were present at the merge base, plus the two new single-node Component fixtures. The new input and output goldens capture the DGD, DCD, and immediate Deployment resource graphs. The documented shared topology, intentional-edit, and workload-containment checks cover the required test behavior.

Full details: Out of Scope Changes check

Explanation

The changes stay within issue #17001. The four new fixture files add the two requested single-node cases. The README change updates matrix coverage tracking for these fixtures. No production controller logic or unrelated resource changes are included.

Full details: Description check

Explanation

The description provides a clear overview under “Summary,” detailed key changes, validation evidence and limits, ongoing work, issue references, and a completed checklist. It does not use the template’s exact “Overview” heading, but it contains the required information.

Finishing Touches: 💡 1
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@sttts sttts left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One fixture-validity finding: use the supported vLLM model flag in both new single-node scenarios. Details inline.

Signed-off-by: xianlubird <xianlubird@gmail.com>
@xianlubird
xianlubird temporarily deployed to external_collaborator October 29, 2026 01:10 — with GitHub Actions Inactive
@dynamo-ops

Copy link
Copy Markdown
Contributor

/ok to test a64ef82

@sttts
sttts enabled auto-merge (squash) October 29, 2026 09:48
@sttts
sttts merged commit 071140e into ai-dynamo:main Oct 29, 2026
115 checks passed
@xianlubird
xianlubird deleted the codex/16650-vllm-component branch October 29, 2026 09:51

This branch was previously deployed

1 inactive deployment
external_collaborator — a64ef82d Deployed Oct 29, 2026 by xianlubird via ok-to-test #41035
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deployment::k8s Relates to dynamo deployment in kubernetes documentation Improvements or additions to documentation external-contribution Pull request is from an external contributor size/XXL test trusted-contributor Org-External user who is trusted to run CI without Org-member approval

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test(operator): add the vLLM Component upgrade matrix

3 participants