Skip to content

feat(nvca): configure Secret-backed workload transport trust - #672

Closed
mikeyrcamp wants to merge 2 commits into
mainfrom
agent/cherry-pick-pr-655-to-main
Closed

feat(nvca): configure Secret-backed workload transport trust#672
mikeyrcamp wants to merge 2 commits into
mainfrom
agent/cherry-pick-pr-655-to-main

Conversation

@mikeyrcamp

@mikeyrcamp mikeyrcamp commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Customer Summary

Managed NVCA deployments can isolate router transport trust from the cluster-wide certificate path, avoiding admission-time mount collisions while preserving the existing default behavior.

TL;DR

This PR includes Secret-backed workload transport trust and adds operatorConfig.workload.transportTLS.installedBundleMountPath. When omitted, NVCA continues using /etc/ssl/certs; the managed staging rollout uses /nvcf/transport-tls for the router CA.

Additional Details

  • Propagates the Helm value through operator configuration and generated agent configuration.
  • Mounts nvcf-trust-merged-certs at the configured path and derives STARGATE_TLS_CERT_PATH as <path>/ca-certificates.crt.
  • Leaves installer output at /merged-certs/ca-certificates.crt and general/proxy trust at /etc/ssl/certs.
  • Rejects invalid, reserved, root, noncanonical, conflicting, and overlapping mount paths.
  • Covers regular Pods, initial MiniService workloads, Helm rendering, config rollout, last-good configuration preservation, and Kyverno/webhook admission composition.

For the Reviewer

The v3.1 source PR is #708. This PR carries the equivalent main-line implementation. The mount-path change is deliberately limited to transport-TLS injection; MiniService update-path behavior is unchanged.

For QA

Passed:

  • Focused Go suites for transport TLS, operator reconciliation, NVCA, and MiniService behavior.
  • Helm lint and rendering checks, including omitted-default and explicit-override cases.
  • Focused Bazel transport-TLS validation.
  • Managed dev2 rollout with operatorConfig.workload.transportTLS.installedBundleMountPath=/nvcf/transport-tls.
  • New API-created LLM workload: trust installer exited 0, both certificate mounts were present, proxy variables remained on /etc/ssl/certs, Pylon set STARGATE_TLS_CERT_PATH=/nvcf/transport-tls/ca-certificates.crt, and the reverse tunnel connected without UnknownIssuer.

The dev validation temporarily pre-pulled the byocdev image onto both GPU nodes because API-issued workload credentials currently authorize only the staging registry. The temporary DaemonSet and credential were removed. Cold-node validation requires staging publication or an API-issued byocdev pull credential.

Tickets

  • NVCF-10306

Summary by CodeRabbit

  • New Features

    • Added configurable workload transport TLS trust bundles using Kubernetes Secrets, optional SHA-256 fingerprint verification, and custom certificate mount paths.
    • Added Helm values, schema validation, and documentation for the new settings.
    • Operator configuration now updates agent settings and supports Secret rotation.
  • Bug Fixes

    • Added validation for invalid or conflicting certificate mount paths.
    • Configuration errors preserve the last valid agent configuration and trigger reconciliation when appropriate.
  • Tests

    • Added coverage for Helm rendering, TLS validation, Secret handling, rollout detection, and configuration updates.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 78cfc588-1790-4bc9-acd6-3386c47ead9d

📥 Commits

Reviewing files that changed from the base of the PR and between cc73914 and 2e23089.

📒 Files selected for processing (1)
  • src/compute-plane-services/nvca/internal/transporttls/transport_tls.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/compute-plane-services/nvca/internal/transporttls/transport_tls.go

📝 Walkthrough

Walkthrough

Adds Helm configuration for workload transport TLS trust bundles and mount paths. Validates and injects certificate mounts into worker pods. Maps Secret-backed settings into agent configuration and triggers reconciliation for configuration changes.

Changes

Transport TLS configuration

