Skip to content

CM-786: Updates controller override arg list to allow certificate-request-minimum-backoff-duration and fmt changes#407

Merged
openshift-merge-bot[bot] merged 2 commits intoopenshift:masterfrom
bharath-b-rh:cm-786
Apr 15, 2026
Merged

CM-786: Updates controller override arg list to allow certificate-request-minimum-backoff-duration and fmt changes#407
openshift-merge-bot[bot] merged 2 commits intoopenshift:masterfrom
bharath-b-rh:cm-786

Conversation

@bharath-b-rh
Copy link
Copy Markdown
Contributor

@bharath-b-rh bharath-b-rh commented Apr 14, 2026

The PR has following changes:

Summary by CodeRabbit

  • New Features

    • Added support for the --certificate-request-minimum-backoff-duration flag in cert-manager controller deployment overrides.
  • Tests

    • Added test helpers to centralize informer/client setup and reduced duplicated test setup.
    • Expanded table-driven tests for deployment override validation, covering accepted/rejected args, scoping, error cases, and nil configs.
  • Style / Refactor

    • Formatting and alignment improvements across test files.

Signed-off-by: Bharath B <bhb@redhat.com>
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Apr 14, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 14, 2026

@bharath-b-rh: This pull request references CM-786 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 task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

The PR has following changes:

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.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 14, 2026

Walkthrough

Refactored cert-manager test setup into shared helpers; added support for the --certificate-request-minimum-backoff-duration controller override arg; introduced comprehensive table-driven tests for container-arg validation across controller/webhook/CA injector; and applied formatting/alignment edits to several test files.

Changes

Cohort / File(s) Summary
Cert-Manager Test Helper Refactoring
pkg/controller/certmanager/deployment_helper_test.go
Added setupSyncedFakeCertManagerInformer(t, ctx) and withFakeCertManagerForTest(t, ctx, fakeClient, events, obj) helpers; removed duplicated informer/watch setup across tests and replaced per-test create/delete event waits with helper usage.
Cert-Manager Deployment Validation Enhancement
pkg/controller/certmanager/deployment_overrides_validation.go, pkg/controller/certmanager/deployment_overrides_validation_test.go
Added --certificate-request-minimum-backoff-duration to controller override allowlist. Added TestWithContainerArgsValidateHook: table-driven tests covering missing cluster object (IsNotFound), accepted controller/webhook/CA injector args (various forms), rejection messages for unsupported args, scoping between deployments, nil-config skipping, and unsupported deployment-name error cases.
Test Formatting & Minor Cleanup
pkg/controller/common/client_test.go, pkg/controller/istiocsr/utils_test.go, pkg/controller/trustmanager/deployments_test.go
Whitespace and struct-literal formatting changes, minor reformatting of helper stubs and test-case fields; no behavioral changes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 9 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (9 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the two main changes: adding certificate-request-minimum-backoff-duration to the controller override arg list and applying formatting changes.
Stable And Deterministic Test Names ✅ Passed All test names in the pull request are stable and deterministic, using static hardcoded strings without dynamic content like timestamps, UUIDs, or generated identifiers.
Test Structure And Quality ✅ Passed The pull request does not include any changes to Ginkgo-based tests; all altered tests are standard Go unit tests using the testing package and testify assertions.
Microshift Test Compatibility ✅ Passed PR contains only standard Go unit tests using testing package, not Ginkgo e2e tests. All tests use Kubernetes APIs compatible with MicroShift.
Single Node Openshift (Sno) Test Compatibility ✅ Passed This PR contains only standard Go unit tests using Test* convention with *testing.T parameters. No Ginkgo e2e tests are present in modified files. Changes consist of refactoring unit test helpers, adding TestWithContainerArgsValidateHook unit test, and code formatting—all local unit tests without cluster infrastructure or SNO compatibility concerns.
Topology-Aware Scheduling Compatibility ✅ Passed PR adds --certificate-request-minimum-backoff-duration flag to controller overrides allowlist; no scheduling constraints, affinity rules, topology spread constraints, or topology-dependent deployment specifications introduced.
Ote Binary Stdout Contract ✅ Passed No OTE Binary Stdout Contract violations found. The PR contains only test file changes and a non-IO flag allowlist addition with no process-level stdout operations.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests detected. All modified test files use standard Go testing with *testing.T, not Ginkgo BDD patterns.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci openshift-ci bot requested review from TrilokGeer and mytreya-rh April 14, 2026 10:40
@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 14, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 14, 2026

@bharath-b-rh: This pull request references CM-786 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 task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

The PR has following changes:

Summary by CodeRabbit

  • New Features

  • Added support for the --certificate-request-minimum-backoff-duration flag in cert-manager controller deployment overrides.

  • Tests

  • Expanded test coverage for deployment override validation, including error handling and argument acceptance/rejection logic.

  • Style

  • Code formatting and alignment improvements across test files.

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.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (2)
pkg/controller/certmanager/deployment_helper_test.go (1)

56-58: Handle tombstones in DeleteFunc to avoid panic-prone casts.

Delete events may arrive as cache.DeletedFinalStateUnknown; direct type assertion can panic in that case.

Suggested robust delete handler
 	DeleteFunc: func(obj any) {
-		ch <- obj.(*v1alpha1.CertManager)
+		switch o := obj.(type) {
+		case *v1alpha1.CertManager:
+			ch <- o
+		case cache.DeletedFinalStateUnknown:
+			if cm, ok := o.Obj.(*v1alpha1.CertManager); ok {
+				ch <- cm
+			}
+		}
 	},
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/controller/certmanager/deployment_helper_test.go` around lines 56 - 58,
The DeleteFunc currently does a direct cast to *v1alpha1.CertManager which can
panic when the informer sends a cache.DeletedFinalStateUnknown tombstone; update
DeleteFunc to first check whether obj is a cache.DeletedFinalStateUnknown (or
has an Object field) and extract the actual object before the type assertion,
falling back to a safe type assertion for *v1alpha1.CertManager and only sending
to ch when the cast succeeds; reference the DeleteFunc handler, the ch channel,
the v1alpha1.CertManager type and cache.DeletedFinalStateUnknown in your change.
pkg/controller/certmanager/deployment_overrides_validation_test.go (1)

489-515: Make cleanup resilient to early assertion failures in subtests.

If a subtest fails before the explicit delete block, "cluster" can remain and cascade failures into subsequent cases. Registering cleanup right after create keeps subtests isolated.

Suggested cleanup pattern
 _, err := fakeClient.OperatorV1alpha1().CertManagers().Create(ctx, &tc.certManagerObj, metav1.CreateOptions{})
 require.NoError(t, err)
+t.Cleanup(func() {
+	err := fakeClient.OperatorV1alpha1().CertManagers().Delete(ctx, tc.certManagerObj.Name, metav1.DeleteOptions{})
+	if err != nil && !apierrors.IsNotFound(err) {
+		t.Errorf("cleanup delete failed: %v", err)
+		return
+	}
+	select {
+	case <-certManagerChan:
+	case <-time.After(wait.ForeverTestTimeout):
+		t.Errorf("Informer did not get the deleted cert manager object during cleanup")
+	}
+})
@@
-err = fakeClient.OperatorV1alpha1().CertManagers().Delete(ctx, tc.certManagerObj.Name, metav1.DeleteOptions{})
-require.NoError(t, err)
-
-select {
-case <-certManagerChan:
-case <-time.After(wait.ForeverTestTimeout):
-	t.Fatal("Informer did not get the deleted cert manager object")
-}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/controller/certmanager/deployment_overrides_validation_test.go` around
lines 489 - 515, After creating the test CertManager object, register a
t.Cleanup that deletes the created object and waits for the informer to observe
the deletion instead of performing the explicit delete at the end of the
subtest; specifically, immediately after calling
fakeClient.OperatorV1alpha1().CertManagers().Create(ctx, &tc.certManagerObj,
...), call t.Cleanup to run the delete via
fakeClient.OperatorV1alpha1().CertManagers().Delete(ctx, tc.certManagerObj.Name,
...) and then wait on certManagerChan (using the same wait.ForeverTestTimeout)
so the informer sees the removal; this keeps the resource cleanup resilient to
early assertion failures and preserves the existing logic that waits on
certManagerChan, with no other changes to withContainerArgsValidateHook,
certManagerInformers, or tc.deploymentName usage.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/controller/certmanager/deployment_helper_test.go`:
- Around line 62-64: The informer bootstrap currently can block forever because
the result of cache.WaitForCacheSync is ignored and the receive on
watcherStarted has no timeout; update the test to use a bounded context (e.g.
ctxWithTimeout := context.WithTimeout(ctx, someReasonableDuration)) and then
pass ctxWithTimeout.Done() to informer.Informer().Run and
cache.WaitForCacheSync, check the bool result returned by cache.WaitForCacheSync
(fail the test if it returns false), and replace the plain <-watcherStarted with
a select that waits for either watcherStarted or the context timeout so the test
fails fast instead of hanging; refer to informer.Informer().Run,
cache.WaitForCacheSync, and watcherStarted when making these changes.

---

Nitpick comments:
In `@pkg/controller/certmanager/deployment_helper_test.go`:
- Around line 56-58: The DeleteFunc currently does a direct cast to
*v1alpha1.CertManager which can panic when the informer sends a
cache.DeletedFinalStateUnknown tombstone; update DeleteFunc to first check
whether obj is a cache.DeletedFinalStateUnknown (or has an Object field) and
extract the actual object before the type assertion, falling back to a safe type
assertion for *v1alpha1.CertManager and only sending to ch when the cast
succeeds; reference the DeleteFunc handler, the ch channel, the
v1alpha1.CertManager type and cache.DeletedFinalStateUnknown in your change.

In `@pkg/controller/certmanager/deployment_overrides_validation_test.go`:
- Around line 489-515: After creating the test CertManager object, register a
t.Cleanup that deletes the created object and waits for the informer to observe
the deletion instead of performing the explicit delete at the end of the
subtest; specifically, immediately after calling
fakeClient.OperatorV1alpha1().CertManagers().Create(ctx, &tc.certManagerObj,
...), call t.Cleanup to run the delete via
fakeClient.OperatorV1alpha1().CertManagers().Delete(ctx, tc.certManagerObj.Name,
...) and then wait on certManagerChan (using the same wait.ForeverTestTimeout)
so the informer sees the removal; this keeps the resource cleanup resilient to
early assertion failures and preserves the existing logic that waits on
certManagerChan, with no other changes to withContainerArgsValidateHook,
certManagerInformers, or tc.deploymentName usage.
🪄 Autofix (Beta)

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: Pro Plus

Run ID: 0cbf340d-0ca0-4ba2-b76c-a22e2c1d0331

📥 Commits

Reviewing files that changed from the base of the PR and between 6082a3d and cd124ae.

⛔ Files ignored due to path filters (1)
  • go.work.sum is excluded by !**/*.sum
📒 Files selected for processing (6)
  • pkg/controller/certmanager/deployment_helper_test.go
  • pkg/controller/certmanager/deployment_overrides_validation.go
  • pkg/controller/certmanager/deployment_overrides_validation_test.go
  • pkg/controller/common/client_test.go
  • pkg/controller/istiocsr/utils_test.go
  • pkg/controller/trustmanager/deployments_test.go

…uest-minimum-backoff-duration

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

openshift-ci-robot commented Apr 14, 2026

@bharath-b-rh: This pull request references CM-786 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 task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

The PR has following changes:

Summary by CodeRabbit

  • New Features

  • Added support for the --certificate-request-minimum-backoff-duration flag in cert-manager controller deployment overrides.

  • Tests

  • Added test helpers to centralize informer/client setup and reduced duplicated test setup.

  • Expanded table-driven tests for deployment override validation, covering accepted/rejected args, scoping, error cases, and nil configs.

  • Style / Refactor

  • Formatting and alignment improvements across test files.

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.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
pkg/controller/certmanager/deployment_helper_test.go (1)

70-75: ⚠️ Potential issue | 🟠 Major

WaitForCacheSync can still hang indefinitely without a bounded context.

Line 71 still waits on ctx.Done() (from t.Context()), so if sync never completes this path can block forever before the timeout select is reached.

🔧 Proposed hardening
+	ctxWithTimeout, cancel := context.WithTimeout(ctx, wait.ForeverTestTimeout)
+	t.Cleanup(cancel)
-	go informer.Informer().Run(ctx.Done())
-	require.True(t, cache.WaitForCacheSync(ctx.Done(), informer.Informer().HasSynced), "failed to sync CertManager informer cache")
+	go informer.Informer().Run(ctxWithTimeout.Done())
+	require.True(t, cache.WaitForCacheSync(ctxWithTimeout.Done(), informer.Informer().HasSynced), "failed to sync CertManager informer cache")
 	select {
 	case <-watcherStarted:
-	case <-time.After(wait.ForeverTestTimeout):
+	case <-ctxWithTimeout.Done():
 		t.Fatal("watch reactor did not start")
 	}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/controller/certmanager/deployment_helper_test.go` around lines 70 - 75,
The test can hang because cache.WaitForCacheSync is still waiting on the
unbounded t.Context() (ctx.Done()); change the test to use a bounded context
when calling cache.WaitForCacheSync: create a context with timeout via
context.WithTimeout (e.g., syncCtx, cancel := context.WithTimeout(ctx,
wait.ForeverTestTimeout)) and pass syncCtx.Done() to cache.WaitForCacheSync,
defer cancel(), so the sync call will return within the test timeout and the
subsequent select on watcherStarted will behave as expected; keep the
informer.Informer().Run(ctx.Done()) call as-is.
🧹 Nitpick comments (1)
pkg/controller/certmanager/deployment_helper_test.go (1)

93-103: Assert received informer events match the expected object.

The helper currently accepts any event from a shared channel; validating obj.Name makes failures less flaky and easier to diagnose.

🧪 Proposed tightening
 	t.Cleanup(func() {
 		err := fakeClient.OperatorV1alpha1().CertManagers().Delete(ctx, obj.Name, metav1.DeleteOptions{})
 		if err != nil && !apierrors.IsNotFound(err) {
 			t.Errorf("cert-manager delete failed: %v", err)
 			return
 		}
 		select {
-		case <-events:
+		case deleted := <-events:
+			require.Equal(t, obj.Name, deleted.Name, "unexpected delete event object")
 		case <-time.After(wait.ForeverTestTimeout):
 			t.Errorf("Informer did not get the deleted cert manager object during cleanup")
 		}
 	})
 	select {
-	case <-events:
+	case added := <-events:
+		require.Equal(t, obj.Name, added.Name, "unexpected add event object")
 	case <-time.After(wait.ForeverTestTimeout):
 		t.Fatal("Informer did not get the added cert manager object")
 	}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/controller/certmanager/deployment_helper_test.go` around lines 93 - 103,
Replace the loose reads from the shared events channel with assertions that the
received event contains the expected object's Name: when you read from events in
deployment_helper_test.go (both the deletion and addition checks), receive the
event value, cast or convert it to the expected Kubernetes object type or
metav1.Object, and assert its Name equals the expected test object's Name
(failing the test with a clear message if it does not); keep the existing
timeout handling but change t.Errorf/t.Fatal messages to include the actual
received name for easier diagnosis.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@pkg/controller/certmanager/deployment_helper_test.go`:
- Around line 70-75: The test can hang because cache.WaitForCacheSync is still
waiting on the unbounded t.Context() (ctx.Done()); change the test to use a
bounded context when calling cache.WaitForCacheSync: create a context with
timeout via context.WithTimeout (e.g., syncCtx, cancel :=
context.WithTimeout(ctx, wait.ForeverTestTimeout)) and pass syncCtx.Done() to
cache.WaitForCacheSync, defer cancel(), so the sync call will return within the
test timeout and the subsequent select on watcherStarted will behave as
expected; keep the informer.Informer().Run(ctx.Done()) call as-is.

---

Nitpick comments:
In `@pkg/controller/certmanager/deployment_helper_test.go`:
- Around line 93-103: Replace the loose reads from the shared events channel
with assertions that the received event contains the expected object's Name:
when you read from events in deployment_helper_test.go (both the deletion and
addition checks), receive the event value, cast or convert it to the expected
Kubernetes object type or metav1.Object, and assert its Name equals the expected
test object's Name (failing the test with a clear message if it does not); keep
the existing timeout handling but change t.Errorf/t.Fatal messages to include
the actual received name for easier diagnosis.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: 6303ce5b-6c6e-4f97-bf9b-17396dccaeeb

📥 Commits

Reviewing files that changed from the base of the PR and between cd124ae and 777f15b.

📒 Files selected for processing (3)
  • pkg/controller/certmanager/deployment_helper_test.go
  • pkg/controller/certmanager/deployment_overrides_validation.go
  • pkg/controller/certmanager/deployment_overrides_validation_test.go

Copy link
Copy Markdown
Member

@chiragkyal chiragkyal left a comment

Choose a reason for hiding this comment

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

Only a few nits which caught my eye, nothing major.
Also, won't it be better to have some e2e cases as well?
/lgtm

Comment on lines +54 to +55
AddFunc: func(obj any) {
ch <- obj.(*v1alpha1.CertManager)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We missed a log line here, which was present earlier.

t.Logf("cert manager obj added: %s", certManagerObj.Name)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yeah removed the info level logs since these unit tests, and retained only error related logs.

AddFunc: func(obj any) {
ch <- obj.(*v1alpha1.CertManager)
},
DeleteFunc: func(obj any) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Same as above

wantErrMsg: `validation failed due to unsupported arg "--metrics-listen-address"="0.0.0.0:9402"`,
},
{
name: "webhook rejects certificate-request-minimum-backoff-duration",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If we use certificate-request-minimum-backoff-duration flag in the above test, we can cover both cases in a single test right?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yeah, I had added tests only for certificate-request-minimum-backoff-duration initially and later updated it for other args, an additional scenario has got added.

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Apr 14, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 14, 2026

[APPROVALNOTIFIER] This PR is APPROVED

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

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

@bharath-b-rh
Copy link
Copy Markdown
Contributor Author

Also, won't it be better to have some e2e cases as well?

e2e test scenarios is already present for other args, so didn't add a new one for another item in the list.

@bharath-b-rh
Copy link
Copy Markdown
Contributor Author

@snarayan-redhat Please help with updating the release notes for the new arg support under new features. Thank you!

@chiragkyal
Copy link
Copy Markdown
Member

Also, won't it be better to have some e2e cases as well?

e2e test scenarios is already present for other args, so didn't add a new one for another item in the list.

I feel it would be better to have all the args covered into the list.

@bharath-b-rh
Copy link
Copy Markdown
Contributor Author

/label px-approved

@openshift-ci openshift-ci bot added the px-approved Signifies that Product Support has signed off on this PR label Apr 14, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 14, 2026

@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.

@bharath-b-rh
Copy link
Copy Markdown
Contributor Author

Please refer doc for the tests.
/label qe-approved

@openshift-ci openshift-ci bot added the qe-approved Signifies that QE has signed off on this PR label Apr 14, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 14, 2026

@bharath-b-rh: This pull request references CM-786 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 task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

The PR has following changes:

Summary by CodeRabbit

  • New Features

  • Added support for the --certificate-request-minimum-backoff-duration flag in cert-manager controller deployment overrides.

  • Tests

  • Added test helpers to centralize informer/client setup and reduced duplicated test setup.

  • Expanded table-driven tests for deployment override validation, covering accepted/rejected args, scoping, error cases, and nil configs.

  • Style / Refactor

  • Formatting and alignment improvements across test files.

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.

@bharath-b-rh
Copy link
Copy Markdown
Contributor Author

/cherrypick cert-manager-1.19

@openshift-cherrypick-robot
Copy link
Copy Markdown

@bharath-b-rh: once the present PR merges, I will cherry-pick it on top of cert-manager-1.19 in a new PR and assign it to you.

Details

In response to this:

/cherrypick cert-manager-1.19

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.

@snarayan-redhat
Copy link
Copy Markdown

/label docs-approved

@openshift-ci openshift-ci bot added the docs-approved Signifies that Docs has signed off on this PR label Apr 15, 2026
@openshift-merge-bot openshift-merge-bot bot merged commit abaecc8 into openshift:master Apr 15, 2026
10 checks passed
@bharath-b-rh bharath-b-rh deleted the cm-786 branch April 15, 2026 05:27
@openshift-cherrypick-robot
Copy link
Copy Markdown

@bharath-b-rh: new pull request created: #408

Details

In response to this:

/cherrypick cert-manager-1.19

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.

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. docs-approved Signifies that Docs has signed off on this PR jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. px-approved Signifies that Product Support has signed off on this PR qe-approved Signifies that QE has signed off on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants