feat(nvca): add storage-aware model cache runtime - #1357
Open
balajinvda wants to merge 5 commits into
Open
Conversation
Relates to #1326 Signed-off-by: balaji <balaji7@gmail.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Contributor
Add the provider-neutral regular model-cache transition that populates one RWX claim and publishes that same claim to workloads with read-only mount intent. Persist and validate storage identity, fence publication with the exact completed writer job, and fail closed on ownership, lifecycle, race, or cleanup drift. Keep all external provider entries disabled pending binding-safe writer inputs and functional qualification.\n\nRefs NVCF-11476 Signed-off-by: balaji <balaji7@gmail.com>
balajinvda
marked this pull request as draft
August 30, 2026 22:03
4 tasks
Describe the exact PVC, Job, and Pod-template metadata canonicalization performed by the RWX read-only path.\n\nRefs NVCF-11476 Signed-off-by: balaji <balaji7@gmail.com>
balajinvda
marked this pull request as ready for review
August 30, 2026 23:18
Signed-off-by: balaji <balaji7@gmail.com>
…orage-runtime-selection # Conflicts: # deploy/helm/nvca-operator/nvca-operator/files/nvcf-storage-capabilities-v1alpha1.schema.json # deploy/helm/nvca-operator/nvca-operator/files/nvcf-storage-capabilities-v1alpha1.yaml # docs/dev/sdd-storage-agnostic-cache-architecture.md # src/compute-plane-services/nvca/deployments/nvca-operator/files/nvcf-storage-capabilities-v1alpha1.schema.json # src/compute-plane-services/nvca/deployments/nvca-operator/files/nvcf-storage-capabilities-v1alpha1.yaml # src/compute-plane-services/nvca/pkg/storage/storage_capabilities.go # src/compute-plane-services/nvca/pkg/storage/storage_capabilities_test.go # src/compute-plane-services/nvca/scripts/lint_helm.sh
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.
Customer Summary
Adds deterministic model-cache storage selection and read-only reader publication. Existing NVMesh behavior is named
roxReadOnly. A new regular-cacherwxReadOnlypath reuses one populated RWX claim without a clone or data copy. No external storage provider is enabled by this PR.TL;DR
nvcf-scprovisioner against the public catalog from feat(nvca): publish storage capability catalog #1334.ModelCacheBindingper cache identity and make retries use that binding.roxReadOnlyfor the existing NVMesh regular and Helm paths.rwxReadOnlyusing the populated RWX claim directly.disabled.Additional Details
This PR is stacked on #1334, which publishes the closed transition contract and storage capability catalog.
For a new model-cache request, NVCA evaluates the workflow gates, reads
StorageClass/nvcf-sc, requiresRetain, loads the exact provisioner entry, and persists the selection. It then creates or joins an immutable binding before it creates storage resources. Retries, restarts, catalog changes, and feature-gate changes continue from the recorded decision.Transition behavior
roxReadOnlyis restricted to the exact NVMesh provisioner and provider:The shipped required options are
ro,norecovery, andnouuid. They are persisted in the request selection andModelCacheBinding, copied defensively, repaired on retry, and validated before publication and cleanup. The legacynvca-cache-mount-optionsConfigMap is used only for annotation-free compatibility requests. The operatorcacheMountOptionssetting remains additive; any value that negates a provider requirement is ignored.rwxReadOnlyis restricted to regular model cache and requiresReadWriteMany:This path does not create a reader PVC, rewrite the PV, wait for detach, clone data, or make another copy. Its catalog entry must use an empty
readerMountOptionsarray. It does not claim backend-enforced write denial.Helm model cache supports only
roxReadOnly. Its writer and readers use different namespaces, sorwxReadOnlyis rejected by the schema, loader, persisted-selection validator, and runtime dispatcher.Enablement boundary
The shared-writer path accepts only credential-free Jobs. Current translated writer artifacts contain inputs that it rejects. Provider enablement still requires:
Container cache, CSI installation, performance qualification, and Helm support for non-NVMesh providers are outside this PR.
No third-party dependency changed.
NOTICEdoes not change.For the Reviewer
Please focus on:
rwxReadOnlysame-claim publication with no PV mutation or data copyrwxReadOnlyThe complete contract, limitations, rollout, and qualification plan are in
docs/dev/sdd-storage-agnostic-cache-architecture.md.For QA
Local validation completed:
pkg/storage,pkg/nvca,pkg/apis/nvca/v2beta1, andinternal/miniservicetests with Kubernetes 1.34.1 envtest assets: passgo vetfor those four packages: passgit diff --check, ASCII documentation style, and public-safety scans: passThe tests cover selection, persistence, generated Kubernetes objects, read-only fields, mount-option repair, identity preservation, retry, drift, ownership, cleanup, and RWX no-mutation behavior. They use fake or envtest Kubernetes APIs. They do not mount a real CSI volume or qualify Weka, OCI FSS, OCI Lustre, backend write denial, restart behavior on a live cluster, or performance. Those provider entries remain disabled.
Tickets
Relates to #1326
Checklist