Repository navigation
feat(agent): validate prequalified NVIDIA DRA hosts - #913
Closed
Kevin Cho (chokevin) wants to merge 14 commits into
Closed
Kevin Cho (chokevin) wants to merge 14 commits into
Kevin Cho (chokevin) wants to merge 14 commits into
Conversation
Prepare supported GB200 hosts for NVIDIA DRA ComputeDomains without exposing a global legacy IMEX channel. Validate and install branch-matched host prerequisites, preserve lifecycle ownership across bootstrap and repave paths, expose the nspawn device boundary, and report preparation without claiming domain readiness.
hbc (bcho)
reviewed
Oct 14, 2026
hbc (bcho)
reviewed
Oct 14, 2026
hbc (bcho)
reviewed
Oct 14, 2026
hbc (bcho)
reviewed
Oct 14, 2026
Contributor
Author
|
Closing for now. After clarifying ownership, NVIDIA package and image qualification belongs to the producer, and we do not currently have an established Unbounded requirement to block Node registration on a separate consumer-side qualification contract. If that admission boundary becomes a product requirement, we can revisit it as a focused change with an explicit owner and consumer. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Agent-side NVIDIA installation and service mutation conflicted with the Hillsboro image-ownership model. DRA enrollment now validates one exact externally produced Azure Linux or Ubuntu host contract before host/rootfs mutation or Node registration, and fails closed without installing, repairing, or falling back.
NVIDIAIMEXPrepared=Falsewith reasonHostQualificationFailedbefore registration on failure; successful validation reportsHostQualifiedwithout claiming ComputeDomain or physical multi-node fabric readiness.aks-flex-devproduces and qualifies the image, MetalMan applies a separately approved HostReplace, Unbounded validates and joins, and producer-owned GPU Operator/DRA manages ComputeDomains, IMEX, CDI claims, and workload injection.Exact producer contracts
Source of truth:
aks-flex-devcommitaad7463945848555d392b1c33c906ef4d4e37eebin ADO PR 17532408.hillsboro-gb200-gpu-operator-ready/v2026.10.14-1hillsboro.nvidia-host-capabilities/v1/etc/unbounded/host-capabilities/nvidia-gpu-operator.jsonhillsboro-gb200-ubuntu-gpu-operator-ready/v2026.10.14-1hillsboro.ubuntu-nvidia-host-capabilities/v1/etc/unbounded/host-capabilities/nvidia-gpu-operator-ubuntu.jsonThe committed Ubuntu blocked fixture is copied byte-for-byte from the producer: 4,325 bytes, no BOM or trailing newline, SHA-256
311893302546decb52cc9420e1b71603f22a48623a1686e17cd7eb2b0abe8596. It is decoder/canonicalization evidence only:acceptance.status=blockedis rejected for readiness. The Azure blocked fixture remains regression evidence only as well.MachineConfiguration now carries all five immutable consumer inputs: profile, profile version, contract version, artifact path, and qualified artifact digest. Generated CRDs and
kubectl unbounded machine config create/getexpose the same fields.Current Hillsboro scope
6.14.0-1009-azure-nvidia, NVIDIA580.178.04, Container Toolkit1.19.1, containerd2.1.8, and healthy local NVLink.Verification
Passed on Azure Linux 3 arm64:
go test ./pkg/agent/config ./pkg/agent/goalstates ./internal/provision ./internal/machineops ./internal/metalman/netboot ./cmd/agent/internal/daemongo test ./cmd/kubectl-unbounded/app -run "TestRunConfigCreate_(NVIDIAIMEXDRA|RequiresNVIDIAHostQualification|RejectsUnknownNVIDIAIMEXMode)$"go vet ./pkg/agent/config ./pkg/agent/goalstates ./internal/provision ./cmd/kubectl-unbounded/appv2.13.1across./api/... ./cmd/... ./deploy/... ./e2e/... ./hack/... ./internal/... ./pkg/...with zero issuesPassed locally:
go generate ./api/machina/v1alpha3git diff --checkUnable to complete
CI=1 make teston the arm64 validation host because the pre-existing TPM simulator dependency cannot findopenssl/aes.h. The run completed all other packages, including every changed package; GitHub CI remains the authoritative full-suite gate.End-to-end acceptance gate
HostQualified/NVIDIAIMEXPrepared=True, Node Ready with four GPUs, and GPU Operator/DRA/ComputeDomain readiness or the exact PR-specific terminal result.A blocked or failing run cannot satisfy the video gate. The recording must distinguish the producer-owned GPU Operator deployment from PR #913's validation/join boundary.
Risk and non-goals
DRA mode is intentionally fail-closed. This PR does not install GPU Operator, modify NVIDIA packages or services, repair physical NVLink/NVSwitch/InfiniBand, manage ComputeDomains/channels, or authorize a live rollout. Rollback is to omit DRA qualification inputs or revert the MachineConfiguration before any separately approved host lifecycle operation.
Review guide
pkg/agent/goalstates/nvidia.goandnvidia_test.go: exact registry dispatch, closed decoders, canonical bytes, semantics, and dual-profile negative matrix.pkg/agent/config/config.go,api/machina/v1alpha3/machineconfiguration_types.go, and generated CRDs: five-field public contract and fail-closed validation.pkg/agent/goalstates/resolve.go: tuple rejection before artifact reads or host preparation.docs/content/reference/gpu/nvidia-gpu-operator.md: producer ownership, current rollout blockers, and evidence gate.