Skip to content

ESO-566: Allow overriding operand container args outside the ExternalSecretsConfig API - #174

Open
bharath-b-rh wants to merge 2 commits into
openshift:mainfrom
bharath-b-rh:main
Open

ESO-566: Allow overriding operand container args outside the ExternalSecretsConfig API#174
bharath-b-rh wants to merge 2 commits into
openshift:mainfrom
bharath-b-rh:main

Conversation

@bharath-b-rh

@bharath-b-rh bharath-b-rh commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a temporary operator env-var escape hatch to override operand container args via comma-separated --key=value flags:
    • OPERAND_EXTERNAL_SECRETS_ARGS
    • OPERAND_WEBHOOK_ARGS
    • OPERAND_CERT_CONTROLLER_ARGS
    • OPERAND_BITWARDEN_SDK_SERVER_ARGS
  • Merge semantics rebuild desired args from operator defaults, then override matching flag keys / append new ones. Positional base tokens are preserved. Invalid (non---) overrides are rejected as UserConfigurationError and surface as ExternalSecretsConfig Degraded.
  • Marked for removal in v1.4.0 (backport to 1.1/1.2; v1.3.0 advancedOverrides is the migration path).

E2E / test helpers

  • Unit coverage for parse/merge/apply and getDeploymentObject wiring.
  • E2E feature Feature:OverrideOperandArgs sets env through OLM Subscription.spec.config.env (typed OLM APIs), waits until the Ready manager pod has the env, then verifies operand Deployments (including Degraded + recovery).
  • Shared setOperatorManagerEnv / unsetOperatorManagerEnv helpers are reusable for other manager env vars (OPERATOR_LOG_LEVEL, METRICS_*, etc.).

Test plan

  • Unit: go test ./pkg/controller/external_secrets/ -count=1
  • Deploy operator image that includes this change
  • E2E: make test-e2e E2E_GINKGO_LABEL_FILTER="Feature:OverrideOperandArgs"
  • Confirm invalid args mark ESC Degraded with a clear message, and correcting env recovers to Ready
  • Confirm clearing env restores default operand args

Related to #154

Summary by CodeRabbit

  • New Features

    • Added support for overriding controller, webhook, certificate controller, and Bitwarden SDK server container arguments through environment variables.
    • Overrides preserve existing positional arguments and support adding or replacing flags.
  • Bug Fixes

    • Invalid argument overrides are rejected with clear configuration errors, while corrected settings restore normal deployment behavior.
  • Documentation

    • Documented end-to-end testing and filtering for operand argument overrides.
  • Tests

    • Added comprehensive unit and end-to-end coverage for valid, invalid, and restored argument configurations.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Aug 7, 2026
@openshift-ci-robot

openshift-ci-robot commented Aug 7, 2026

Copy link
Copy Markdown

@bharath-b-rh: This pull request references ESO-566 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

  • Add a temporary operator env-var escape hatch to override operand container args via comma-separated --key=value flags:
  • OPERAND_EXTERNAL_SECRETS_ARGS
  • OPERAND_WEBHOOK_ARGS
  • OPERAND_CERT_CONTROLLER_ARGS
  • OPERAND_BITWARDEN_SDK_SERVER_ARGS
  • Merge semantics rebuild desired args from operator defaults, then override matching flag keys / append new ones. Positional base tokens are preserved. Invalid (non---) overrides are rejected as UserConfigurationError and surface as ExternalSecretsConfig Degraded.
  • Marked for removal in v1.4.0 (backported to 1.1/1.2; v1.3.0 advancedOverrides is the migration path).

E2E / test helpers

  • Unit coverage for parse/merge/apply and getDeploymentObject wiring.
  • E2E feature Feature:OverrideOperandArgs sets env through OLM Subscription.spec.config.env (typed OLM APIs), waits until the Ready manager pod has the env, then verifies operand Deployments (including Degraded + recovery).
  • Shared setOperatorManagerEnv / unsetOperatorManagerEnv helpers are reusable for other manager env vars (OPERATOR_LOG_LEVEL, METRICS_*, etc.).

