Skip to content

NO-ISSUE: Synchronize From Upstream Repositories#754

Open
openshift-bot wants to merge 110 commits into
openshift:mainfrom
openshift-bot:synchronize-upstream
Open

NO-ISSUE: Synchronize From Upstream Repositories#754
openshift-bot wants to merge 110 commits into
openshift:mainfrom
openshift-bot:synchronize-upstream

Conversation

@openshift-bot

@openshift-bot openshift-bot commented Jun 23, 2026

Copy link
Copy Markdown

The downstream repository has been updated with the following following upstream commits:

Date Commit Author Message
2026-06-25 21:03:54 operator-framework/operator-controller@f5e0d77 Joe Lanford move BuildHTTPClient from shared httputil to catalogmetadata/client (#2782)
2026-06-24 16:24:18 operator-framework/operator-controller@c66f3af dependabot[bot] 🌱 Bump actions/setup-python from 6 to 6.2.0 (#2780)
2026-06-24 15:13:57 operator-framework/operator-controller@c2f2d89 Jordan Keister fix catalogd panic, paste error on mac (#2779)
2026-06-23 07:14:10 operator-framework/operator-controller@7d6a00d dependabot[bot] 🌱 Bump beautifulsoup4 from 4.14.3 to 4.15.0 (#2778)
2026-06-23 07:11:17 operator-framework/operator-controller@400317d dependabot[bot] 🌱 Bump codecov/codecov-action from 6.0.1 to 7.0.0 (#2777)
2026-06-23 07:05:56 operator-framework/operator-controller@4614f23 dependabot[bot] 🌱 Bump github.com/containerd/containerd from 1.7.32 to 1.7.33 (#2776)
2026-06-22 12:56:14 operator-framework/operator-controller@e4879a3 Predrag Knezevic refactor: replace hand-written test mocks with gomock-generated mocks (#2775)

The vendor/ directory has been updated and the following commits were carried:

Date Commit Author Message
2026-06-18 00:06:26 openshift/operator-framework-operator-controller@e168977 dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-06-18 00:06:28 openshift/operator-framework-operator-controller@3b164e1 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-06-18 00:06:28 openshift/operator-framework-operator-controller@2d48014 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-06-18 00:06:29 openshift/operator-framework-operator-controller@59662ab Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-06-18 00:06:29 openshift/operator-framework-operator-controller@20057c1 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-06-18 00:06:30 openshift/operator-framework-operator-controller@6cc572b Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-06-18 00:06:31 openshift/operator-framework-operator-controller@7aa9a81 Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-06-18 00:06:31 openshift/operator-framework-operator-controller@0bb03d1 Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-06-18 00:06:32 openshift/operator-framework-operator-controller@a471c05 Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-06-18 00:06:32 openshift/operator-framework-operator-controller@c4c5492 Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-06-18 00:06:33 openshift/operator-framework-operator-controller@5d74843 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-06-18 00:06:33 openshift/operator-framework-operator-controller@bd8dbcc Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-06-18 00:06:34 openshift/operator-framework-operator-controller@87333a1 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-06-18 00:06:35 openshift/operator-framework-operator-controller@5e404ac Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-06-18 00:06:36 openshift/operator-framework-operator-controller@a55f408 Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-06-18 00:06:37 openshift/operator-framework-operator-controller@bb51577 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-06-18 00:06:38 openshift/operator-framework-operator-controller@e97cdb6 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-06-18 00:06:39 openshift/operator-framework-operator-controller@152c300 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-06-18 00:06:39 openshift/operator-framework-operator-controller@73f9475 Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-06-18 00:06:40 openshift/operator-framework-operator-controller@95fbd8e Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-06-18 00:06:40 openshift/operator-framework-operator-controller@931c508 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-06-18 00:06:41 openshift/operator-framework-operator-controller@c3d9357 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-06-18 00:06:41 openshift/operator-framework-operator-controller@1c3242b Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-06-18 00:06:42 openshift/operator-framework-operator-controller@4844df8 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-06-18 00:06:42 openshift/operator-framework-operator-controller@da5b475 Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-06-18 00:06:43 openshift/operator-framework-operator-controller@300a53e Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-06-18 00:06:43 openshift/operator-framework-operator-controller@5398ba0 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-06-18 00:06:44 openshift/operator-framework-operator-controller@cd55e4d Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-06-18 00:06:45 openshift/operator-framework-operator-controller@1696dde Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-06-18 00:06:45 openshift/operator-framework-operator-controller@e3e69f0 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-06-18 00:06:46 openshift/operator-framework-operator-controller@3be83fd Bruno Andrade UPSTREAM: <carry>: update metadata
2026-06-18 00:06:46 openshift/operator-framework-operator-controller@f26f091 Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-06-18 00:06:47 openshift/operator-framework-operator-controller@3e2c729 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-06-18 00:06:47 openshift/operator-framework-operator-controller@fabf6b2 Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-06-18 00:06:48 openshift/operator-framework-operator-controller@300fa5b Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-06-18 00:06:48 openshift/operator-framework-operator-controller@e05580a Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-06-18 00:06:49 openshift/operator-framework-operator-controller@cf8a666 Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-06-18 00:06:50 openshift/operator-framework-operator-controller@9aad035 Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-06-18 00:06:50 openshift/operator-framework-operator-controller@a265832 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-06-18 00:06:51 openshift/operator-framework-operator-controller@bb0ac62 Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-06-18 00:06:51 openshift/operator-framework-operator-controller@1db3a58 Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-06-18 00:06:52 openshift/operator-framework-operator-controller@d7e6c63 Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-06-18 00:06:52 openshift/operator-framework-operator-controller@2647d61 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-06-18 00:06:53 openshift/operator-framework-operator-controller@fcb0bf2 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-06-18 00:06:53 openshift/operator-framework-operator-controller@0945b8f Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-06-18 00:06:54 openshift/operator-framework-operator-controller@8e97740 Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-06-18 00:06:54 openshift/operator-framework-operator-controller@2df911e Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-06-18 00:06:55 openshift/operator-framework-operator-controller@f43ada5 Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-06-18 00:06:56 openshift/operator-framework-operator-controller@2d8242c Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-06-18 00:06:56 openshift/operator-framework-operator-controller@9a12b76 Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-06-18 00:06:57 openshift/operator-framework-operator-controller@aef5692 Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-06-18 00:06:57 openshift/operator-framework-operator-controller@3df9981 Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-06-18 00:06:58 openshift/operator-framework-operator-controller@1419fbc Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-06-18 00:06:59 openshift/operator-framework-operator-controller@fbc1970 Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-06-18 00:06:59 openshift/operator-framework-operator-controller@28641c7 Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-06-18 00:07:00 openshift/operator-framework-operator-controller@4077621 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-06-18 00:07:00 openshift/operator-framework-operator-controller@9b7f0e5 Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-06-18 00:07:01 openshift/operator-framework-operator-controller@04ff165 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-06-18 00:07:02 openshift/operator-framework-operator-controller@d733661 Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-06-18 00:07:02 openshift/operator-framework-operator-controller@6f601e3 Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-06-18 00:07:03 openshift/operator-framework-operator-controller@4115878 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-06-18 00:07:04 openshift/operator-framework-operator-controller@d2850e9 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-06-18 00:07:05 openshift/operator-framework-operator-controller@699b825 Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-06-18 00:07:05 openshift/operator-framework-operator-controller@df05382 Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-06-18 00:07:06 openshift/operator-framework-operator-controller@9685017 Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install tests
2026-06-18 00:07:06 openshift/operator-framework-operator-controller@492a794 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-06-18 00:07:07 openshift/operator-framework-operator-controller@3b09481 Jian Zhang UPSTREAM: <carry>: update OCP-75441 to support multi-arch
2026-06-18 00:07:07 openshift/operator-framework-operator-controller@d36b0cb Kui Wang UPSTREAM: <carry>: deployment config cases
2026-06-18 00:07:08 openshift/operator-framework-operator-controller@cbb3390 Todd Short UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
2026-06-18 00:07:09 openshift/operator-framework-operator-controller@f7d734c Todd Short UPSTREAM: <carry>: Update openshift/api and client-go
2026-06-18 00:07:09 openshift/operator-framework-operator-controller@f1319f1 Camila Macedo UPSTREAM: <carry>: Add boxcutter tests
2026-06-18 00:07:10 openshift/operator-framework-operator-controller@5980fb0 Xia Zhao UPSTREAM: <carry>: enhance QE cases
2026-06-18 00:07:10 openshift/operator-framework-operator-controller@8aeed2b Daniel Franz UPSTREAM: <carry>: Update quay-operator version to one containing arm64 support
2026-06-18 00:07:11 openshift/operator-framework-operator-controller@5f003a5 Kui Wang UPSTREAM: <carry>: verify volume/volumeMount override
2026-06-18 00:07:11 openshift/operator-framework-operator-controller@e8db63e Jian Zhang UPSTREAM: <carry>: Add long-duration test script and documents
2026-06-18 00:07:12 openshift/operator-framework-operator-controller@0e85bc8 Todd Short UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests
2026-06-18 00:07:13 openshift/operator-framework-operator-controller@086d1a5 Camila Macedo UPSTREAM: <carry>: Rename ClusterExtensionRevision to ClusterObjectSet in OTE tests
2026-06-18 00:07:13 openshift/operator-framework-operator-controller@d83d887 Camila Macedo UPSTREAM: <carry>: Skip incompatible operator test when Boxcutter uses ClusterObjectSet
2026-06-18 00:07:14 openshift/operator-framework-operator-controller@a0bc292 Bruno Andrade UPSTREAM: <carry>: add ocp-87557
2026-06-18 00:07:14 openshift/operator-framework-operator-controller@d71ba81 Francesco Giudici UPSTREAM: <carry>: Add fgiudici as reviewer
2026-06-18 00:07:15 openshift/operator-framework-operator-controller@c863210 Camila Macedo UPSTREAM: <carry>: Remove skip for incompatible operator check after rename of CER
2026-06-18 00:07:15 openshift/operator-framework-operator-controller@1a841a2 Kui Wang UPSTREAM: <carry>: Test empty affinity erasure and cleanup
2026-06-18 00:07:16 openshift/operator-framework-operator-controller@0046bf9 Camila Macedo UPSTREAM: <carry>: Fix boxcutter finalizer ResourceNames in preflight test
2026-06-18 00:07:16 openshift/operator-framework-operator-controller@1fce168 Camila Macedo UPSTREAM: <carry>: Expand OTE docs with more comprehensive details
2026-06-18 00:07:17 openshift/operator-framework-operator-controller@da6f30f Todd Short UPSTREAM: <carry>: Disable upstream TLSProfile tests
2026-06-18 00:07:18 openshift/operator-framework-operator-controller@8249f6e Camila Macedo UPSTREAM: <carry>: OTE: Simplify by remove option to configure tests to run outside of OCP
2026-06-18 00:07:18 openshift/operator-framework-operator-controller@545e1b3 Camila Macedo UPSTREAM: <carry>: OTE - Make OTE local output easier to read
2026-06-18 00:07:19 openshift/operator-framework-operator-controller@c06bc3d Joe Lanford UPSTREAM: <carry>: remove dead e2e registry push job and related variables
2026-06-18 00:07:19 openshift/operator-framework-operator-controller@93bb1de Todd Short UPSTREAM: <carry>: OCPBUGS-62517: Set replicas=1, PDB, and pod anti-affinity for HA topology
2026-06-18 00:07:20 openshift/operator-framework-operator-controller@2fd48d4 Todd Short UPSTREAM: <carry>: fix(test): drop blocking namespace-deletion wait between both-watch-modes scenarios
2026-06-18 00:07:20 openshift/operator-framework-operator-controller@67836e3 Todd Short UPSTREAM: <carry>: Fix downstream e2e test invocation
2026-06-18 00:07:21 openshift/operator-framework-operator-controller@35d4829 Joe Lanford UPSTREAM: <carry>: Delete openshift/registry.Dockerfile
2026-06-18 00:07:21 openshift/operator-framework-operator-controller@f10cca0 Todd Short UPSTREAM: <carry>: Remove test-experimenal-e2e
2026-06-18 00:07:22 openshift/operator-framework-operator-controller@bf84bf9 Camila Macedo UPSTREAM: <carry>: Update readme Default Catalog Tests
2026-06-18 00:07:22 openshift/operator-framework-operator-controller@81e3952 Todd Short UPSTREAM: <carry>: add OLMv1 topology-based deployment scaling e2e test
2026-06-18 00:07:23 openshift/operator-framework-operator-controller@1c5c5bb Todd Short UPSTREAM: <carry>: Update dockerfiles to use golang-1.26-release-4.23 builders
2026-06-18 00:07:24 openshift/operator-framework-operator-controller@90bdaea AOS Automation Release Team UPSTREAM: <carry>: Updating ose-olm-operator-controller-container image to be consistent with ART for 5.0 Reconciling with https://github.com/openshift-eng/ocp-build-data/tree/7691ed4dc0b6585b358f9e73fb736ace9a48a286/images/ose-olm-operator-controller.yml
2026-06-18 00:07:24 openshift/operator-framework-operator-controller@020247b AOS Automation Release Team UPSTREAM: <carry>: Updating ose-olm-catalogd-container image to be consistent with ART for 5.0 Reconciling with https://github.com/openshift-eng/ocp-build-data/tree/7691ed4dc0b6585b358f9e73fb736ace9a48a286/images/ose-olm-catalogd.yml
2026-06-18 00:07:25 openshift/operator-framework-operator-controller@702d547 Todd Short UPSTREAM: <carry>: Update catalogs for 4.23/5.0

This pull request is expected to merge without any human intervention. If tests are failing here, changes must land upstream to fix any issues so that future downstreaming efforts succeed.

/assign @openshift/openshift-team-operator-runtime

Summary by CodeRabbit

  • Documentation

    • Updated contributor guidance for generating code and test mocks.
    • Clarified how to regenerate mocks and where they are used.
  • Tests

    • Expanded automated test coverage across catalog, controller, rendering, and configuration flows.
    • Standardized test doubles to improve consistency and reliability.
  • Chores

    • Added generated mock support for several internal interfaces.
    • Updated build and test tooling dependencies and generation steps.

… (#2775)

Introduce go.uber.org/mock (gomock) with mockgen code generation to
replace all hand-written mock structs across the test suite. This
eliminates duplicated mocks, establishes a single consistent mocking
pattern, and ensures mocks stay in sync with interface changes
automatically via make generate-mocks.

Infrastructure:
- Add mockgen via bingo with unversioned symlink for go generate
- Add generate-mocks Makefile target (go generate ./...)
- Wire into existing generate/verify targets for CI enforcement
- Centralized //go:generate directives in internal/testutil/mock/
  for exported interfaces (external and internal)
- Source-mode directives at interface definitions for unexported
  interfaces (trackingCache, sourcerer), output to _test.go files
  to keep gomock out of the production binary
- Mock helpers accept shared *gomock.Controller to avoid controller
  proliferation in nested mock scenarios

Rename MockPuller/MockCache to FakePuller/FakeCache in
image/fakes.go to clarify they are test fakes (preconfigured return
values), not mocks (interaction verification). Remove duplicated
FakeCertProvider from render/fake.go and rukpak/util/testing.go,
replaced by generated MockCertificateProvider. FakeBundleSource
(a function type, not an interface) is retained as-is.

Co-authored-by: Claude <noreply@anthropic.com>
@openshift-bot openshift-bot added tide/merge-method-merge Denotes a PR that should use a standard merge by tide when it merges. kind/sync labels Jun 23, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 23, 2026
@openshift-bot openshift-bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 23, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@openshift-bot: This pull request explicitly references no jira issue.

Details

In response to this:

The downstream repository has been updated with the following following upstream commits:

Date Commit Author Message
2026-06-22 12:56:14 operator-framework/operator-controller@e4879a3 Predrag Knezevic refactor: replace hand-written test mocks with gomock-generated mocks (#2775)

The vendor/ directory has been updated and the following commits were carried:

Date Commit Author Message
2026-06-18 00:06:26 openshift/operator-framework-operator-controller@e168977 dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-06-18 00:06:28 openshift/operator-framework-operator-controller@3b164e1 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-06-18 00:06:28 openshift/operator-framework-operator-controller@2d48014 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-06-18 00:06:29 openshift/operator-framework-operator-controller@59662ab Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-06-18 00:06:29 openshift/operator-framework-operator-controller@20057c1 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-06-18 00:06:30 openshift/operator-framework-operator-controller@6cc572b Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-06-18 00:06:31 openshift/operator-framework-operator-controller@7aa9a81 Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-06-18 00:06:31 openshift/operator-framework-operator-controller@0bb03d1 Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-06-18 00:06:32 openshift/operator-framework-operator-controller@a471c05 Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-06-18 00:06:32 openshift/operator-framework-operator-controller@c4c5492 Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-06-18 00:06:33 openshift/operator-framework-operator-controller@5d74843 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-06-18 00:06:33 openshift/operator-framework-operator-controller@bd8dbcc Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-06-18 00:06:34 openshift/operator-framework-operator-controller@87333a1 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-06-18 00:06:35 openshift/operator-framework-operator-controller@5e404ac Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-06-18 00:06:36 openshift/operator-framework-operator-controller@a55f408 Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-06-18 00:06:37 openshift/operator-framework-operator-controller@bb51577 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-06-18 00:06:38 openshift/operator-framework-operator-controller@e97cdb6 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-06-18 00:06:39 openshift/operator-framework-operator-controller@152c300 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-06-18 00:06:39 openshift/operator-framework-operator-controller@73f9475 Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-06-18 00:06:40 openshift/operator-framework-operator-controller@95fbd8e Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-06-18 00:06:40 openshift/operator-framework-operator-controller@931c508 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-06-18 00:06:41 openshift/operator-framework-operator-controller@c3d9357 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-06-18 00:06:41 openshift/operator-framework-operator-controller@1c3242b Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-06-18 00:06:42 openshift/operator-framework-operator-controller@4844df8 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-06-18 00:06:42 openshift/operator-framework-operator-controller@da5b475 Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-06-18 00:06:43 openshift/operator-framework-operator-controller@300a53e Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-06-18 00:06:43 openshift/operator-framework-operator-controller@5398ba0 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-06-18 00:06:44 openshift/operator-framework-operator-controller@cd55e4d Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-06-18 00:06:45 openshift/operator-framework-operator-controller@1696dde Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-06-18 00:06:45 openshift/operator-framework-operator-controller@e3e69f0 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-06-18 00:06:46 openshift/operator-framework-operator-controller@3be83fd Bruno Andrade UPSTREAM: <carry>: update metadata
2026-06-18 00:06:46 openshift/operator-framework-operator-controller@f26f091 Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-06-18 00:06:47 openshift/operator-framework-operator-controller@3e2c729 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-06-18 00:06:47 openshift/operator-framework-operator-controller@fabf6b2 Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-06-18 00:06:48 openshift/operator-framework-operator-controller@300fa5b Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-06-18 00:06:48 openshift/operator-framework-operator-controller@e05580a Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-06-18 00:06:49 openshift/operator-framework-operator-controller@cf8a666 Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-06-18 00:06:50 openshift/operator-framework-operator-controller@9aad035 Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-06-18 00:06:50 openshift/operator-framework-operator-controller@a265832 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-06-18 00:06:51 openshift/operator-framework-operator-controller@bb0ac62 Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-06-18 00:06:51 openshift/operator-framework-operator-controller@1db3a58 Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-06-18 00:06:52 openshift/operator-framework-operator-controller@d7e6c63 Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-06-18 00:06:52 openshift/operator-framework-operator-controller@2647d61 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-06-18 00:06:53 openshift/operator-framework-operator-controller@fcb0bf2 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-06-18 00:06:53 openshift/operator-framework-operator-controller@0945b8f Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-06-18 00:06:54 openshift/operator-framework-operator-controller@8e97740 Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-06-18 00:06:54 openshift/operator-framework-operator-controller@2df911e Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-06-18 00:06:55 openshift/operator-framework-operator-controller@f43ada5 Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-06-18 00:06:56 openshift/operator-framework-operator-controller@2d8242c Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-06-18 00:06:56 openshift/operator-framework-operator-controller@9a12b76 Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-06-18 00:06:57 openshift/operator-framework-operator-controller@aef5692 Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-06-18 00:06:57 openshift/operator-framework-operator-controller@3df9981 Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-06-18 00:06:58 openshift/operator-framework-operator-controller@1419fbc Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-06-18 00:06:59 openshift/operator-framework-operator-controller@fbc1970 Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-06-18 00:06:59 openshift/operator-framework-operator-controller@28641c7 Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-06-18 00:07:00 openshift/operator-framework-operator-controller@4077621 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-06-18 00:07:00 openshift/operator-framework-operator-controller@9b7f0e5 Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-06-18 00:07:01 openshift/operator-framework-operator-controller@04ff165 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-06-18 00:07:02 openshift/operator-framework-operator-controller@d733661 Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-06-18 00:07:02 openshift/operator-framework-operator-controller@6f601e3 Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-06-18 00:07:03 openshift/operator-framework-operator-controller@4115878 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-06-18 00:07:04 openshift/operator-framework-operator-controller@d2850e9 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-06-18 00:07:05 openshift/operator-framework-operator-controller@699b825 Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-06-18 00:07:05 openshift/operator-framework-operator-controller@df05382 Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-06-18 00:07:06 openshift/operator-framework-operator-controller@9685017 Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install tests
2026-06-18 00:07:06 openshift/operator-framework-operator-controller@492a794 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-06-18 00:07:07 openshift/operator-framework-operator-controller@3b09481 Jian Zhang UPSTREAM: <carry>: update OCP-75441 to support multi-arch
2026-06-18 00:07:07 openshift/operator-framework-operator-controller@d36b0cb Kui Wang UPSTREAM: <carry>: deployment config cases
2026-06-18 00:07:08 openshift/operator-framework-operator-controller@cbb3390 Todd Short UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
2026-06-18 00:07:09 openshift/operator-framework-operator-controller@f7d734c Todd Short UPSTREAM: <carry>: Update openshift/api and client-go
2026-06-18 00:07:09 openshift/operator-framework-operator-controller@f1319f1 Camila Macedo UPSTREAM: <carry>: Add boxcutter tests
2026-06-18 00:07:10 openshift/operator-framework-operator-controller@5980fb0 Xia Zhao UPSTREAM: <carry>: enhance QE cases
2026-06-18 00:07:10 openshift/operator-framework-operator-controller@8aeed2b Daniel Franz UPSTREAM: <carry>: Update quay-operator version to one containing arm64 support
2026-06-18 00:07:11 openshift/operator-framework-operator-controller@5f003a5 Kui Wang UPSTREAM: <carry>: verify volume/volumeMount override
2026-06-18 00:07:11 openshift/operator-framework-operator-controller@e8db63e Jian Zhang UPSTREAM: <carry>: Add long-duration test script and documents
2026-06-18 00:07:12 openshift/operator-framework-operator-controller@0e85bc8 Todd Short UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests
2026-06-18 00:07:13 openshift/operator-framework-operator-controller@086d1a5 Camila Macedo UPSTREAM: <carry>: Rename ClusterExtensionRevision to ClusterObjectSet in OTE tests
2026-06-18 00:07:13 openshift/operator-framework-operator-controller@d83d887 Camila Macedo UPSTREAM: <carry>: Skip incompatible operator test when Boxcutter uses ClusterObjectSet
2026-06-18 00:07:14 openshift/operator-framework-operator-controller@a0bc292 Bruno Andrade UPSTREAM: <carry>: add ocp-87557
2026-06-18 00:07:14 openshift/operator-framework-operator-controller@d71ba81 Francesco Giudici UPSTREAM: <carry>: Add fgiudici as reviewer
2026-06-18 00:07:15 openshift/operator-framework-operator-controller@c863210 Camila Macedo UPSTREAM: <carry>: Remove skip for incompatible operator check after rename of CER
2026-06-18 00:07:15 openshift/operator-framework-operator-controller@1a841a2 Kui Wang UPSTREAM: <carry>: Test empty affinity erasure and cleanup
2026-06-18 00:07:16 openshift/operator-framework-operator-controller@0046bf9 Camila Macedo UPSTREAM: <carry>: Fix boxcutter finalizer ResourceNames in preflight test
2026-06-18 00:07:16 openshift/operator-framework-operator-controller@1fce168 Camila Macedo UPSTREAM: <carry>: Expand OTE docs with more comprehensive details
2026-06-18 00:07:17 openshift/operator-framework-operator-controller@da6f30f Todd Short UPSTREAM: <carry>: Disable upstream TLSProfile tests
2026-06-18 00:07:18 openshift/operator-framework-operator-controller@8249f6e Camila Macedo UPSTREAM: <carry>: OTE: Simplify by remove option to configure tests to run outside of OCP
2026-06-18 00:07:18 openshift/operator-framework-operator-controller@545e1b3 Camila Macedo UPSTREAM: <carry>: OTE - Make OTE local output easier to read
2026-06-18 00:07:19 openshift/operator-framework-operator-controller@c06bc3d Joe Lanford UPSTREAM: <carry>: remove dead e2e registry push job and related variables
2026-06-18 00:07:19 openshift/operator-framework-operator-controller@93bb1de Todd Short UPSTREAM: <carry>: OCPBUGS-62517: Set replicas=1, PDB, and pod anti-affinity for HA topology
2026-06-18 00:07:20 openshift/operator-framework-operator-controller@2fd48d4 Todd Short UPSTREAM: <carry>: fix(test): drop blocking namespace-deletion wait between both-watch-modes scenarios
2026-06-18 00:07:20 openshift/operator-framework-operator-controller@67836e3 Todd Short UPSTREAM: <carry>: Fix downstream e2e test invocation
2026-06-18 00:07:21 openshift/operator-framework-operator-controller@35d4829 Joe Lanford UPSTREAM: <carry>: Delete openshift/registry.Dockerfile
2026-06-18 00:07:21 openshift/operator-framework-operator-controller@f10cca0 Todd Short UPSTREAM: <carry>: Remove test-experimenal-e2e
2026-06-18 00:07:22 openshift/operator-framework-operator-controller@bf84bf9 Camila Macedo UPSTREAM: <carry>: Update readme Default Catalog Tests
2026-06-18 00:07:22 openshift/operator-framework-operator-controller@81e3952 Todd Short UPSTREAM: <carry>: add OLMv1 topology-based deployment scaling e2e test
2026-06-18 00:07:23 openshift/operator-framework-operator-controller@1c5c5bb Todd Short UPSTREAM: <carry>: Update dockerfiles to use golang-1.26-release-4.23 builders
2026-06-18 00:07:24 openshift/operator-framework-operator-controller@90bdaea AOS Automation Release Team UPSTREAM: <carry>: Updating ose-olm-operator-controller-container image to be consistent with ART for 5.0 Reconciling with https://github.com/openshift-eng/ocp-build-data/tree/7691ed4dc0b6585b358f9e73fb736ace9a48a286/images/ose-olm-operator-controller.yml
2026-06-18 00:07:24 openshift/operator-framework-operator-controller@020247b AOS Automation Release Team UPSTREAM: <carry>: Updating ose-olm-catalogd-container image to be consistent with ART for 5.0 Reconciling with https://github.com/openshift-eng/ocp-build-data/tree/7691ed4dc0b6585b358f9e73fb736ace9a48a286/images/ose-olm-catalogd.yml
2026-06-18 00:07:25 openshift/operator-framework-operator-controller@702d547 Todd Short UPSTREAM: <carry>: Update catalogs for 4.23/5.0

This pull request is expected to merge without any human intervention. If tests are failing here, changes must land upstream to fix any issues so that future downstreaming efforts succeed.

/assign @openshift/openshift-team-operator-runtime

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-bot openshift-bot added the lgtm Indicates that a PR is ready to be merged. label Jun 23, 2026
@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 6b30a2ac-6883-448f-bc02-292dfe97d85c

📥 Commits

Reviewing files that changed from the base of the PR and between d97c384 and fbaa792.

⛔ Files ignored due to path filters (32)
  • .bingo/mockgen.sum is excluded by !**/*.sum
  • go.sum is excluded by !**/*.sum
  • openshift/tests-extension/go.sum is excluded by !**/*.sum
  • vendor/github.com/containerd/containerd/labels/labels.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/containerd/containerd/labels/validate.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/containerd/containerd/version/version.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/.codeclimate.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/Taskfile.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/accessors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/conversions.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/mutations.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/security.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/tests.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/type_specific.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/type_specific_codegen.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/value.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/testify/mock/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/testify/mock/mock.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/AUTHORS is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/call.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/callset.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/controller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/matchers.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/string.go is excluded by !**/vendor/**, !vendor/**
  • vendor/modules.txt is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (61)
  • .bingo/Variables.mk
  • .bingo/mockgen.mod
  • .bingo/variables.env
  • AGENTS.md
  • Makefile
  • cmd/operator-controller/main.go
  • go.mod
  • internal/catalogd/controllers/core/clustercatalog_controller_test.go
  • internal/catalogd/server/handlers_test.go
  • internal/catalogd/serverutil/serverutil_test.go
  • internal/operator-controller/action/helm_test.go
  • internal/operator-controller/applier/boxcutter_test.go
  • internal/operator-controller/applier/helm_test.go
  • internal/operator-controller/applier/provider_test.go
  • internal/operator-controller/authorization/rbac_test.go
  • internal/operator-controller/catalogmetadata/client/client_test.go
  • internal/operator-controller/catalogmetadata/client/httputil.go
  • internal/operator-controller/catalogmetadata/client/httputil_test.go
  • internal/operator-controller/config/config_test.go
  • internal/operator-controller/contentmanager/cache/cache.go
  • internal/operator-controller/contentmanager/cache/cache_test.go
  • internal/operator-controller/contentmanager/cache/mock_sourcerer_gen_test.go
  • internal/operator-controller/controllers/clustercatalog_controller_test.go
  • internal/operator-controller/controllers/clusterextension_controller_test.go
  • internal/operator-controller/controllers/clusterobjectset_controller.go
  • internal/operator-controller/controllers/clusterobjectset_controller_internal_test.go
  • internal/operator-controller/controllers/clusterobjectset_controller_test.go
  • internal/operator-controller/controllers/mock_trackingcache_gen_test.go
  • internal/operator-controller/controllers/resolve_ref_test.go
  • internal/operator-controller/controllers/suite_test.go
  • internal/operator-controller/rukpak/preflights/crdupgradesafety/crdupgradesafety_test.go
  • internal/operator-controller/rukpak/render/certprovider_test.go
  • internal/operator-controller/rukpak/render/fake.go
  • internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go
  • internal/operator-controller/rukpak/render/render_test.go
  • internal/operator-controller/rukpak/util/testing/testing.go
  • internal/shared/util/featuregates/logging_test.go
  • internal/shared/util/image/fakes.go
  • internal/shared/util/image/pull_test.go
  • internal/testutil/mock/applier/mock_applier.go
  • internal/testutil/mock/authorization/mock_authorization.go
  • internal/testutil/mock/catalogclient/mock_cache.go
  • internal/testutil/mock/catalogdserver/mock_catalogstore.go
  • internal/testutil/mock/catalogdservice/mock_graphqlservice.go
  • internal/testutil/mock/cmcache/mock_cache.go
  • internal/testutil/mock/config/mock_schemaprovider.go
  • internal/testutil/mock/contentmanager/mock_contentmanager.go
  • internal/testutil/mock/controllers/mock_controllers.go
  • internal/testutil/mock/crdclient/mock_crdinterface.go
  • internal/testutil/mock/ctrlclient/mock_client.go
  • internal/testutil/mock/generate.go
  • internal/testutil/mock/helmclient/interfaces.go
  • internal/testutil/mock/helmclient/mock_actionclient.go
  • internal/testutil/mock/helmclient/mock_composite.go
  • internal/testutil/mock/httputil/mock_roundtripper.go
  • internal/testutil/mock/logrsink/mock_logsink.go
  • internal/testutil/mock/machinery/mock_results.go
  • internal/testutil/mock/rbac/mock_rulesresolver.go
  • internal/testutil/mock/render/mock_certprovider.go
  • internal/testutil/mock/storage/mock_instance.go
  • requirements.txt
💤 Files with no reviewable changes (2)
  • internal/operator-controller/rukpak/render/fake.go
  • internal/operator-controller/rukpak/util/testing/testing.go
✅ Files skipped from review due to trivial changes (25)
  • .bingo/mockgen.mod
  • internal/testutil/mock/helmclient/interfaces.go
  • internal/testutil/mock/config/mock_schemaprovider.go
  • internal/testutil/mock/authorization/mock_authorization.go
  • internal/testutil/mock/httputil/mock_roundtripper.go
  • internal/operator-controller/contentmanager/cache/cache.go
  • internal/testutil/mock/render/mock_certprovider.go
  • internal/testutil/mock/catalogdservice/mock_graphqlservice.go
  • internal/testutil/mock/catalogdserver/mock_catalogstore.go
  • internal/testutil/mock/rbac/mock_rulesresolver.go
  • AGENTS.md
  • internal/testutil/mock/storage/mock_instance.go
  • internal/testutil/mock/cmcache/mock_cache.go
  • internal/testutil/mock/crdclient/mock_crdinterface.go
  • internal/testutil/mock/logrsink/mock_logsink.go
  • internal/testutil/mock/helmclient/mock_actionclient.go
  • internal/testutil/mock/machinery/mock_results.go
  • internal/operator-controller/contentmanager/cache/mock_sourcerer_gen_test.go
  • internal/testutil/mock/helmclient/mock_composite.go
  • internal/shared/util/image/fakes.go
  • internal/testutil/mock/contentmanager/mock_contentmanager.go
  • internal/testutil/mock/ctrlclient/mock_client.go
  • internal/testutil/mock/controllers/mock_controllers.go
  • internal/operator-controller/controllers/clusterobjectset_controller.go
  • internal/testutil/mock/applier/mock_applier.go
🚧 Files skipped from review as they are similar to previous changes (30)
  • .bingo/variables.env
  • requirements.txt
  • internal/testutil/mock/catalogclient/mock_cache.go
  • internal/testutil/mock/generate.go
  • internal/operator-controller/rukpak/render/certprovider_test.go
  • internal/operator-controller/rukpak/render/render_test.go
  • internal/shared/util/image/pull_test.go
  • .bingo/Variables.mk
  • internal/operator-controller/controllers/suite_test.go
  • internal/operator-controller/controllers/mock_trackingcache_gen_test.go
  • internal/catalogd/server/handlers_test.go
  • internal/operator-controller/rukpak/preflights/crdupgradesafety/crdupgradesafety_test.go
  • internal/catalogd/serverutil/serverutil_test.go
  • internal/operator-controller/authorization/rbac_test.go
  • internal/shared/util/featuregates/logging_test.go
  • internal/operator-controller/action/helm_test.go
  • internal/operator-controller/applier/provider_test.go
  • go.mod
  • internal/operator-controller/controllers/clusterobjectset_controller_internal_test.go
  • internal/operator-controller/controllers/resolve_ref_test.go
  • internal/operator-controller/config/config_test.go
  • internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go
  • internal/operator-controller/contentmanager/cache/cache_test.go
  • internal/operator-controller/applier/helm_test.go
  • internal/operator-controller/catalogmetadata/client/client_test.go
  • internal/operator-controller/controllers/clustercatalog_controller_test.go
  • internal/operator-controller/applier/boxcutter_test.go
  • internal/catalogd/controllers/core/clustercatalog_controller_test.go
  • internal/operator-controller/controllers/clusterextension_controller_test.go
  • internal/operator-controller/controllers/clusterobjectset_controller_test.go

Walkthrough

Adds gomock tooling and generated mocks, then rewrites tests and helpers across catalog metadata, catalogd, operator-controller, and shared utilities to use the new mock packages and renamed fake types.

Changes

Gomock migration and mock generation

Layer / File(s) Summary
Tooling and workflow
.bingo/Variables.mk, .bingo/mockgen.mod, .bingo/variables.env, go.mod, Makefile, AGENTS.md, requirements.txt, cmd/operator-controller/main.go, internal/testutil/mock/generate.go
Pins mockgen, adds go.uber.org/mock, wires generate-mocks and the mockgen path, updates workflow notes, bumps beautifulsoup4, changes catalog client wiring, and adds mock generation directives.
Catalog metadata client wiring
internal/operator-controller/catalogmetadata/client/httputil.go, internal/operator-controller/catalogmetadata/client/httputil_test.go, internal/operator-controller/catalogmetadata/client/client_test.go
Renames the catalog metadata client package, updates HTTP client construction, and rewrites cache and round-tripper tests to use gomock-backed mocks.
Generated mock library
internal/testutil/mock/*, internal/operator-controller/contentmanager/cache/cache.go, internal/operator-controller/controllers/clusterobjectset_controller.go
Adds gomock-generated mocks and generation directives for applier, controller, CRD, cache, storage, catalog, RBAC, HTTP, logging, config, content-manager, helm, render, and machinery interfaces.
Catalogd and shared utility tests
internal/catalogd/controllers/core/clustercatalog_controller_test.go, internal/catalogd/server/handlers_test.go, internal/catalogd/serverutil/serverutil_test.go, internal/shared/util/featuregates/logging_test.go, internal/shared/util/image/fakes.go, internal/shared/util/image/pull_test.go
Replaces hand-written storage, cache, and logging stubs with gomock-backed mocks and renames image fakes from Mock* to Fake*.
Operator-controller test rewrites
internal/operator-controller/action/helm_test.go, internal/operator-controller/applier/boxcutter_test.go, internal/operator-controller/applier/helm_test.go, internal/operator-controller/applier/provider_test.go, internal/operator-controller/authorization/rbac_test.go, internal/operator-controller/config/config_test.go, internal/operator-controller/contentmanager/cache/cache_test.go, internal/operator-controller/rukpak/preflights/*, internal/operator-controller/rukpak/render/*, internal/operator-controller/rukpak/util/testing/testing.go
Migrates action, applier, authorization, config, cache, preflight, and certificate-provider tests to gomock and removes the old FakeCertProvider helpers.
Controller and reconciler mocks
internal/operator-controller/controllers/suite_test.go, internal/operator-controller/controllers/clustercatalog_controller_test.go, internal/operator-controller/controllers/clusterextension_controller_test.go, internal/operator-controller/controllers/clusterobjectset_controller*.go, internal/operator-controller/controllers/resolve_ref_test.go
Switches controller suite and reconciler tests to gomock-based revision, tracking cache, applier, and Helm history wiring, with new controller-side mock helpers.
Cleanup
internal/operator-controller/rukpak/render/fake.go
Removes the exported FakeCertProvider implementation and its helper methods.

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

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

@openshift-ci

openshift-ci Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

This pull-request has been approved by: openshift-bot

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

1 similar comment
@openshift-ci

openshift-ci Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

This pull-request has been approved by: openshift-bot

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

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

🧹 Nitpick comments (1)
internal/catalogd/server/handlers_test.go (1)

25-26: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Handle url.Parse errors instead of discarding them.

These setups ignore parse errors with _; please assert them (or use a small helper) to keep test failures explicit and compliant.

Suggested change pattern
-rootURL, _ := url.Parse("http://localhost/")
+rootURL, err := url.Parse("http://localhost/")
+require.NoError(t, err)

As per path instructions, **/*.go: Never ignore error returns.

Also applies to: 44-45, 63-64, 82-83, 104-105, 125-126, 147-148, 206-207, 229-230, 256-257

🤖 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 `@internal/catalogd/server/handlers_test.go` around lines 25 - 26, The test
setup is discarding the error return value from url.Parse by using the blank
identifier. Replace each occurrence of url.Parse error being ignored with `_` by
instead assigning the error to a variable and asserting it using a test
assertion like require.NoError or similar. Apply this fix to all instances
mentioned in the comment across the file (at lines around 25-26, 44-45, 63-64,
82-83, 104-105, 125-126, 147-148, 206-207, 229-230, and 256-257) to ensure parse
errors are explicitly handled and test failures remain clear.

Source: Path instructions

🤖 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 `@internal/catalogd/server/handlers_test.go`:
- Around line 132-135: The BodyTooLarge test is currently using an invalid JSON
body (just repeated "a" characters), which causes the handler to reject it for
malformed JSON rather than for exceeding the 1MB size limit. Replace the
largeBody with a valid JSON structure containing a small GraphQL query followed
by padding fields with large oversized content to exceed the 1MB limit. This
ensures the test actually exercises the max-body guard validation instead of
JSON parsing validation. Apply this fix to both the first test block (around the
largeBody assignment) and the second occurrence mentioned in the "also applies
to" section.

In `@internal/operator-controller/applier/boxcutter_test.go`:
- Around line 375-381: The mock expectation setup for the renderer's Get method
is using .AnyTimes() which allows zero invocations, meaning the assertions
inside the DoAndReturn callback will never execute if the code being tested
stops calling the renderer, causing the test to pass silently. Replace
.AnyTimes() with .Times(1) to enforce that the Get method must be called exactly
once, ensuring the parameter validation assertions are actually executed. Apply
this change to the Get method expectation around line 375 and also to the
similar mock expectations mentioned at lines 1199-1226.

In `@internal/operator-controller/applier/helm_test.go`:
- Line 722: The error return value from the helmApplier.Apply() call is being
discarded with blank identifiers, which means the test does not validate whether
the Apply operation succeeded or failed. Capture the error return value (the
third return value) from helmApplier.Apply into a named variable instead of
discarding it with underscore, then assert it using require.NoError(t, err) to
ensure the Apply operation completes without errors. This ensures the
integration test properly validates the success of the helm apply operation.
- Around line 335-358: In the test for the pre-authorization flow, replace the
`.AnyTimes()` call with `.Times(1)` in the mockPA.EXPECT().PreAuthorize mock
expectation to ensure the test explicitly verifies that the PreAuthorize method
is called exactly once. This strengthens the test for the security-critical
pre-authorization operation by catching any accidental changes to the code path
that might skip the authorization check, such as the removal of the nil check
before calling runPreAuthorizationChecks.
- Around line 297-299: The mockCache.Watch mock expectations are configured to
expect 3 arguments using Watch(gomock.Any(), gomock.Any(), gomock.Any()), but
the actual implementation calls cache.Watch(ctx, h.Watcher, relObjects...)
which, when relObjects is nil, results in only 2 arguments being passed. Fix
this by updating all mockCache.EXPECT().Watch() mock expectations throughout the
test file to accept only 2 arguments instead of 3 by changing from
Watch(gomock.Any(), gomock.Any(), gomock.Any()) to Watch(gomock.Any(),
gomock.Any()). Apply this fix to all occurrences mentioned: lines around
297-299, 509-511, 669-671, 701-703, and 731-733.

In `@internal/operator-controller/applier/provider_test.go`:
- Around line 239-241: The MockCertificateProvider created in the
RegistryV1ManifestProvider initialization is missing expected method calls.
Since the test enables webhook support with webhook definitions in the bundle,
the rendering process will invoke InjectCABundle, AdditionalObjects, and
GetCertSecretInfo on the certificate provider. Add EXPECT() calls on the
mockrender.NewMockCertificateProvider to set up expectations for these three
methods (InjectCABundle, AdditionalObjects, and GetCertSecretInfo), providing
appropriate return values for each to allow the webhook rendering to complete
successfully.

In `@internal/operator-controller/controllers/clusterobjectset_controller.go`:
- Line 61: The interface name `Sourcoser` appears to be a misspelling and should
be corrected. Rename the interface definition at line 333 from `Sourcoser` to
`Sourcer` (or another more conventional name like `SourceProvider` or
`SourceHandler` depending on its purpose), then update all references to this
interface throughout the codebase including the mockgen directive at line 61 in
the exclude_interfaces parameter to use the new corrected name consistently.

---

Nitpick comments:
In `@internal/catalogd/server/handlers_test.go`:
- Around line 25-26: The test setup is discarding the error return value from
url.Parse by using the blank identifier. Replace each occurrence of url.Parse
error being ignored with `_` by instead assigning the error to a variable and
asserting it using a test assertion like require.NoError or similar. Apply this
fix to all instances mentioned in the comment across the file (at lines around
25-26, 44-45, 63-64, 82-83, 104-105, 125-126, 147-148, 206-207, 229-230, and
256-257) to ensure parse errors are explicitly handled and test failures remain
clear.
🪄 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: Enterprise

Run ID: 6bcda6be-e1a4-418a-8264-9725ebd325e7

📥 Commits

Reviewing files that changed from the base of the PR and between ecd140b and 90ad5d5.

⛔ Files ignored due to path filters (29)
  • .bingo/mockgen.sum is excluded by !**/*.sum
  • go.sum is excluded by !**/*.sum
  • openshift/tests-extension/go.sum is excluded by !**/*.sum
  • vendor/github.com/stretchr/objx/.codeclimate.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/Taskfile.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/accessors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/conversions.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/mutations.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/security.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/tests.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/type_specific.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/type_specific_codegen.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/value.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/testify/mock/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/testify/mock/mock.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/AUTHORS is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/call.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/callset.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/controller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/matchers.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/string.go is excluded by !**/vendor/**, !vendor/**
  • vendor/modules.txt is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (57)
  • .bingo/Variables.mk
  • .bingo/mockgen.mod
  • .bingo/variables.env
  • AGENTS.md
  • Makefile
  • go.mod
  • internal/catalogd/controllers/core/clustercatalog_controller_test.go
  • internal/catalogd/server/handlers_test.go
  • internal/catalogd/serverutil/serverutil_test.go
  • internal/operator-controller/action/helm_test.go
  • internal/operator-controller/applier/boxcutter_test.go
  • internal/operator-controller/applier/helm_test.go
  • internal/operator-controller/applier/provider_test.go
  • internal/operator-controller/authorization/rbac_test.go
  • internal/operator-controller/catalogmetadata/client/client_test.go
  • internal/operator-controller/config/config_test.go
  • internal/operator-controller/contentmanager/cache/cache.go
  • internal/operator-controller/contentmanager/cache/cache_test.go
  • internal/operator-controller/contentmanager/cache/mock_sourcerer_gen_test.go
  • internal/operator-controller/controllers/clustercatalog_controller_test.go
  • internal/operator-controller/controllers/clusterextension_controller_test.go
  • internal/operator-controller/controllers/clusterobjectset_controller.go
  • internal/operator-controller/controllers/clusterobjectset_controller_internal_test.go
  • internal/operator-controller/controllers/clusterobjectset_controller_test.go
  • internal/operator-controller/controllers/mock_trackingcache_gen_test.go
  • internal/operator-controller/controllers/resolve_ref_test.go
  • internal/operator-controller/controllers/suite_test.go
  • internal/operator-controller/rukpak/preflights/crdupgradesafety/crdupgradesafety_test.go
  • internal/operator-controller/rukpak/render/certprovider_test.go
  • internal/operator-controller/rukpak/render/fake.go
  • internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go
  • internal/operator-controller/rukpak/render/render_test.go
  • internal/operator-controller/rukpak/util/testing/testing.go
  • internal/shared/util/featuregates/logging_test.go
  • internal/shared/util/image/fakes.go
  • internal/shared/util/image/pull_test.go
  • internal/testutil/mock/applier/mock_applier.go
  • internal/testutil/mock/authorization/mock_authorization.go
  • internal/testutil/mock/catalogclient/mock_cache.go
  • internal/testutil/mock/catalogdserver/mock_catalogstore.go
  • internal/testutil/mock/catalogdservice/mock_graphqlservice.go
  • internal/testutil/mock/cmcache/mock_cache.go
  • internal/testutil/mock/config/mock_schemaprovider.go
  • internal/testutil/mock/contentmanager/mock_contentmanager.go
  • internal/testutil/mock/controllers/mock_controllers.go
  • internal/testutil/mock/crdclient/mock_crdinterface.go
  • internal/testutil/mock/ctrlclient/mock_client.go
  • internal/testutil/mock/generate.go
  • internal/testutil/mock/helmclient/interfaces.go
  • internal/testutil/mock/helmclient/mock_actionclient.go
  • internal/testutil/mock/helmclient/mock_composite.go
  • internal/testutil/mock/httputil/mock_roundtripper.go
  • internal/testutil/mock/logrsink/mock_logsink.go
  • internal/testutil/mock/machinery/mock_results.go
  • internal/testutil/mock/rbac/mock_rulesresolver.go
  • internal/testutil/mock/render/mock_certprovider.go
  • internal/testutil/mock/storage/mock_instance.go
💤 Files with no reviewable changes (2)
  • internal/operator-controller/rukpak/render/fake.go
  • internal/operator-controller/rukpak/util/testing/testing.go

Comment on lines 132 to 135
// Create a body larger than 1MB
largeBody := strings.Repeat("a", 1<<20+1)
req := httptest.NewRequest(http.MethodPost, "/test-catalog/api/v1/graphql", strings.NewReader(largeBody))
req.SetPathValue("catalog", "test-catalog")
w := httptest.NewRecorder()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

BodyTooLarge currently validates malformed JSON, not the max-body guard.

The request body is invalid from byte 1, so this test can pass without exercising the 1MB limit. Use valid JSON with a small query and oversized padding field.

Targeted fix
-// Create a body larger than 1MB
-largeBody := strings.Repeat("a", 1<<20+1)
-req := httptest.NewRequest(http.MethodPost, "/test-catalog/api/v1/graphql", strings.NewReader(largeBody))
+// Create a valid JSON body larger than 1MB
+largePadding := strings.Repeat("a", 1<<20+1)
+largeBody := `{"query":"{ summary { totalSchemas } }","padding":"` + largePadding + `"}`
+req := httptest.NewRequest(http.MethodPost, "/test-catalog/api/v1/graphql", strings.NewReader(largeBody))

Also applies to: 137-142

🤖 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 `@internal/catalogd/server/handlers_test.go` around lines 132 - 135, The
BodyTooLarge test is currently using an invalid JSON body (just repeated "a"
characters), which causes the handler to reject it for malformed JSON rather
than for exceeding the 1MB size limit. Replace the largeBody with a valid JSON
structure containing a small GraphQL query followed by padding fields with large
oversized content to exceed the 1MB limit. This ensures the test actually
exercises the max-body guard validation instead of JSON parsing validation.
Apply this fix to both the first test block (around the largeBody assignment)
and the second occurrence mentioned in the "also applies to" section.

Comment on lines +375 to +381
r.EXPECT().Get(dummyBundle, ext).DoAndReturn(
func(b fs.FS, e *ocv1.ClusterExtension) ([]client.Object, error) {
t.Log("by checking renderer was called with the correct parameters")
require.Equal(t, dummyBundle, b)
require.Equal(t, ext, e)
return nil, nil
},
}
}).AnyTimes()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, check if the file exists and get its size
wc -l internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 246


🏁 Script executed:

# Examine the code at lines 375-381
sed -n '370,385p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 691


🏁 Script executed:

# Examine the code at lines 1199-1226
sed -n '1195,1230p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1794


🏁 Script executed:

# Examine the code at lines 1298-1300
sed -n '1290,1310p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1062


🏁 Script executed:

# Let me check the context around these mocks to understand what they're testing
# Get more context around line 375
sed -n '350,390p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1627


🏁 Script executed:

# Check context for the second location (preauthorizer test around 1199)
sed -n '1170,1235p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 2822


🏁 Script executed:

# Check if there are any other AnyTimes() + DoAndReturn patterns in this file
rg -n 'DoAndReturn.*\.AnyTimes\(\)' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 186


🏁 Script executed:

# Also search for Times(1) patterns to see if there's consistency
rg -n 'DoAndReturn.*\.Times' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 186


🏁 Script executed:

# Let me search for the actual test execution to understand better
# Look at what happens after these mocks are set up
sed -n '375,410p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1177


🏁 Script executed:

# For the second case, see the actual test invocation
sed -n '1225,1310p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 3555


🏁 Script executed:

# Search for other DoAndReturn patterns in the file to understand the style
rg -n 'EXPECT.*DoAndReturn' internal/operator-controller/applier/boxcutter_test.go | head -20

Repository: openshift/operator-framework-operator-controller

Length of output: 1295


🏁 Script executed:

# Let me check the test invocations to confirm mocks are actually called
# Look at what Test_SimpleRevisionGenerator_Renderer_Integration does after setup
sed -n '358,395p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1469


🏁 Script executed:

# Check what the table-driven test does with the preAuthorizer mock around 1270
sed -n '1265,1290p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1230


🏁 Script executed:

# Look for other patterns where AnyTimes is paired with assertions
rg -B5 -A10 'DoAndReturn.*require\.' internal/operator-controller/applier/boxcutter_test.go | head -50

Repository: openshift/operator-framework-operator-controller

Length of output: 186


🏁 Script executed:

# Let me see the full test invocation around line 1270+
sed -n '1268,1295p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1320


🏁 Script executed:

# Check if PreAuthorize is actually called in the Boxcutter Apply/methods
rg -n 'pa\.PreAuthorize|preAuthorizer\.PreAuthorize' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 186


🏁 Script executed:

# Look at what happens in the actual boxcutter.Apply or similar methods
rg -n 'PreAuthorize' internal/operator-controller/applier/boxcutter.go | head -10

Repository: openshift/operator-framework-operator-controller

Length of output: 517


🏁 Script executed:

# Let me see the actual test execution that follows the mock setup
sed -n '1268,1320p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 2254


🏁 Script executed:

# Check if there are any conditional paths that could skip calling PreAuthorize
sed -n '640,660p' internal/operator-controller/applier/boxcutter.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1215


🏁 Script executed:

# Check what's at lines 1298-1300 to confirm the third location
sed -n '1295,1310p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 762


🏁 Script executed:

# Verify the GenerateRevision method signature and confirm it calls the mock
rg -A5 'func.*GenerateRevision' internal/operator-controller/applier/simple_revision_generator.go | head -20

Repository: openshift/operator-framework-operator-controller

Length of output: 292


🏁 Script executed:

# Find the file with GenerateRevision
fd -type f -name "*.go" internal/operator-controller/applier/ | xargs grep -l "GenerateRevision"

Repository: openshift/operator-framework-operator-controller

Length of output: 361


🏁 Script executed:

# Check the test around line 1298-1300
sed -n '1296,1305p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 636


🏁 Script executed:

# Find and check the GenerateRevision calls to understand the code structure
find internal/operator-controller/applier -name "*.go" | head -5

Repository: openshift/operator-framework-operator-controller

Length of output: 443


🏁 Script executed:

# Look for the actual location line 1298-1300
sed -n '1295,1305p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 643


🏁 Script executed:

# Check a broader context to find all the locations mentioned in "Also applies to"
rg -n '\.AnyTimes\(\)' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 2665


🏁 Script executed:

# Get exact context around line 1298-1300
sed -n '1298,1305p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 501


🏁 Script executed:

# Also check lines 1199-1226 more carefully to see if there are assertions
sed -n '1199,1230p' internal/operator-controller/applier/boxcutter_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1575


Use .Times(1) instead of .AnyTimes() for mocks that verify call arguments.

Assertions inside DoAndReturn only execute if the mock is invoked. .AnyTimes() permits zero calls, so if the renderer or pre-authorizer stops being called, these assertions never run and tests pass silently. Use .Times(1) to enforce that the call must occur.

Suggested fix
-		}).AnyTimes()
+		}).Times(1)

Also applies to lines 1199–1226.

🤖 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 `@internal/operator-controller/applier/boxcutter_test.go` around lines 375 -
381, The mock expectation setup for the renderer's Get method is using
.AnyTimes() which allows zero invocations, meaning the assertions inside the
DoAndReturn callback will never execute if the code being tested stops calling
the renderer, causing the test to pass silently. Replace .AnyTimes() with
.Times(1) to enforce that the Get method must be called exactly once, ensuring
the parameter validation assertions are actually executed. Apply this change to
the Get method expectation around line 375 and also to the similar mock
expectations mentioned at lines 1199-1226.

Comment thread internal/operator-controller/applier/helm_test.go
Comment on lines +335 to +358
mockPA.EXPECT().PreAuthorize(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn(
func(ctx context.Context, userInfo user.Info, reader io.Reader, additionalRequiredPerms ...authorization.UserAuthorizerAttributesFactory) ([]authorization.ScopedPolicyRules, error) {
t.Log("has correct user")
require.Equal(t, "system:serviceaccount:test-namespace:test-sa", userInfo.GetName())
require.Empty(t, userInfo.GetUID())
require.Nil(t, userInfo.GetExtra())
require.Empty(t, userInfo.GetGroups())

t.Log("has correct additional permissions")
require.Len(t, additionalRequiredPerms, 1)
perms := additionalRequiredPerms[0](userInfo)

require.Len(t, perms, 1)
require.Equal(t, authorizer.AttributesRecord{
User: userInfo,
Name: "test-ext",
APIGroup: "olm.operatorframework.io",
APIVersion: "v1",
Resource: "clusterextensions/finalizers",
ResourceRequest: true,
Verb: "update",
}, perms[0])
return nil, nil
}).AnyTimes()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Check if the file exists and verify line counts
wc -l internal/operator-controller/applier/helm_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 240


🏁 Script executed:

# Read the specific lines mentioned (335-358 and 503-504)
sed -n '330,365p' internal/operator-controller/applier/helm_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1871


🏁 Script executed:

# Check lines 503-504 context
sed -n '495,510p' internal/operator-controller/applier/helm_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 905


🏁 Script executed:

# Get broader context around line 335 to understand the test function
sed -n '310,370p' internal/operator-controller/applier/helm_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 2754


🏁 Script executed:

# Get broader context around line 503 to understand that test function
sed -n '480,520p' internal/operator-controller/applier/helm_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1868


🏁 Script executed:

# Search for all PreAuthorize mock expectations to see the pattern usage
rg "PreAuthorize.*AnyTimes" internal/operator-controller/applier/helm_test.go -B 5 -A 1

Repository: openshift/operator-framework-operator-controller

Length of output: 1456


🏁 Script executed:

# Check the actual implementation to see if PreAuthorize should always be called
rg -A 10 "func.*PreAuthorize" internal/operator-controller/applier/ --type go | head -40

Repository: openshift/operator-framework-operator-controller

Length of output: 4040


🏁 Script executed:

# Look at the helm applier code to see where PreAuthorize is called
sed -n '1,100p' internal/operator-controller/applier/helm.go | grep -A 5 -B 5 "PreAuthorize"

Repository: openshift/operator-framework-operator-controller

Length of output: 1664


🏁 Script executed:

# Check what the test actually calls and whether PreAuthorize should be called
sed -n '358,380p' internal/operator-controller/applier/helm_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1103


🏁 Script executed:

# Look for similar test patterns in boxcutter_test.go to see if they use .Times(1)
rg "PreAuthorize.*Times\(1\)" internal/operator-controller/applier/ -B 2 -A 2

Repository: openshift/operator-framework-operator-controller

Length of output: 186


🏁 Script executed:

# Check if there are any tests that properly enforce PreAuthorize call count
grep -n "\.Times(" internal/operator-controller/applier/helm_test.go | head -20

Repository: openshift/operator-framework-operator-controller

Length of output: 271


🏁 Script executed:

# Check the Apply function to see if PreAuthorize is always called or conditional
sed -n '40,150p' internal/operator-controller/applier/helm.go | grep -A 50 "func (h \*Helm) Apply"

Repository: openshift/operator-framework-operator-controller

Length of output: 1709


🏁 Script executed:

# Look for where runPreAuthorizationChecks is called
rg "runPreAuthorizationChecks" internal/operator-controller/applier/helm.go -B 3 -A 3

Repository: openshift/operator-framework-operator-controller

Length of output: 1002


🏁 Script executed:

# Check if PreAuthorizer can be nil
rg "PreAuthorizer.*nil" internal/operator-controller/applier/ --type go

Repository: openshift/operator-framework-operator-controller

Length of output: 340


Use .Times(1) instead of .AnyTimes() for parameter-checking and success-path pre-authorization tests to ensure the security gate is properly enforced.

The Apply method in helm.go checks if h.PreAuthorizer != nil before calling runPreAuthorizationChecks, so these tests do invoke PreAuthorize with the current code. However, using .AnyTimes() allows the mock to be satisfied even if the call is skipped entirely, which weakens the test. For security-critical operations like pre-authorization, explicitly asserting .Times(1) will catch if the nil check is accidentally removed, the PreAuthorizer is not assigned, or the code path changes unexpectedly.

🤖 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 `@internal/operator-controller/applier/helm_test.go` around lines 335 - 358, In
the test for the pre-authorization flow, replace the `.AnyTimes()` call with
`.Times(1)` in the mockPA.EXPECT().PreAuthorize mock expectation to ensure the
test explicitly verifies that the PreAuthorize method is called exactly once.
This strengthens the test for the security-critical pre-authorization operation
by catching any accidental changes to the code path that might skip the
authorization check, such as the removal of the nil check before calling
runPreAuthorizationChecks.

Comment thread internal/operator-controller/applier/helm_test.go
Comment on lines +239 to +241
ctrl := gomock.NewController(t)
provider := applier.RegistryV1ManifestProvider{
CertificateProvider: FakeCertProvider{},
CertificateProvider: mockrender.NewMockCertificateProvider(ctrl),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

# First, let's look at the test file around lines 239-241
cd /tmp && find . -name "provider_test.go" -path "*/applier/*" 2>/dev/null | head -5

Repository: openshift/operator-framework-operator-controller

Length of output: 186


🏁 Script executed:

# Get the repository structure to understand the codebase
git ls-files | grep -E "provider_test.go|provider\.go" | grep applier

Repository: openshift/operator-framework-operator-controller

Length of output: 289


🏁 Script executed:

# Look at the test file context around lines 239-241
sed -n '230,260p' internal/operator-controller/applier/provider_test.go

Repository: openshift/operator-framework-operator-controller

Length of output: 1102


🏁 Script executed:

# Find the CertificateProvider interface definition
rg "type CertificateProvider interface" --type go -A 10

Repository: openshift/operator-framework-operator-controller

Length of output: 186


🏁 Script executed:

# Check what methods are called on the certificate provider in the applier code
rg "CertificateProvider" --type go -B 2 -A 2 | head -100

Repository: openshift/operator-framework-operator-controller

Length of output: 186


🏁 Script executed:

# Look for webhook-related code in the applier package
rg "webhook" --type go -i -B 3 -A 3 internal/operator-controller/applier/

Repository: openshift/operator-framework-operator-controller

Length of output: 9240


🏁 Script executed:

# Search for where CertificateProvider methods are actually called in the applier/render code
rg "CertificateProvider\." --type go -B 3 -A 3 internal/operator-controller/

Repository: openshift/operator-framework-operator-controller

Length of output: 186


🏁 Script executed:

# Look at the render package to find CertificateProvider interface and its usage
fd "render" -type d internal/

Repository: openshift/operator-framework-operator-controller

Length of output: 357


🏁 Script executed:

# Check what the BundleRenderer does and whether it uses the CertificateProvider
rg "BundleRenderer" --type go -B 2 -A 5 internal/operator-controller/applier/ | head -80

Repository: openshift/operator-framework-operator-controller

Length of output: 7508


🏁 Script executed:

# Find the CertificateProvider interface definition in the render package
find internal -name "*.go" -type f | xargs grep -l "type CertificateProvider"

Repository: openshift/operator-framework-operator-controller

Length of output: 245


🏁 Script executed:

# Check the actual render package to understand the interface
rg "type CertificateProvider interface" -A 10 internal/

Repository: openshift/operator-framework-operator-controller

Length of output: 1317


🏁 Script executed:

# Find where InjectCABundle, AdditionalObjects, and GetCertSecretInfo are called
rg "InjectCABundle|AdditionalObjects|GetCertSecretInfo" --type go -B 3 -A 3 internal/operator-controller/

Repository: openshift/operator-framework-operator-controller

Length of output: 35226


🏁 Script executed:

# Check what the BundleRenderer.Render method does, especially for webhooks
cat -n internal/operator-controller/rukpak/render/render.go | head -150

Repository: openshift/operator-framework-operator-controller

Length of output: 6009


🏁 Script executed:

# Look for webhook-specific rendering logic
rg "webhook" --type go -i -B 5 -A 5 internal/operator-controller/rukpak/render/ | head -150

Repository: openshift/operator-framework-operator-controller

Length of output: 16858


Set expectations on the MockCertificateProvider when webhook rendering is tested.

The test enables webhook support and includes webhook definitions in the bundle, triggering webhook resource generation. The generators call InjectCABundle, AdditionalObjects, and GetCertSecretInfo on the certificate provider during rendering. A gomock created without expectations will fail with unexpected call errors. Add the required method expectations using EXPECT() or provide a benign implementation for this success path.

🤖 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 `@internal/operator-controller/applier/provider_test.go` around lines 239 -
241, The MockCertificateProvider created in the RegistryV1ManifestProvider
initialization is missing expected method calls. Since the test enables webhook
support with webhook definitions in the bundle, the rendering process will
invoke InjectCABundle, AdditionalObjects, and GetCertSecretInfo on the
certificate provider. Add EXPECT() calls on the
mockrender.NewMockCertificateProvider to set up expectations for these three
methods (InjectCABundle, AdditionalObjects, and GetCertSecretInfo), providing
appropriate return values for each to allow the webhook rendering to complete
successfully.

Clock clock.Clock
}

//go:generate mockgen -source clusterobjectset_controller.go -destination mock_trackingcache_gen_test.go -package controllers -mock_names trackingCache=MockTrackingCache -exclude_interfaces Sourcoser

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search clusterobjectset_controller.go for interface definitions that might match the excluded name.

echo "=== Looking for 'Sourcoser' or similar interface definitions ==="
grep -nE '^\s*(type|interface)\s+(Sourc|sourc)' internal/operator-controller/controllers/clusterobjectset_controller.go || echo "No matches found"

echo ""
echo "=== Listing all exported interfaces in the file ==="
grep -nE '^\s*type\s+[A-Z]\w+\s+interface' internal/operator-controller/controllers/clusterobjectset_controller.go || echo "No exported interfaces found"

Repository: openshift/operator-framework-operator-controller

Length of output: 366


🏁 Script executed:

# Read the interface definition and surrounding context
sed -n '325,345p' internal/operator-controller/controllers/clusterobjectset_controller.go

# Also search for any other similar interface names
echo ""
echo "=== Searching for similar interface names ==="
grep -nE '\bSourc' internal/operator-controller/controllers/clusterobjectset_controller.go | head -20

Repository: openshift/operator-framework-operator-controller

Length of output: 1364


🏁 Script executed:

# Check if there's a 'Sourcer' interface anywhere that might be the intended name
echo "=== Searching for 'Sourcer' (without 'o') ==="
grep -rn "Sourcer" internal/operator-controller/ --include="*.go" | head -20

# Also check the import statements and types to understand the interface better
echo ""
echo "=== Check interface usage context ==="
sed -n '354,365p' internal/operator-controller/controllers/clusterobjectset_controller.go

Repository: openshift/operator-framework-operator-controller

Length of output: 3445


🏁 Script executed:

# Check what trackingCache actually is - what type implements Sourcoser
echo "=== Looking for trackingCache field definition in ClusterObjectSetReconciler ==="
grep -n "trackingCache\|TrackingCache" internal/operator-controller/controllers/clusterobjectset_controller.go | head -20

# Check the struct definition
echo ""
echo "=== Looking for ClusterObjectSetReconciler struct ==="
sed -n '1,100p' internal/operator-controller/controllers/clusterobjectset_controller.go | grep -A 20 "type ClusterObjectSetReconciler"

Repository: openshift/operator-framework-operator-controller

Length of output: 2072


🏁 Script executed:

# Check for any comments or documentation about the Sourcoser interface
echo "=== Looking for comments or documentation about Sourcoser ==="
sed -n '328,338p' internal/operator-controller/controllers/clusterobjectset_controller.go

# Also check if Sourcoser is used elsewhere
echo ""
echo "=== Check all usages of Sourcoser ==="
grep -rn "Sourcoser" internal/operator-controller/ --include="*.go"

Repository: openshift/operator-framework-operator-controller

Length of output: 1268


Sourcoser is defined but has an unusual name that warrants clarification.

The interface Sourcoser does exist at line 333 and is correctly referenced in the mockgen directive. However, the name itself is suspicious—it doesn't follow standard Go naming conventions and appears to be a misspelling. No interface named Sourcer exists in the codebase. Consider renaming to something more conventional (e.g., Sourcer, SourceProvider, or SourceHandler) or, if the current name is intentional, add a comment documenting its purpose.

🤖 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 `@internal/operator-controller/controllers/clusterobjectset_controller.go` at
line 61, The interface name `Sourcoser` appears to be a misspelling and should
be corrected. Rename the interface definition at line 333 from `Sourcoser` to
`Sourcer` (or another more conventional name like `SourceProvider` or
`SourceHandler` depending on its purpose), then update all references to this
interface throughout the codebase including the mockgen directive at line 61 in
the exclude_interfaces parameter to use the new corrected name consistently.

dependabot Bot added 3 commits June 23, 2026 07:05
Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.32 to 1.7.33.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](containerd/containerd@v1.7.32...v1.7.33)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd
  dependency-version: 1.7.33
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6.0.1 to 7.0.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v6.0.1...v7.0.0)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.14.3 to 4.15.0.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@openshift-bot openshift-bot force-pushed the synchronize-upstream branch from 90ad5d5 to 87d6551 Compare June 24, 2026 00:12
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jun 24, 2026
@openshift-ci

openshift-ci Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

New changes are detected. LGTM label has been removed.

grokspawn and others added 2 commits June 24, 2026 15:13
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 6.2.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v6...v6.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@openshift-bot openshift-bot force-pushed the synchronize-upstream branch from 87d6551 to d97c384 Compare June 25, 2026 00:15
@openshift-bot openshift-bot added the lgtm Indicates that a PR is ready to be merged. label Jun 25, 2026
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jun 25, 2026
@openshift-ci

openshift-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

New changes are detected. LGTM label has been removed.

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

🧹 Nitpick comments (1)
Makefile (1)

304-305: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Deduplicate the package exclusion expression.

The same go list | grep -vE ... filter appears twice; extracting it into one variable avoids drift between UNIT_TEST_DIRS and COVERAGE_PKGS.

Proposed refactor
-UNIT_TEST_DIRS := $(shell go list ./... | grep -vE "/test/|/testutils|/testutil/mock") $(shell go list ./test/internal/...)
-COVERAGE_PKGS := $(shell go list ./... | grep -vE "/test/|/testutils|/testutil/mock" | paste -sd, -)
+UNIT_TEST_EXCLUDE_RE := /test/|/testutils|/testutil/mock
+UNIT_TEST_BASE_PKGS := $(shell go list ./... | grep -vE "$(UNIT_TEST_EXCLUDE_RE)")
+UNIT_TEST_DIRS := $(UNIT_TEST_BASE_PKGS) $(shell go list ./test/internal/...)
+COVERAGE_PKGS := $(shell printf '%s\n' $(UNIT_TEST_BASE_PKGS) | paste -sd, -)
🤖 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 `@Makefile` around lines 304 - 305, Deduplicate the repeated package exclusion
logic used by UNIT_TEST_DIRS and COVERAGE_PKGS by extracting the shared go list
| grep -vE filter into a single Makefile variable, then reuse that variable in
both definitions. Keep the existing package selection behavior unchanged, and
make sure the new shared variable is the single source of truth for the
exclusion pattern.
🤖 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.

Nitpick comments:
In `@Makefile`:
- Around line 304-305: Deduplicate the repeated package exclusion logic used by
UNIT_TEST_DIRS and COVERAGE_PKGS by extracting the shared go list | grep -vE
filter into a single Makefile variable, then reuse that variable in both
definitions. Keep the existing package selection behavior unchanged, and make
sure the new shared variable is the single source of truth for the exclusion
pattern.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: ff043674-24c4-4fd5-93e7-d610a95776d2

📥 Commits

Reviewing files that changed from the base of the PR and between 87d6551 and d97c384.

⛔ Files ignored due to path filters (32)
  • .bingo/mockgen.sum is excluded by !**/*.sum
  • go.sum is excluded by !**/*.sum
  • openshift/tests-extension/go.sum is excluded by !**/*.sum
  • vendor/github.com/containerd/containerd/labels/labels.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/containerd/containerd/labels/validate.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/containerd/containerd/version/version.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/.codeclimate.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/Taskfile.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/accessors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/conversions.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/mutations.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/security.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/tests.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/type_specific.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/type_specific_codegen.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/objx/value.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/testify/mock/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/stretchr/testify/mock/mock.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/AUTHORS is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/call.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/callset.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/controller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/matchers.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.uber.org/mock/gomock/string.go is excluded by !**/vendor/**, !vendor/**
  • vendor/modules.txt is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (58)
  • .bingo/Variables.mk
  • .bingo/mockgen.mod
  • .bingo/variables.env
  • AGENTS.md
  • Makefile
  • go.mod
  • internal/catalogd/controllers/core/clustercatalog_controller_test.go
  • internal/catalogd/server/handlers_test.go
  • internal/catalogd/serverutil/serverutil_test.go
  • internal/operator-controller/action/helm_test.go
  • internal/operator-controller/applier/boxcutter_test.go
  • internal/operator-controller/applier/helm_test.go
  • internal/operator-controller/applier/provider_test.go
  • internal/operator-controller/authorization/rbac_test.go
  • internal/operator-controller/catalogmetadata/client/client_test.go
  • internal/operator-controller/config/config_test.go
  • internal/operator-controller/contentmanager/cache/cache.go
  • internal/operator-controller/contentmanager/cache/cache_test.go
  • internal/operator-controller/contentmanager/cache/mock_sourcerer_gen_test.go
  • internal/operator-controller/controllers/clustercatalog_controller_test.go
  • internal/operator-controller/controllers/clusterextension_controller_test.go
  • internal/operator-controller/controllers/clusterobjectset_controller.go
  • internal/operator-controller/controllers/clusterobjectset_controller_internal_test.go
  • internal/operator-controller/controllers/clusterobjectset_controller_test.go
  • internal/operator-controller/controllers/mock_trackingcache_gen_test.go
  • internal/operator-controller/controllers/resolve_ref_test.go
  • internal/operator-controller/controllers/suite_test.go
  • internal/operator-controller/rukpak/preflights/crdupgradesafety/crdupgradesafety_test.go
  • internal/operator-controller/rukpak/render/certprovider_test.go
  • internal/operator-controller/rukpak/render/fake.go
  • internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go
  • internal/operator-controller/rukpak/render/render_test.go
  • internal/operator-controller/rukpak/util/testing/testing.go
  • internal/shared/util/featuregates/logging_test.go
  • internal/shared/util/image/fakes.go
  • internal/shared/util/image/pull_test.go
  • internal/testutil/mock/applier/mock_applier.go
  • internal/testutil/mock/authorization/mock_authorization.go
  • internal/testutil/mock/catalogclient/mock_cache.go
  • internal/testutil/mock/catalogdserver/mock_catalogstore.go
  • internal/testutil/mock/catalogdservice/mock_graphqlservice.go
  • internal/testutil/mock/cmcache/mock_cache.go
  • internal/testutil/mock/config/mock_schemaprovider.go
  • internal/testutil/mock/contentmanager/mock_contentmanager.go
  • internal/testutil/mock/controllers/mock_controllers.go
  • internal/testutil/mock/crdclient/mock_crdinterface.go
  • internal/testutil/mock/ctrlclient/mock_client.go
  • internal/testutil/mock/generate.go
  • internal/testutil/mock/helmclient/interfaces.go
  • internal/testutil/mock/helmclient/mock_actionclient.go
  • internal/testutil/mock/helmclient/mock_composite.go
  • internal/testutil/mock/httputil/mock_roundtripper.go
  • internal/testutil/mock/logrsink/mock_logsink.go
  • internal/testutil/mock/machinery/mock_results.go
  • internal/testutil/mock/rbac/mock_rulesresolver.go
  • internal/testutil/mock/render/mock_certprovider.go
  • internal/testutil/mock/storage/mock_instance.go
  • requirements.txt
💤 Files with no reviewable changes (2)
  • internal/operator-controller/rukpak/render/fake.go
  • internal/operator-controller/rukpak/util/testing/testing.go
✅ Files skipped from review due to trivial changes (28)
  • internal/testutil/mock/helmclient/interfaces.go
  • .bingo/variables.env
  • internal/testutil/mock/catalogclient/mock_cache.go
  • .bingo/mockgen.mod
  • requirements.txt
  • internal/testutil/mock/config/mock_schemaprovider.go
  • internal/testutil/mock/httputil/mock_roundtripper.go
  • internal/testutil/mock/authorization/mock_authorization.go
  • internal/testutil/mock/catalogdservice/mock_graphqlservice.go
  • internal/testutil/mock/contentmanager/mock_contentmanager.go
  • internal/testutil/mock/crdclient/mock_crdinterface.go
  • internal/testutil/mock/storage/mock_instance.go
  • internal/operator-controller/controllers/mock_trackingcache_gen_test.go
  • internal/operator-controller/contentmanager/cache/cache.go
  • internal/testutil/mock/render/mock_certprovider.go
  • internal/shared/util/image/pull_test.go
  • internal/testutil/mock/cmcache/mock_cache.go
  • internal/operator-controller/controllers/clusterobjectset_controller.go
  • internal/testutil/mock/logrsink/mock_logsink.go
  • internal/testutil/mock/catalogdserver/mock_catalogstore.go
  • internal/testutil/mock/controllers/mock_controllers.go
  • internal/operator-controller/contentmanager/cache/mock_sourcerer_gen_test.go
  • internal/testutil/mock/helmclient/mock_actionclient.go
  • internal/testutil/mock/machinery/mock_results.go
  • AGENTS.md
  • internal/testutil/mock/ctrlclient/mock_client.go
  • internal/testutil/mock/rbac/mock_rulesresolver.go
  • internal/testutil/mock/applier/mock_applier.go
🚧 Files skipped from review as they are similar to previous changes (27)
  • .bingo/Variables.mk
  • internal/testutil/mock/helmclient/mock_composite.go
  • internal/operator-controller/rukpak/render/certprovider_test.go
  • internal/shared/util/image/fakes.go
  • internal/operator-controller/rukpak/render/render_test.go
  • go.mod
  • internal/operator-controller/rukpak/preflights/crdupgradesafety/crdupgradesafety_test.go
  • internal/testutil/mock/generate.go
  • internal/operator-controller/controllers/suite_test.go
  • internal/operator-controller/action/helm_test.go
  • internal/operator-controller/controllers/clusterobjectset_controller_internal_test.go
  • internal/operator-controller/contentmanager/cache/cache_test.go
  • internal/operator-controller/controllers/resolve_ref_test.go
  • internal/catalogd/serverutil/serverutil_test.go
  • internal/operator-controller/controllers/clustercatalog_controller_test.go
  • internal/operator-controller/applier/provider_test.go
  • internal/operator-controller/authorization/rbac_test.go
  • internal/operator-controller/config/config_test.go
  • internal/catalogd/server/handlers_test.go
  • internal/shared/util/featuregates/logging_test.go
  • internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go
  • internal/catalogd/controllers/core/clustercatalog_controller_test.go
  • internal/operator-controller/applier/boxcutter_test.go
  • internal/operator-controller/catalogmetadata/client/client_test.go
  • internal/operator-controller/controllers/clusterobjectset_controller_test.go
  • internal/operator-controller/applier/helm_test.go
  • internal/operator-controller/controllers/clusterextension_controller_test.go

@openshift-ci

openshift-ci Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@openshift-bot: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-gcp-ovn-upgrade d97c384 link true /test e2e-gcp-ovn-upgrade
ci/prow/okd-scos-images d97c384 link true /test okd-scos-images
ci/prow/e2e-aws-upgrade-ovn-single-node d97c384 link false /test e2e-aws-upgrade-ovn-single-node

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.

joelanford and others added 3 commits June 25, 2026 21:03
…#2782)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: dtfranz <dfranz@redhat.com>

UPSTREAM: <carry>: Update generate-manifests to handle new directory

The `default` directory was renamed `base`.

Signed-off-by: Todd Short <todd.short@me.com>

The `base` directory was moved to `base\operator-controller`.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Drop commitchecker

Signed-off-by: Alexander Greene <greene.al1991@gmail.com>

UPSTREAM: <carry>: Updating ose-olm-operator-controller-container image to be consistent with ART
Reconciling with https://github.com/openshift/ocp-build-data/tree/4022cd290f00a44d667dda03f2d78d84a488c7ed/images/ose-olm-operator-controller.yml

UPSTREAM: <carry>: update owners

* Remove alumni from owners
* Add m1kola to approvers

Signed-off-by: Mikalai Radchuk <mradchuk@redhat.com>

UPSTREAM: <carry>: Add pointer to tooling README

UPSTREAM: <carry>: Disable Validating Admission Policy APIs downstream

Signed-off-by: Mikalai Radchuk <mradchuk@redhat.com>

UPSTREAM: <carry>: Updating ose-olm-operator-controller-container image to be consistent with ART for 4.16
Reconciling with https://github.com/openshift/ocp-build-data/tree/6250d54c4686a708ca5985afb73080e8ca9a1f7f/images/ose-olm-operator-controller.yml

UPSTREAM: <carry>: Enable Validating Admission Policy APIs downstream

* This reverts commit 3f079c4.
* Includes Validating Admission Policy manifests

Signed-off-by: Mikalai Radchuk <mradchuk@redhat.com>

UPSTREAM: <carry>: manifests: set required-scc for openshift workloads

UPSTREAM: <carry>: Updating ose-olm-operator-controller-container image to be consistent with ART for 4.17
Reconciling with https://github.com/openshift/ocp-build-data/tree/4c1326094222f9209876f06833179a1b9178faf7/images/ose-olm-operator-controller.yml

UPSTREAM: <carry>: add everettraven to approvers+reviewers

Signed-off-by: everettraven <everettraven@gmail.com>

UPSTREAM: <carry>: add openshift kustomize overlay

to enable TLS communication with catalogd. Configure the CA certs
using the configmap injection method via service-ca-operator

Signed-off-by: everettraven <everettraven@gmail.com>

UPSTREAM: <carry>: Add tmshort to approvers

Also `s/runtime/framework/g` in the DOWNSTREAM_OWNERS

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Updating ose-olm-operator-controller-container image to be consistent with ART for 4.18
Reconciling with https://github.com/openshift/ocp-build-data/tree/dd68246f3237db5db458127566fc7b05b55e1660/images/ose-olm-operator-controller.yml

UPSTREAM: <carry>: Properly copy and call kustomize

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: manifests: add hostPath mount for /etc/containers

Signed-off-by: Joe Lanford <joe.lanford@gmail.com>

UPSTREAM: <carry>: Add test-e2e target for downstream Makefile to be run by openshift/release.

Signed-off-by: dtfranz <dfranz@redhat.com>

UPSTREAM: <carry>: Add downstream verify makefile target

Signed-off-by: dtfranz <dfranz@redhat.com>

UPSTREAM: <carry>: openshift: template log verbosity to be managed by cluster-olm-operator

Signed-off-by: Joe Lanford <joe.lanford@gmail.com>

UPSTREAM: <carry>: Add global-pull-secret flag

Pass global-pull-secret to the manager container.

Signed-off-by: Mikalai Radchuk <mradchuk@redhat.com>

UPSTREAM: <carry>: Update openshift CAs to operator-controller

The /run/secrets/kubernetes.io/serviceaccount/ directory is projected
into the pod and contains the following CA certificates:

* configmap/kube-root-ca.crt as ca.crt
* configmap/openshift-service-ca.crt as service-ca.crt

Update the --ca-certs-dir argument to reference the directory.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Add HowTo for origin tests

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Add e2e registry Dockerfile

Signed-off-by: dtfranz <dfranz@redhat.com>

UPSTREAM: <carry>: add nodeSelector and tolerations to operator-controller deployment via kustomize patch

Signed-off-by: everettraven <everettraven@gmail.com>

UPSTREAM: <carry>: namespace: use privileged PSA for audit and warn levels

Signed-off-by: Joe Lanford <joe.lanford@gmail.com>

UPSTREAM: <carry>: Enable downstream e2e

Signed-off-by: dtfranz <dfranz@redhat.com>

UPSTREAM: <carry>: Remove m1kola from owners

Signed-off-by: Mikalai Radchuk <mradchuk@redhat.com>

UPSTREAM: <carry>: Updating ose-olm-operator-controller-container image to be consistent with ART for 4.19
Reconciling with https://github.com/openshift/ocp-build-data/tree/a39508c86497b4e5e463d7b2c78e51e577be9e7d/images/ose-olm-operator-controller.yml

UPSTREAM: <carry>: generate and mount service-ca server cert

Signed-off-by: Joe Lanford <joe.lanford@gmail.com>

UPSTREAM: <carry>: Add support for proxy trustedCAs

Just map the list of trusted ca certs into the deployment

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Fix error to build the image

Copy correct (new) executable name for operator-controller

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Fix make verify for mac os envs

Joe Lanford <joe.lanford@gmail.com>

UPSTREAM: <carry>: Move operator-controller openshift files to its own dir

UPSTREAM: <carry>: Upgrade OCP images from 4.18 to 4.19

UPSTREAM: <carry>: Add Openshift's catalogd manifests

- Move to openshift/catalogd the specific manifest under: https://github.com/openshift/operator-framework-catalogd/tree/main/openshift
- Add call to generate catalogd manifest to 'make manifest'. Make verify test is now done for catalogd and operator-controller Openshift's manifests

UPSTREAM: <carry>: resolve issue with pre-mature mounting of trusted CA configmap

Signed-off-by: Joe Lanford <joe.lanford@gmail.com>

UPSTREAM: <carry>: Add /etc/docker to the operator-controller and catalogd deployments

This allows for use of the any image.config.openshift.io trusted CAs

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: fixup catalogd.Dockerfile paths

Signed-off-by: Joe Lanford <joe.lanford@gmail.com>

UPSTREAM: <carry>: Resolve issue with pre-mature mounting of service CA configmap

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: use projected volume for CAs to avoid subPath limitations

Signed-off-by: Joe Lanford <joe.lanford@gmail.com>

UPSTREAM: <carry>: Revert "UPSTREAM: <carry>: use projected volume for CAs to avoid subPath limitations"

This reverts commit 548caa4.

UPSTREAM: <carry>: use projected volume for CAs to avoid subPath limitations

Signed-off-by: Joe Lanford <joe.lanford@gmail.com>

UPSTREAM: <carry>: Remove vet from openshift verify

The `vet` target was removed upstream.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Skip another upstream test

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Cleanup openshift/Makefile by removing no longer required comments regards catalogd e2e tests

UPSTREAM: <carry>: Enable OCP metrics collection by default

Enables OCP to collect Prometheus metrics for both catalogd and
operator-controller by default. This is accomplished
via ServiceMonitor CRs which are now created for both projects.

UPSTREAM: <carry>: Fix catalogd.Dockerfile to use new paths

The root catalogd directory has been removed

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Update DOWNSTREAM_OWNERS_ALIASES

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Add openshift node selector annotation

Signed-off-by: Catherine Chan-Tse <cchantse@redhat.com>
(cherry picked from commit 9b4a113)

UPSTREAM: <carry>: Add caalogd-cas-dir option to op-con

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: set the SElinux type

Signed-off-by: Jian Zhang <jiazha@redhat.com>

UPSTREAM: <carry>: Add initial stack to run tests to validate the catalogs

UPSTREAM: <carry>: Add vendor files for the catalog-sync tests

UPSTREAM: <carry>: Bump catalog versions to 4.19

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: revert "Bump catalog versions to 4.19"

This reverts commit a98980b.

UPSTREAM: <carry>: Update HOWTO-origin-tests

techpreview is no longer a required option.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: [DefaultCatalogTests]: Allow to pass auth path for docker credentials"

UPSTREAM: <carry>: fix: set NoLchown=true to allow image unpack on OCPci

UPSTREAM: <carry>: [DefaultCatalogTests]: Moving parse of ENVVAR to the caller (follow-up 345)

UPSTREAM: <carry>: [Default Catalog]: Create tmp dir to extract layers with right permissions to avoid issues scenarios

UPSTREAM: <carry>: [Default Catalog](cleanp) Remove hack directory which is not used

UPSTREAM: <carry>: Change code implementation to extract layers in OCP env

UPSTREAM: <carry>: Add vendor files for change in the extract code implementation

UPSTREAM: <carry>: [Default Catalog Tests]: Final cleanups and enhancements of initial implementation

UPSTREAM: <carry>: SELinux type for operator-controller

Signed-off-by: Jian Zhang <jiazha@redhat.com>

UPSTREAM: <carry>: Bump catalog versions to 4.19

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: [Default Catalog Consistency Test] (feat) add check for executable files in filesystem

Checks if given paths exist and point to executable files or valid symlinks.

UPSTREAM: <carry>: [Default Catalog Consistency Test]: fix junit output format to allow generate xml

UPSTREAM: <carry>: [Default Catalog Consistency Test] (feat) add check to validate multi-arch support

UPSTREAM: <carry>: [Default Catalog Consistency Test]: Enable CatalogChecks

UPSTREAM: <carry>: [Default Catalog Consistency Test]: Rename Tests suite and small cleanups

UPSTREAM: <carry>: Updating ose-olm-operator-controller-container image to be consistent with ART for 4.20
Reconciling with https://github.com/openshift/ocp-build-data/tree/dfb5c7d531490cfdc61a3b88bc533702b9624997/images/ose-olm-operator-controller.yml

UPSTREAM: <carry>: Updating ose-olm-catalogd-container image to be consistent with ART for 4.20
Reconciling with https://github.com/openshift/ocp-build-data/tree/dfb5c7d531490cfdc61a3b88bc533702b9624997/images/ose-olm-catalogd.yml

UPSTREAM: <carry>: Update e2e registry to use 1.24/4.20

Update the e2e registry Dockerfile to use golang 1.24/OCP 4.20

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: [Catalog Default Tests]: Upgrade go version to 1.24.3, dependencies and fix new lint issue

UPSTREAM: <carry>: Add structure to allow move the orgin tests using OTE

This commit introduces a binary and supporting structure to enable the
execution of OpenShift origin (olmv1) tests using the Open Test Environment (OTE).

It lays the groundwork for moving origin test in openshift/origin to
be executed from this repository using OTE.

UPSTREAM: <carry>: Add support for experimental manifests

Update the openshift kustomize configuration for both operator-controller
and catalogd.

Update the manifest generation scripts to put the core generation code
into a function (ignore-whitespace will help with the review), so that
it can be called twice; once for standard, and once for experimental.

Move around some of the kustomization directives to
* Create a patch kustomization (Component) file and move the patch directives from olmv1-ns there. This allows it to be referenced from a different directory.
* Add a kustomization file for tusted-ca. This allows it to be referenced from a different directory.
* Move the setting of the namePrefix for operator-controller; this makes the generation compatible with upstream feature components.
* Define experimental kustomization files that reference existing components.
* Reference the correct CRDs (standard or experimental).
* Add references to upstream feature components into the experimental manifests.

This *will* add `--feature-gates` options from the upstream feature
components to the experimental manifests. The cluster-olm-operator will
strip those arguments from the deployments before adding the enabled
feature gates.

Update the Dockerfiles to include the experimental manifests and a copy
script (`cp-manifests`) into the image containers. The complexity of
having multiple sets of manifests mean that the simple initContainer
copy mechanism found in cluster-olm-operator is no longer sufficient.

This attempts to keep backwards compatibility with older versions of
cluster-olm-operator, specifically by keeping the original (standard)
manifests in the original location, and adding the experimental
manifests in a new directory. The new `cp-manifests` script is used
by newer versions of cluster-olm-operator.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: [OTE] - chore: follow up openshift#383 – remove unreachable target call

UPSTREAM: <carry>: Remove build of test image registry

Upstream now uses a different image

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Add test-experimental-e2e target to openshift Makefile

This adds a test-experimental-e2e target to allow the CI to run the
experimental e2e test.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: [OTE]: Add binary in the operator controller image to allow proper integration with OCP tests

UPSTREAM: <carry>: Fix experimental manifest copying

The standard manifest was being copied rather than the experimental
manifest. This meant that the expected feature-flags are not present.
This is failing now that we are doing a check for those feature-flags.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Update manifest generation for upstream rbac/webhooks

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: [OTE] - Add tracking mechanism

UPSTREAM: <carry>: Update OTE dep to get fix

UPSTREAM: <carry>: [OTE] Add Readme

UPSTREAM: <carry>: set GIT_COMMIT env from SOURCE_GIT_COMMIT in Dockerfiles for operator-controller and catalogd

Signed-off-by: Rashmi Gottipati <chowdary.grashmi@gmail.com>

UPSTREAM: <carry>: add openshift specific build target to pass commit info downstream

Signed-off-by: Ankita Thomas <ankithom@redhat.com>

UPSTREAM: <carry>: add source commit into binaries when linking

- Removes extra GIT_COMMIT set
- fixup Dockerfiles after rebase
- consider "" unset so build-info can fill commit/date
- double quote go flags & honor GIT_COMMIT if set
- improve robustness of build-info parsing
- Trim whitespace on all version fields
- isUnset and valueOrUnknown now call strings.TrimSpace
- Avoid clobbering values injected via ldflags
- set repoState from build-info only when repoState is still unset
- set version from build-info only when unset and build-info value is non-empty

UPSTREAM: <carry>: OTE add first test from openshift/origin olmv1.go

UPSTREAM: <carry>: Migrate tasks from openshift/origin olm v1.go file which are remaining

This commit moves the final OLMv1 tests from openshift/origin/test/extended/olm/olmv1.go to their proper location in this repository. This migration is part of a larger effort to streamline development by co-locating tests with the component they validate. This will reduce CI overhead and allow for faster, more atomic changes.

Assisted-by: Gemini

UPSTREAM: <carry>: OTE - How to test locally with OCP instances

UPSTREAM: <carry>: [OTE] Refac: refac helper and olmv1 test to create namespace instead to use pre-existent

UPSTREAM: <carry>: [OTE] add webhook tests

Migrates OLMv1 webhook operator tests from using external YAML files to
defining resources in Go structs. This change removes file dependencies,
improving test reliability and simplifying test setup.

The migration is a refactoring of code from openshift/origin#30059.
The new code uses better naming conventions and adapts the tests to work
with a controller-runtime client, enhancing test consistency and maintainability.

The migration covers all core test scenarios:
- Validating, mutating, and conversion webhooks.
- Certificate and secret rotation tolerance.

Assisted-by: Gemini

UPSTREAM: <carry>: OTE: rewrite the upgrade incompatible operator test

This test replaces the existing upgrade incompatible test.
The main change is that operator and catalog bundles are created on-the-fly
to support OCP 4.20. This means we are no longer dependent on public
operators for this test.

This creates new bundles in the OCP ImageRegistry, this requires using
a number of OCP APIs, including using a raw API URL to invoke the build.
This is done by invoking an external k8s client (either `oc` or `kubectl`),
and passing it a tarball of the bundle to be created. So, it can't be done
by the golang k8sClient normally available (i.e. the create input is a
tarball not a YAML file).

This introduces the use of go-bindata to store the bundle contents.

It also pulls in openshift mage, buld and operator APIs.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Handle service-ca cert availability/rotation

There is problem when the service-ca certificate is not available at pod start.
This is an issue because the SystemCertPool is created from SSL_CERT_DIR,
which may include the empty service-ca. The SystemCertPool is never regenerated
during the lifetime of the program execution, so it will never get updated when
the service-ca is filled. Thus, we need to use --pull-cas-dir to reference the
CAs that we want to use. This will also allow OLMv1 to reload the service-ca
when it is reloaded (after 2 years, mind you). Removing the SSL_CERT_DIR setting,
and adding the --pull-cas-dir flag ought to be equivalent to what we have now
(i.e. SSL_CERT_DIR and no --pull-cas-dir), except that rotation will be handled
better.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: [OTE] add webhook tests

Revert "UPSTREAM: <carry>: [OTE] add webhook tests"

This reverts commit 9963614.

UPSTREAM: <carry>: Upgrade OCP Catalog images from 4.19 to 4.20

UPSTREAM: <carry>: Remove bindata generation from build

Using go-bindata is causing problems with ART builds.

This removes the use of go-bindata from the builds.

This will subsequently require that users MANUALLY run
the `bindata` target to refresh the bindata, or use
the `build-update` target.

This is a quickfix to put out the fire.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: [OTE] Add webhook tests

- Add dumping of container logs and `kubectl describe pods` output for better diagnostics.
- Include targeted certificate details dump (`tls.crt` parse) when failures occur.
- Add additional check to verify webhook responsiveness after certificate rotation.

This change is a refactor of code from openshift/origin#30059.

Assisted-by: Gemini

UPSTREAM: <carry>: OTE add logs and dumps for olmv1 test and fix helper for clusterextensions

UPSTREAM: <carry>: [OTE] Migrate preflight checks from openshift/origin

Migrated OLMv1 operator preflight checks from using external YAML files to
defining ClusterRole permissions directly in Go structs. This improves test
reliability and simplifies test setup by removing file dependencies.

The changes ensure precise replication of original test scenarios,
including specific permission omissions for services, create verbs,
ClusterRoleBindings, ConfigMap resourceNames, and escalate/bind verbs.

Assisted-by: Gemini

UPSTREAM: <carry>: [OTE] Add webhook to validate openshift-service-ca certificate rotation

This change is a refactor of code from openshift/origin#30059.

Assisted-by: Gemini

UPSTREAM: <carry>: Adds ResourceVersion checks to the tls secret deletion test, mirroring the logic used in the certificate rotation test. This makes the test more robust by ensuring a new secret is created, not just that an existing one is still present.

UPSTREAM: <carry>: [OTE] - Readme:Add info to help use payload-aggregate with new tests

UPSTREAM: <carry>: remove obsolete owners

Signed-off-by: grokspawn <jordan@nimblewidget.com>

UPSTREAM: <carry>: [OTE] add catalog tests from openshift/origin

This commit migrates the olmv1_catalog set of tests from openshift/origin
to OTE as part the broad effort to migrate all tests.

Assisted-by: Gemini

UPSTREAM: <carry>: Migrate single/own namespace tests

This commit migrates the OLMv1 single and own namespace watch mode tests from openshift/origin/test/extended/olm/olmv1-singleownnamespace.go to this repository. This is part of the effort to move component-specific tests into their respective downstream locations.

Assisted-by: Gemini

UPSTREAM: <carry>: Adds ResourceVersion checks to the tls secret deletion test, mirroring the logic used in the certificate rotation test. This makes the test more robust by ensuring a new secret is created, not just that an existing one is still present.

This reverts commit 0bb1953.

UPSTREAM: <carry>: [OTE] Add webhook to validate openshift-service-ca certificate rotation

This reverts commit e9e3220.

UPSTREAM: <carry>: Ensure unique name for bad-catalog tests

UPSTREAM: <carry>: Revert "Handle service-ca cert availability/rotation"

This reverts commit 9cc13d8.

UPSTREAM: <carry>: grant QE approver permission for OTE

UPSTREAM: <carry>: Update webhook ote tests to use latest webhook-operator

Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>

UPSTREAM: <carry>: update operator-controller to v1.5.1

UPSTREAM: <carry>: configure watchnamespace using spec.config for OTE tests

UPSTREAM: <carry>: add jiazha to approvers

UPSTREAM: <carry>: Create combined manifests for comparison

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Use Helm charts for openshift manifests

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: add support for tests-private cases and add the case

UPSTREAM: <carry>: Fix cp-manifests copying of helm charts

The method used to copy the helm charts is including an extra `helm`
directory in the destination path, that is making the cluster-olm-operator
code just a bit more complicated than it needs to be.

This fixes the copy location.

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Remove kustomize manifests from images and repo

Now that helm manifests are being used to dynamically generate the
manifests, the pre-generated manifests are no longer needed. So,
we can remove them from the repo and the images.

However, because we still want to verify the manifests are "good",
we are still creating a "single-file" version of the manifests
for verification purposes, and to allow us to see what changes
are happening to the manifests (from upstream and/or downstream
sources).

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Add pedjak and trgeiger as reviewers

UPSTREAM: <carry>: migrate more cases from tests-private and enhance suites with filters

UPSTREAM: <carry>: Updating ose-olm-operator-controller-container image to be consistent with ART for 4.21
Reconciling with https://github.com/openshift/ocp-build-data/tree/4fbe3fab45239dc4be6f5d9d98a0bf36e0274ec9/images/ose-olm-operator-controller.yml

UPSTREAM: <carry>: Updating ose-olm-catalogd-container image to be consistent with ART for 4.21
Reconciling with https://github.com/openshift/ocp-build-data/tree/4fbe3fab45239dc4be6f5d9d98a0bf36e0274ec9/images/ose-olm-catalogd.yml

UPSTREAM: <carry>: OTE: Enable disconnected environment and build test operator controller image

Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>

UPSTREAM: <carry>: for incompatible test add func to wait builder and deployer SA creation by OCP controller

UPSTREAM: <carry>: Fix VERSION replacement in catalog bindata

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: check kubeconfig only run-test and run-suite

UPSTREAM: <carry>: Clean up cp-manifests

There is no longer a need to copy conditionally

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: Update does-not-exist and simple install to work in a disconnected environment

Signed-off-by: Todd Short <todd.short@me.com>

UPSTREAM: <carry>: support webhook case in disconnected

UPSTREAM: <carry>: Consolidate build API

This consolidates the in-cluster building of a bundle and catalog.
The catalog and bundle bindata are inputs, along with a set of
replacements so that catalog and bundle templates can be used to
create the images.

This can be done in the BeforeEach() for a set of tests that use the
same data.

Signed-off-by: Todd Short <todd.short@me.com>
camilamacedo86 and others added 26 commits June 26, 2026 00:07
…t in OTE tests

Update all remaining references to ClusterExtensionRevision in
openshift/tests-extension to use ClusterObjectSet, matching the
upstream rename in operator-framework/operator-controller#2589.

Files updated:
- test/qe/specs/olmv1_ce.go: RBAC resource names and comments
- test/olmv1-preflight.go: scenario constants, test names, RBAC rules
- .openshift-tests-extension/openshift_payload_olmv1.json: test name
- pkg/bindata/qe/bindata.go: embedded RBAC templates
- test/qe/testdata/olm/sa-nginx-limited-boxcutter.yaml: RBAC resources
- test/qe/testdata/olm/sa-nginx-insufficient-operand-rbac-boxcutter.yaml: RBAC resources

Signed-off-by: Camila Macedo <cmacedo@redhat.com>
Made-with: Cursor
…s ClusterObjectSet

The upstream rename of ClusterExtensionRevision to ClusterObjectSet
(operator-framework/operator-controller#2589) breaks the incompatible
operator detection in cluster-olm-operator. The cluster-olm-operator
binary still reads ClusterExtensionRevision resources to find operators
with olm.maxOpenShiftVersion, so after the rename it never detects
incompatible operators and InstalledOLMOperatorsUpgradeable stays True.

Skip this test when NewOLMBoxCutterRuntime feature gate is enabled
until cluster-olm-operator is updated to read ClusterObjectSet.

Signed-off-by: Camila Macedo <cmacedo@redhat.com>
Made-with: Cursor
Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
Signed-off-by: Todd Short <todd.short@me.com>
…ffinity for HA topology

Rolling updates in HighlyAvailable clusters leave catalogd and
operator-controller unavailable when the only running pod is evicted
before its replacement is ready.

Fix by defaulting replicas=1 and PDB disabled in the static Helm values
(safe for SNO/External topologies, passes the SNO conformance test that
asserts exactly one replica in SingleReplica topology mode). Add pod
anti-affinity to prefer scheduling replicas on different nodes.

cluster-olm-operator detects the cluster's ControlPlaneTopology at
startup and overrides these values to replicas=2 and PDB enabled when a
HighlyAvailable topology is detected, then re-renders the manifests
before starting controllers. When a topology change is observed at
runtime (exceedingly rare), the operator exits so its deployment
controller restarts it, triggering a fresh Helm render with the correct
values for the new topology.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Todd Short <tshort@redhat.com>
…etween both-watch-modes scenarios

The both-watch-modes test loops over two scenarios (singlens, ownns) inside
a single It block and was blocking on full namespace deletion between them.
This caused flaky 300s timeouts on GCP techpreview clusters where master
nodes run at 94-99% CPU, which starves the namespace controller and makes
namespace termination arbitrarily slow.

The wait was not guarding anything real:
- EnsureCleanupClusterExtension already ensures the CE and CRD are gone;
  since CE deletion uses ForegroundPropagation, the ClusterObjectSet teardown
  must complete before the CE disappears, meaning all managed resources
  (Deployments, Services, etc.) are already deleted at that point.
- The singleown bundle installs no ValidatingWebhookConfiguration or
  MutatingWebhookConfiguration, so there is no webhook admission risk.
- Each scenario generates unique namespace names and CRD group suffixes via
  rand.String(4), so a terminating namespace from scenario 1 cannot collide
  with or interfere with scenario 2's resources.

Trigger both namespace deletions and proceed without waiting. The DeferCleanup
registrations that already exist will handle any residual cleanup after the
spec exits.

Fixes: OCPBUGS-84943

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Todd Short <tshort@redhat.com>
- Replace broken test-experimental-e2e target (test/experimental-e2e no
  longer exists) with /bin/true so triggered jobs always succeed
- Pass -timeout=60m to go test; the previous invocation relied on Go's
  10m default which is too short for BoxcutterRuntime clusters
- Set E2E_STEP_TIMEOUT=15m; BoxcutterRuntime applies resources through
  sequential phases (CRD must reach Established before the deploy phase
  starts), making installations slower than the upstream 5m default
- Skip ~@CatalogdHA scenarios (require multiple catalogd replicas not
  present in standard topology)
- Skip ~@ProgressDeadline scenarios (require progressDeadlineMinutes < 10
  but the OpenShift CRD enforces a minimum of 10)
- Skip ~@httpproxy scenarios (too disruptive to cluster networking)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Todd Short <tshort@redhat.com>
The e2e-test-registry image is no longer built by CI after
openshift/release#78581 removed it from the CI config. The dynamic
per-scenario catalog system replaced the pre-built registry image,
making this Dockerfile dead code.
It's no longer bring used.

Signed-off-by: Todd Short <tshort@redhat.com>
Adds a new test that verifies cluster-olm-operator correctly configures
operator-controller and catalogd deployments based on the cluster's
control plane topology:
- HA topologies (HighlyAvailable, HighlyAvailableArbiter, DualReplica):
  replicas=2 with a PodDisruptionBudget present
- Non-HA topologies (SingleReplica/SNO, External): replicas=1, no PDB

Also registers policyv1 in the test scheme to support PDB list queries.

Assisted-by: claude
Signed-off-by: Todd Short <tshort@redhat.com>
… builders

Signed-off-by: Todd Short <tshort@redhat.com>
Set catalog image tags to v5.0 for the 4.23/5.0 release.

Dynamically discover an installable package from the serving catalogs
instead of hardcoding quay-operator v3.13.10, preferring quay-operator,
cluster-logging, serverless-operator, logic-operator in that order then
alling back to the first available package.

Signed-off-by: Todd Short <tshort@redhat.com>
@openshift-bot openshift-bot force-pushed the synchronize-upstream branch from d97c384 to fbaa792 Compare June 26, 2026 00:12
@openshift-bot openshift-bot added the lgtm Indicates that a PR is ready to be merged. label Jun 26, 2026
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jun 26, 2026
@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

New changes are detected. LGTM label has been removed.

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. kind/sync tide/merge-method-merge Denotes a PR that should use a standard merge by tide when it merges.

Projects

None yet

Development

Successfully merging this pull request may close these issues.