Layer / File(s) Summary
Helm transport-TLS configuration
deploy/helm/nvca-operator/nvca-operator/*, src/compute-plane-services/nvca/deployments/nvca-operator/*, src/compute-plane-services/nvca/scripts/lint_helm.sh
Adds values, schema, ConfigMap rendering, documentation, and Helm rendering tests for trust-bundle references, fingerprints, and mount paths.
Installed bundle mount injection
src/libraries/go/lib/pkg/types/nvca/config/types.go, src/compute-plane-services/nvca/internal/transporttls/*, src/compute-plane-services/nvca/internal/miniservice/transport_tls_test.go, src/compute-plane-services/nvca/pkg/nvca/transport_tls_test.go
Adds mount-path configuration, validation, volume conflict detection, configured certificate paths, and pod injection tests.
Operator configuration mapping
src/compute-plane-services/nvca/pkg/operator/reconcile/nvca_config_mapper.go, src/compute-plane-services/nvca/pkg/operator/reconcile/nvca_config_mapper_test.go
Maps strict ConfigMap YAML and Secret-backed certificates into validated NVCA configuration, with fingerprint and PEM validation.
Configuration reconciliation and rollout
src/compute-plane-services/nvca/pkg/operator/reconcile/{nvcaagent_reconcile.go,rollout.go,backendk8scache.go,transport_tls_config_test.go}
Integrates operator transport-TLS settings into agent configuration, rollout comparison, Secret rotation, and ConfigMap event reconciliation.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Helm
  participant OperatorConfigMap
  participant NVCAConfigMapper
  participant KubernetesSecret
  participant AgentConfigMap
  participant WorkerPod
  Helm->>OperatorConfigMap: Render transportTLS settings
  NVCAConfigMapper->>OperatorConfigMap: Read and decode configuration
  NVCAConfigMapper->>KubernetesSecret: Resolve trust-bundle data
  NVCAConfigMapper->>AgentConfigMap: Apply validated transportTLS configuration
  AgentConfigMap->>WorkerPod: Provide configured certificate mount and path
Loading

Possibly related issues

Suggested reviewers: apartha-nv, kristinapathak

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 3.92% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title uses valid Conventional Commits syntax and accurately describes the new Secret-backed workload transport trust feature.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/cherry-pick-pr-655-to-main

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.12.2)

level=error msg="Running error: context loading failed: failed to load packages: failed to load packages: failed to load with go/packages: err: exit status 1: stderr: go: inconsistent vendoring in /src/compute-plane-services/nvca:\n\tgithub.com/NVIDIA/KAI-scheduler@v0.12.6: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/NVIDIA/k8s-dra-driver-gpu@v0.0.0-20251017125642-cfe35ffd3d2c: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/NVIDIA/nvcf/src/libraries/go/lib@v0.0.0-20260722095202-f5e2792f5630: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/aws/aws-sdk-go@v1.55.5: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/bombsimon/logrusr/v4@v4.1.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/evanphx/json-patch/v5@v5.9.11: is explicitly required in

... [truncated 21721 characters] ...

i: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tk8s.io/apiextensions-apiserver: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tk8s.io/apimachinery: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tk8s.io/client-go: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tk8s.io/component-base: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tsigs.k8s.io/controller-runtime: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\tgolang.org/x/crypto: is replaced in go.mod, but not marked as replaced in vendor/modules.txt\n\n\tTo ignore the vendor directory, use -mod=readonly or -mod=mod.\n\tTo sync the vendor directory, run:\n\t\tgo mod vendor\n"


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

@mikeyrcamp
mikeyrcamp force-pushed the agent/cherry-pick-pr-655-to-main branch from 30a0e8d to 3371a7c Compare August 6, 2026 18:15
@mikeyrcamp
mikeyrcamp marked this pull request as ready for review August 6, 2026 18:15
@mikeyrcamp
mikeyrcamp requested review from a team as code owners August 6, 2026 18:15
@mikeyrcamp
mikeyrcamp requested a review from apartha-nv August 6, 2026 18:15

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (6)
src/compute-plane-services/nvca/pkg/operator/reconcile/transport_tls_config_test.go (1)

294-312: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Avoid asserting on the incidental version cannot be empty error.

Both tests prove that reconciliation ran through the finalizer assertion on the stored backend. The error text comes from unrelated backend validation deep in the reconcile path. That assertion breaks when the message changes, for a reason unrelated to ConfigMap event handling.

♻️ Proposed change
-	require.ErrorContains(t, err, "version cannot be empty")
+	require.Error(t, err, "reconcile must run and report the incomplete test backend")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/compute-plane-services/nvca/pkg/operator/reconcile/transport_tls_config_test.go`
around lines 294 - 312, Update the ConfigMap event tests around
handleConfigMapAdd and handleConfigMapUpdate to stop asserting the incidental
“version cannot be empty” error text. Assert only the outcome relevant to
reconciliation—successful handler execution or a non-message-specific error
expectation—while preserving the stored backend finalizer assertion and existing
test setup.
src/compute-plane-services/nvca/pkg/operator/reconcile/backendk8scache.go (1)

638-673: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Deduplicate the three diff branches and fix the success log text.

The three cases repeat the same cmp.Diff and logging block. Lines 647, 657 and 667 also log success text on the path where the diff is empty and no work happened. That text is misleading during triage.

♻️ Proposed refactor sketch
+	diff := cmp.Diff(oldCM.Data, newCM.Data, cmpopts.EquateEmpty())
+	log.WithField("diff", diff).Debug("configmap data diff")
+	if diff == "" {
+		log.Debug("configmap data unchanged, skipping")
+		return nil
+	}
+
 	switch {
 	case configMapUpdateForcesNVCAReconcile(newCM.Name):
-		log.Debugf("found %s configmap update, syncing current NVCFBackend", newCM.Name)
-		diff := cmp.Diff(oldCM.Data, newCM.Data, cmpopts.EquateEmpty())
-		log.WithField("diff", diff).Debugf("configmap data diff")
-		if diff != "" {
-			log.Info("configmap data has changed, forcing rollout")
-			return c.syncCurrentBackendForConfigMapChange(ctx, log)
-		}
-		log.Debug("successfully synced current NVCFBackend")
-		return nil
+		log.Info("configmap data has changed, forcing rollout")
+		return c.syncCurrentBackendForConfigMapChange(ctx, log)
 	case newCM.Name == nvcfBackendHelmManagedConfigMapName,
 		newCM.Name == nvcfBackendSelfManagedConfigMapName:
-		...
+		log.Infof("configmap %s data has changed, dispatch cluster reconcile event", newCM.Name)
+		c.dispatchReconcileClusterFunc(ctx)
+		return nil
 	}

Keep the shutdown sentinel check before the diff computation so that path stays a no-op.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/compute-plane-services/nvca/pkg/operator/reconcile/backendk8scache.go`
around lines 638 - 673, Refactor the config-map update handling around
configMapUpdateForcesNVCAReconcile and the
nvcfBackendHelmManagedConfigMapName/nvcfBackendSelfManagedConfigMapName cases to
compute and log cmp.Diff once after preserving the
cleanup.ShutdownSentinelConfigMapName early return. Keep each branch’s existing
action when diff is non-empty, but remove or revise the misleading success logs
so empty diffs do not claim synchronization or event dispatch occurred.
src/compute-plane-services/nvca/pkg/operator/reconcile/nvcaagent_reconcile.go (2)

1437-1445: 🩺 Stability & Availability | 🔵 Trivial

Operational note on live API reads per reconcile.

getAgentConfigToMerge now reads two ConfigMaps and one Secret through the typed client, and both setupAgentConfigConfigMap and newAgentConfigChangedCheck call it in the same reconcile. That is four uncached reads per reconcile. If reconcile rate grows, consider serving the ConfigMap reads from the existing operator-namespace informer cache and keeping only the Secret read live.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/compute-plane-services/nvca/pkg/operator/reconcile/nvcaagent_reconcile.go`
around lines 1437 - 1445, The reconcile path currently performs repeated live
API reads for agent configuration. Update getRawAgentConfigToMerge and the
related setupAgentConfigConfigMap/newAgentConfigChangedCheck flow to read the
operator-namespace ConfigMaps from the existing informer cache, while retaining
only the Secret lookup as a live typed-client read; preserve the current merge
behavior and error handling.

1449-1452: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use the ConfigMap name constant in the conflict error.

The message hardcodes agent-config-merge. agentConfigMergeConfigMapName already holds that name and is used elsewhere in this package. The literal can drift from the constant.

♻️ Proposed change
 	if mergeCfg.Workload.TransportTLS != nil {
 		return nvcaconfig.Config{}, false,
-			fmt.Errorf("agent-config-merge and %s both configure workload.transportTLS", nvcaOperatorConfigMapName)
+			fmt.Errorf("%s and %s both configure workload.transportTLS",
+				agentConfigMergeConfigMapName, nvcaOperatorConfigMapName)
 	}

TestGetAgentConfigToMerge_RejectsTransportTLSSourceConflict asserts only on both configure workload.transportTLS, so the test stays green.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/compute-plane-services/nvca/pkg/operator/reconcile/nvcaagent_reconcile.go`
around lines 1449 - 1452, Update the conflict error in the agent configuration
merge logic to use the existing agentConfigMergeConfigMapName constant instead
of the hardcoded “agent-config-merge” string, while preserving the current error
wording and behavior.
src/compute-plane-services/nvca/pkg/operator/reconcile/nvca_config_mapper.go (1)

200-259: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider replacing the custom PEM scanner with pem.Decode iteration.

findCertificatePEMEnd and isCompletePEMLine reimplement PEM block boundary detection. The stated goal is to reject leading or trailing non-PEM data that pem.Decode skips silently. One prefix check plus a pem.Decode loop reaches the same result with less code to maintain.

♻️ Proposed simplification
 func validateCertificateOnlyPEM(data []byte) error {
-	const (
-		certificateBegin = "-----BEGIN CERTIFICATE-----"
-		certificateEnd   = "-----END CERTIFICATE-----"
-	)
-
+	const certificateBegin = "-----BEGIN CERTIFICATE-----"
 	remaining := bytes.TrimSpace(data)
 	if len(remaining) == 0 {
 		return fmt.Errorf("contains no certificates")
 	}
 	certificates := 0
 	for len(remaining) > 0 {
-		if !bytes.HasPrefix(remaining, []byte(certificateBegin)) ||
-			!isCompletePEMLine(remaining, len(certificateBegin)) {
+		if !bytes.HasPrefix(remaining, []byte(certificateBegin)) {
 			return fmt.Errorf("contains non-PEM data")
 		}
-		end := findCertificatePEMEnd(remaining, certificateEnd)
-		if end == -1 || bytes.Contains(remaining[len(certificateBegin):end], []byte("\n-----BEGIN")) {
-			return fmt.Errorf("contains malformed certificate PEM")
-		}
-		pemBlock := remaining[:end+len("\n"+certificateEnd)]
-		block, rest := pem.Decode(pemBlock)
-		if block == nil || len(bytes.TrimSpace(rest)) != 0 {
+		block, rest := pem.Decode(remaining)
+		if block == nil {
 			return fmt.Errorf("contains malformed certificate PEM")
 		}
 		if block.Type != "CERTIFICATE" {
 			return fmt.Errorf("contains %q PEM block", block.Type)
 		}
 		if _, err := x509.ParseCertificate(block.Bytes); err != nil {
 			return fmt.Errorf("parse certificate: %w", err)
 		}
 		certificates++
-		remaining = bytes.TrimSpace(remaining[len(pemBlock):])
+		remaining = bytes.TrimSpace(rest)
 	}

Keep the existing error strings, because TestSetupAgentConfigConfigMap_SecretTrustFailurePreservesLastGoodConfig asserts on contains non-PEM data.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/compute-plane-services/nvca/pkg/operator/reconcile/nvca_config_mapper.go`
around lines 200 - 259, Replace the custom boundary scanning in
validateCertificateOnlyPEM with iterative pem.Decode processing: require each
remaining segment to begin with a complete CERTIFICATE PEM header, decode one
block, validate its type and certificate contents, then continue with the
undecoded remainder. Remove findCertificatePEMEnd and isCompletePEMLine if no
longer needed, while preserving the existing error strings, including “contains
non-PEM data,” and rejecting leading or trailing non-PEM content.
src/compute-plane-services/nvca/pkg/operator/reconcile/BUILD.bazel (1)

16-16: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Place the new sources in sorted order.

Move nvca_config_mapper.go before nvcaagent_reconcile.go, and move nvca_config_mapper_test.go before nvcaagent_reconcile_test.go. Run the repository's Bazel formatter.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/compute-plane-services/nvca/pkg/operator/reconcile/BUILD.bazel` at line
16, Update the source list in the BUILD file so nvca_config_mapper.go precedes
nvcaagent_reconcile.go and nvca_config_mapper_test.go precedes
nvcaagent_reconcile_test.go, then run the repository’s Bazel formatter.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/compute-plane-services/nvca/pkg/operator/reconcile/backendk8scache.go`:
- Around line 693-697: Update the UpdateFunc callback around
cmnotel.InvokeWithSpan so the context supplied to its span callback is passed to
handleConfigMapUpdate instead of the outer ctx, matching the existing Add
handler propagation pattern.
- Around line 594-595: Update the error path in the reconciliation method
containing the “failed to sync current NVCFBackend” log to stop logging the
error before returning it. Return the originating err wrapped with contextual
text using the project’s supported error-wrapping mechanism, allowing the caller
to perform the single error log.
- Around line 584-586: Update configMapAddForcesNVCAReconcile so the ConfigMap
informer’s initial-list Add event does not force an agent rollout: return false
for nvcaOperatorConfigMapName, or add an explicit post-sync guard that prevents
forceRollout during initial-list Adds while preserving normal reconciliation.

---

Nitpick comments:
In `@src/compute-plane-services/nvca/pkg/operator/reconcile/backendk8scache.go`:
- Around line 638-673: Refactor the config-map update handling around
configMapUpdateForcesNVCAReconcile and the
nvcfBackendHelmManagedConfigMapName/nvcfBackendSelfManagedConfigMapName cases to
compute and log cmp.Diff once after preserving the
cleanup.ShutdownSentinelConfigMapName early return. Keep each branch’s existing
action when diff is non-empty, but remove or revise the misleading success logs
so empty diffs do not claim synchronization or event dispatch occurred.

In `@src/compute-plane-services/nvca/pkg/operator/reconcile/BUILD.bazel`:
- Line 16: Update the source list in the BUILD file so nvca_config_mapper.go
precedes nvcaagent_reconcile.go and nvca_config_mapper_test.go precedes
nvcaagent_reconcile_test.go, then run the repository’s Bazel formatter.

In
`@src/compute-plane-services/nvca/pkg/operator/reconcile/nvca_config_mapper.go`:
- Around line 200-259: Replace the custom boundary scanning in
validateCertificateOnlyPEM with iterative pem.Decode processing: require each
remaining segment to begin with a complete CERTIFICATE PEM header, decode one
block, validate its type and certificate contents, then continue with the
undecoded remainder. Remove findCertificatePEMEnd and isCompletePEMLine if no
longer needed, while preserving the existing error strings, including “contains
non-PEM data,” and rejecting leading or trailing non-PEM content.

In
`@src/compute-plane-services/nvca/pkg/operator/reconcile/nvcaagent_reconcile.go`:
- Around line 1437-1445: The reconcile path currently performs repeated live API
reads for agent configuration. Update getRawAgentConfigToMerge and the related
setupAgentConfigConfigMap/newAgentConfigChangedCheck flow to read the
operator-namespace ConfigMaps from the existing informer cache, while retaining
only the Secret lookup as a live typed-client read; preserve the current merge
behavior and error handling.
- Around line 1449-1452: Update the conflict error in the agent configuration
merge logic to use the existing agentConfigMergeConfigMapName constant instead
of the hardcoded “agent-config-merge” string, while preserving the current error
wording and behavior.

In
`@src/compute-plane-services/nvca/pkg/operator/reconcile/transport_tls_config_test.go`:
- Around line 294-312: Update the ConfigMap event tests around
handleConfigMapAdd and handleConfigMapUpdate to stop asserting the incidental
“version cannot be empty” error text. Assert only the outcome relevant to
reconciliation—successful handler execution or a non-message-specific error
expectation—while preserving the stored backend finalizer assertion and existing
test setup.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c603c11b-8d41-4060-9aad-3e133a3c5df0

📥 Commits

Reviewing files that changed from the base of the PR and between 6bb0cde and 3371a7c.

⛔ Files ignored due to path filters (1)
  • src/compute-plane-services/nvca/vendor/github.com/NVIDIA/nvcf/src/libraries/go/lib/pkg/types/nvca/config/types.go is excluded by !**/vendor/**
📒 Files selected for processing (22)
  • deploy/helm/nvca-operator/nvca-operator/README.md
  • deploy/helm/nvca-operator/nvca-operator/templates/operator-config-cm.yaml
  • deploy/helm/nvca-operator/nvca-operator/values.schema.json
  • deploy/helm/nvca-operator/nvca-operator/values.yaml
  • src/compute-plane-services/nvca/deployments/nvca-operator/README.md
  • src/compute-plane-services/nvca/deployments/nvca-operator/templates/operator-config-cm.yaml
  • src/compute-plane-services/nvca/deployments/nvca-operator/values.schema.json
  • src/compute-plane-services/nvca/deployments/nvca-operator/values.yaml
  • src/compute-plane-services/nvca/internal/miniservice/transport_tls_test.go
  • src/compute-plane-services/nvca/internal/transporttls/BUILD.bazel
  • src/compute-plane-services/nvca/internal/transporttls/transport_tls.go
  • src/compute-plane-services/nvca/internal/transporttls/transport_tls_test.go
  • src/compute-plane-services/nvca/pkg/nvca/transport_tls_test.go
  • src/compute-plane-services/nvca/pkg/operator/reconcile/BUILD.bazel
  • src/compute-plane-services/nvca/pkg/operator/reconcile/backendk8scache.go
  • src/compute-plane-services/nvca/pkg/operator/reconcile/nvca_config_mapper.go
  • src/compute-plane-services/nvca/pkg/operator/reconcile/nvca_config_mapper_test.go
  • src/compute-plane-services/nvca/pkg/operator/reconcile/nvcaagent_reconcile.go
  • src/compute-plane-services/nvca/pkg/operator/reconcile/rollout.go
  • src/compute-plane-services/nvca/pkg/operator/reconcile/transport_tls_config_test.go
  • src/compute-plane-services/nvca/scripts/lint_helm.sh
  • src/libraries/go/lib/pkg/types/nvca/config/types.go

@mikeyrcamp

Copy link
Copy Markdown
Contributor Author

@coderabbitai Thanks — I agree with the three actionable findings in backendk8scache.go:

  1. Avoid forcing an NVCA rollout from the nvca-operator-config initial-list Add event.
  2. Propagate the span context into handleConfigMapUpdate.
  3. Wrap the current-backend sync error instead of logging and returning it at the same layer.

I am merging this PR and will address these in a focused fast-follow. The remaining suggestions are non-blocking cleanup items and are out of scope for this follow-up.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

@mikeyrcamp Thanks for the clear disposition.

The three backendk8scache.go findings remain valid and are suitable for the focused fast-follow. I understand that the remaining suggestions are non-blocking and out of scope for this PR.

Would you like me to create a GitHub follow-up issue for the three items?

🐇 ✅

You are interacting with an AI system.

@mikeyrcamp
mikeyrcamp force-pushed the agent/cherry-pick-pr-655-to-main branch from 3371a7c to cc73914 Compare August 6, 2026 20:29
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@mikeyrcamp

Copy link
Copy Markdown
Contributor Author

@coderabbitai The fast-follow is tracked in #713, including the two remaining ConfigMap-handler follow-ups. The span-context item is already resolved on the rebased commit.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

@mikeyrcamp Acknowledged. GitHub issue #713 tracks the two remaining ConfigMap-handler follow-ups. The span-context propagation item is resolved in the rebased commit. No additional follow-up issue is needed.


✏️ Learnings added
Learnt from: mikeyrcamp
URL: https://github.com/NVIDIA/nvcf/pull/672

Timestamp: 2026-08-06T20:32:15.948Z
Learning: For GitHub pull request `#672` in NVIDIA/nvcf, issue `#713` tracks the two remaining `ConfigMap`-handler follow-ups in `src/compute-plane-services/nvca/pkg/operator/reconcile/backendk8scache.go`: avoid an NVCA rollout from the initial-list Add event for `nvca-operator-config`, and wrap the current-backend sync error rather than logging and returning it at the same layer. The span-context propagation into `handleConfigMapUpdate` is already resolved on the rebased commit.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

You are interacting with an AI system.

@mikeyrcamp
mikeyrcamp enabled auto-merge August 6, 2026 20:33
@mikeyrcamp
mikeyrcamp removed the request for review from apartha-nv August 6, 2026 20:44
@mikeyrcamp

Copy link
Copy Markdown
Contributor Author

Superseded by #718, which rebases this transport-TLS work onto current main and adds the worker-init installer changes.

@mikeyrcamp mikeyrcamp closed this Aug 6, 2026
auto-merge was automatically disabled August 6, 2026 21:30

Pull request was closed

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.

2 participants