Test plan

  • Unit: go test ./pkg/controller/external_secrets/ -count=1
  • Deploy operator image that includes this change
  • E2E: make test-e2e E2E_GINKGO_LABEL_FILTER="Feature:OverrideOperandArgs"
  • Confirm invalid args mark ESC Degraded with a clear message, and correcting env recovers to Ready
  • Confirm clearing env restores default operand args

Related to #154

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Aug 7, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: bharath-b-rh

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 7, 2026
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • tools/go.sum is excluded by !**/*.sum

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: e111bb83-7b3f-4b3c-b050-a1f2b45b18de

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

The operator now supports environment-based argument overrides for four operand Deployments. It parses and merges -- flags, reports invalid configuration, and adds unit and end-to-end coverage. Module dependencies and E2E OLM client setup were also updated.

Changes

Operand argument override support

Layer / File(s) Summary
Deployment override flow
pkg/controller/external_secrets/constants.go, pkg/controller/external_secrets/deployments.go
The operator defines override environment variables and applies validated, merged arguments to controller, webhook, cert-controller, and Bitwarden Deployments.
Unit validation
pkg/controller/external_secrets/deployments_test.go
Tests cover parsing, merging, validation errors, container application, deployment generation, and state preservation.
End-to-end validation
test/e2e/helpers_test.go, test/e2e/operand_args_test.go, test/e2e/e2e_suite_test.go, test/e2e/trusted_ca_bundle_test.go, test/e2e/README.md
E2E helpers update manager configuration and verify rollout, operand arguments, degraded status, recovery, cleanup, and OLM scheme registration.
Module dependency refresh
go.mod, cmd/external-secrets-operator/go.mod, test/go.mod, tools/go.mod
Kubernetes, OpenAPI, CEL, gnostic, GenProto, Logrus, and related indirect dependencies were updated or removed.

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

Suggested reviewers: siddhibhor-56, trilokgeer

Sequence Diagram(s)

sequenceDiagram
  participant E2ESuite
  participant ManagerEnvironment
  participant DeploymentGenerator
  participant OperandDeployment
  participant ExternalSecretsConfig
  E2ESuite->>ManagerEnvironment: Set OPERAND_*_ARGS
  ManagerEnvironment->>DeploymentGenerator: Apply manager environment
  DeploymentGenerator->>OperandDeployment: Generate updated arguments
  E2ESuite->>OperandDeployment: Verify arguments and readiness
  E2ESuite->>ExternalSecretsConfig: Check Ready or Degraded condition
Loading

Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 4 warnings)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error Invalid operand args are included verbatim in errors, then logged by reconciliation; a malformed value such as not-a-flag=SECRET can expose a token or API key. Do not include raw override tokens in errors or logs. Report only a safe reason and, if needed, the flag name with its value redacted.
Docstring Coverage ⚠️ Warning Docstring coverage is 44.44% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Test Structure And Quality ⚠️ Warning The new suite has bare assertions, uses BeforeAll/AfterAll instead of per-test lifecycle hooks, and leaves Bitwarden/ESC resources or network-policy state after AfterAll. Add diagnostic messages to every assertion. Use failure-safe setup and cleanup hooks. Restore or delete the ESC, network policy, namespace, and TLS Secret created or changed by the suite.
Microshift Test Compatibility ⚠️ Warning The new Operand Args suite uses OLM ClusterServiceVersion and Subscription APIs, which MicroShift lacks, and has no [Skipped:MicroShift], [apigroup:...] tag, or MicroShift guard. MicroShift compatibility notice: verify with /payload-job periodic-ci-openshift-microshift-release-4.22-periodics-e2e-aws-ovn-ocp-conformance, or add [apigroup:operators.coreos.com], [Skipped:MicroShift], or a runtime skip.
Ipv6 And Disconnected Network Test Compatibility ⚠️ Warning The new Ginkgo suite calls ensureBitwardenOperandReady, which creates a reachability Pod using hardcoded docker.io/curlimages/curl:latest; disconnected CI cannot pull this public image. Mirror the curl image or use an internal runner. Also run /payload-job periodic-ci-openshift-release-master-nightly-4.22-e2e-metal-ipi-ovn-ipv6.
✅ Passed checks (10 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: allowing operand container argument overrides outside the ExternalSecretsConfig API.
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.
Stable And Deterministic Test Names ✅ Passed All added Ginkgo titles in test/e2e/operand_args_test.go and the suite Describe use fixed descriptive strings; no pod names, timestamps, UUIDs, namespaces, nodes, IPs, or interpolated values appear.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The new Operand Args Ginkgo suite uses Kubernetes APIs to update env vars and checks Deployments, pods, and config status; it has no node counts, topology constraints, anti-affinity, failover, drai...
Topology-Aware Scheduling Compatibility ✅ Passed The PR changes operand argument overrides and E2E helpers only; it adds no affinity, spread, node selector, toleration, replica strategy, or PDB scheduling constraints.
Ote Binary Stdout Contract ✅ Passed The PR adds no stdout writes in process-level code; the suite output uses GinkgoWriter, and new BeforeSuite code only registers an OLM scheme.
No-Weak-Crypto ✅ Passed The full PR diff adds no MD5, SHA-1, DES, RC4, Blowfish, or ECB use, custom crypto, or secret comparisons; CA tests use ECDSA P-256 with crypto/rand.
Container-Privileges ✅ Passed The PR adds only argument overrides. All four generated operand containers use allowPrivilegeEscalation=false, drop ALL, runAsNonRoot=true, and RuntimeDefault; no prohibited true settings or SYS_AD...
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@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: 4

🧹 Nitpick comments (3)
pkg/controller/external_secrets/deployments.go (1)

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

Consider returning a clone for the empty-override path.

mergeContainerArgs returns base directly when overrides is empty, but returns a clone otherwise. The inconsistent aliasing is harmless today because the caller assigns the result back to the same field. A clone in both paths removes the aliasing surprise for future callers.

🤖 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 `@pkg/controller/external_secrets/deployments.go` around lines 843 - 872,
Update mergeContainerArgs so it returns a clone of base when overrides is empty,
matching the cloned result used for non-empty overrides and avoiding direct
slice aliasing.
test/e2e/helpers_test.go (1)

438-464: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Sort the appended env var names to keep the merge deterministic.

The loop at Line 457 iterates a Go map, so the append order of new env vars varies between calls. Each call to setOperatorManagerEnv with the same four OPERAND_*_ARGS values can therefore produce a different Env slice order. That order change is a spec diff, so it triggers an extra operator rollout and lengthens the wait in waitForOperatorManagerEnv.

Also, Line 452 duplicates the assignment on Line 455 and can be removed.

♻️ Proposed fix for deterministic ordering
 	for _, env := range existing {
 		if _, drop := remove[env.Name]; drop {
 			continue
 		}
 		if val, ok := set[env.Name]; ok {
 			env.Value = val
 			env.ValueFrom = nil
-			seen[env.Name] = true
 		}
 		out = append(out, env)
 		seen[env.Name] = true
 	}
-	for name, val := range set {
-		if seen[name] {
-			continue
-		}
-		out = append(out, corev1.EnvVar{Name: name, Value: val})
-	}
+	names := make([]string, 0, len(set))
+	for name := range set {
+		if !seen[name] {
+			names = append(names, name)
+		}
+	}
+	sort.Strings(names)
+	for _, name := range names {
+		out = append(out, corev1.EnvVar{Name: name, Value: set[name]})
+	}
 	return out

Add "sort" to the imports.

🤖 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 `@test/e2e/helpers_test.go` around lines 438 - 464, Update mergeEnvVars to sort
the keys from set before appending new corev1.EnvVar entries, preserving
deterministic Env slice ordering across calls; add the required sort import.
Remove the redundant seen[env.Name] assignment inside the set-update branch,
keeping the assignment after the branch.
test/e2e/operand_args_test.go (1)

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

Confirm the coupling between the positional-override spec and the recovery spec.

The spec at Line 190 leaves OPERAND_WEBHOOK_ARGS="webhook,--port=10251" set. The spec at Line 208 depends on that Degraded state. The Ordered decorator preserves the order, but a label filter or --focus that selects only the recovery spec makes its first assertion at Line 211 fail. Consider moving the invalid-args setup into the recovery spec itself so the spec is self-contained.

🤖 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 `@test/e2e/operand_args_test.go` around lines 190 - 224, Make the recovery spec
“should recover from Degraded when invalid OPERAND_*_ARGS are corrected”
self-contained by applying the invalid webhook positional override within that
spec before asserting Degraded. Do not rely on the preceding positional-override
spec or execution order; retain the existing correction, readiness wait, and
valid-override verification flow.
🤖 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 `@cmd/external-secrets-operator/go.mod`:
- Around line 32-48: Upgrade github.com/google/cel-go from v0.27.0 to v0.29.0 in
both dependency graphs, regenerate dependent artifacts, and preserve checksum
validation without changes. Update affected entries in
cmd/external-secrets-operator/go.mod lines 32-48, 80, and 89-90; go.mod lines
28-43; test/go.mod lines 12-14, 36-52, and 73; and tools/go.mod lines 90-103,
129-130, 215, 260, and 270-271. Document the license review for
github.com/operator-framework/api v0.42.0 and ensure releases generate SBOMs,
provenance attestations, and signed artifacts.

In `@test/e2e/helpers_test.go`:
- Around line 348-360: Update the CSV listing error handling in findOperatorCSV
to also tolerate Kubernetes API no-match errors by checking
meta.IsNoMatchError(err) alongside k8serrors.IsNotFound(err). Add the required
api/meta import, while preserving propagation of all other list errors so
non-OLM clusters can fall back to the Deployment path.

In `@test/e2e/operand_args_test.go`:
- Around line 94-95: Update the suite cleanup around ensureBitwardenOperandReady
so the Bitwarden plugin enabled during BeforeAll is disabled and its Deployment
is removed in AfterAll, restoring the shared ExternalSecretsConfig for later
suites. Ensure the cleanup covers the setup at the referenced provisioning block
and the related setup lines 104-115, while preserving existing operator
environment-variable cleanup.

In `@test/e2e/README.md`:
- Line 140: Move the OverrideOperandArgs row out of the e2e_test.go table in the
README, then add a separate operand_args_test.go heading and table containing
that row, matching the structure used for trusted_ca_bundle_test.go.

---

Nitpick comments:
In `@pkg/controller/external_secrets/deployments.go`:
- Around line 843-872: Update mergeContainerArgs so it returns a clone of base
when overrides is empty, matching the cloned result used for non-empty overrides
and avoiding direct slice aliasing.

In `@test/e2e/helpers_test.go`:
- Around line 438-464: Update mergeEnvVars to sort the keys from set before
appending new corev1.EnvVar entries, preserving deterministic Env slice ordering
across calls; add the required sort import. Remove the redundant seen[env.Name]
assignment inside the set-update branch, keeping the assignment after the
branch.

In `@test/e2e/operand_args_test.go`:
- Around line 190-224: Make the recovery spec “should recover from Degraded when
invalid OPERAND_*_ARGS are corrected” self-contained by applying the invalid
webhook positional override within that spec before asserting Degraded. Do not
rely on the preceding positional-override spec or execution order; retain the
existing correction, readiness wait, and valid-override verification flow.
🪄 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: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 8eab44f7-e466-46c5-a438-584b33fdf6ca

📥 Commits

Reviewing files that changed from the base of the PR and between 65f39bd and efc09ba.

⛔ Files ignored due to path filters (202)
  • cmd/external-secrets-operator/go.sum is excluded by !**/*.sum
  • go.sum is excluded by !**/*.sum
  • go.work is excluded by !**/*.work
  • go.work.sum is excluded by !**/*.sum
  • test/go.sum is excluded by !**/*.sum
  • tools/go.sum is excluded by !**/*.sum
  • vendor/github.com/go-openapi/jsonpointer/.cliff.toml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/CONTRIBUTORS.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/NOTICE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/pointer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/.cliff.toml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/.editorconfig is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/CONTRIBUTORS.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/NOTICE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/internal/normalize_url.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/reference.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.codecov.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.mockery.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/cmd_utils.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/convert.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/convert_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/format.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/sizeof.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/type_constraints.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/file.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/path.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/go.work is excluded by !**/*.work, !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/go.work.sum is excluded by !**/*.sum, !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/name_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/ifaces.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/registry_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/registry.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/adapter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/pool.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/writer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/concat.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/loading.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/initialism_index.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/name_lexem.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/name_mangler.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/pools.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/split.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/string_bytes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/net.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/collection_formats.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/strings.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/BUILD.bazel is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/env.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/folding.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/library.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/optimizer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/program.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/templates/authoring.tmpl is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/validator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/checker/checker.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/checker/env.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/checker/scopes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/ast/ast.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/debug/debug.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/env/BUILD.bazel is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/env/env.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/BUILD.bazel is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/bool.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/bytes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/double.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/duration.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/int.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/json_value.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/list.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/null.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/object.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/pb/type.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/string.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/timestamp.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/uint.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/bindings.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/comprehensions.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/extension_option_factory.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/formatting_v2.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/native.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/regex.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/interpreter/attribute_patterns.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/interpreter/attributes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/interpreter/interpretable.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/interpreter/interpreter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/interpreter/planner.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/parser/helper.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/gnostic-models/extensions/extension.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/gnostic-models/openapiv2/OpenAPIv2.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/gnostic-models/openapiv3/OpenAPIv3.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/gnostic-models/openapiv3/annotations.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/intern.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/license.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/Makefile is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/buffer/pool.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/helpers.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/bytestostr.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/bytestostr_nounsafe.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jwriter/writer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/raw.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/unknown_fields.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/lib/release/release.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/lib/version/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/lib/version/version.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/lib/version/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/operator-framework/api/pkg/operators/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/operators/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/catalogsource_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/clusterserviceversion.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/clusterserviceversion_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/installplan_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/subscription_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/sirupsen/logrus/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/CHANGELOG.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/appveyor.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/entry.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/hooks.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/logger.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/logrus.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/terminal_check_bsd.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/terminal_check_unix.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/terminal_check_wasi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/terminal_check_wasip1.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/text_formatter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stoewer/go-strcase/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stoewer/go-strcase/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stoewer/go-strcase/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stoewer/go-strcase/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stoewer/go-strcase/camel.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stoewer/go-strcase/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stoewer/go-strcase/helper.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stoewer/go-strcase/kebab.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stoewer/go-strcase/snake.go is excluded by !**/vendor/**, !vendor/**
  • vendor/modules.txt is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (12)
  • cmd/external-secrets-operator/go.mod
  • go.mod
  • pkg/controller/external_secrets/constants.go
  • pkg/controller/external_secrets/deployments.go
  • pkg/controller/external_secrets/deployments_test.go
  • test/e2e/README.md
  • test/e2e/e2e_suite_test.go
  • test/e2e/helpers_test.go
  • test/e2e/operand_args_test.go
  • test/e2e/trusted_ca_bundle_test.go
  • test/go.mod
  • tools/go.mod

Comment thread cmd/external-secrets-operator/go.mod
Comment thread test/e2e/helpers_test.go
Comment thread test/e2e/operand_args_test.go
Comment thread test/e2e/README.md Outdated
… typed OLM e2e helpers

Signed-off-by: Bharath B <bhb@redhat.com>
…SecretsConfig API

Signed-off-by: Bharath B <bhb@redhat.com>
@openshift-ci

openshift-ci Bot commented Aug 8, 2026

Copy link
Copy Markdown

@bharath-b-rh: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants