Skip to content

OCPBUGS-76381,OCPBUGS-76383,OCPBUGS-78211,OCPBUGS-78455: Synchronize From Upstream Repositories#682

Merged
openshift-merge-bot[bot] merged 96 commits intoopenshift:mainfrom
tmshort:synchronize
Mar 31, 2026
Merged

OCPBUGS-76381,OCPBUGS-76383,OCPBUGS-78211,OCPBUGS-78455: Synchronize From Upstream Repositories#682
openshift-merge-bot[bot] merged 96 commits intoopenshift:mainfrom
tmshort:synchronize

Conversation

@tmshort
Copy link
Copy Markdown
Contributor

@tmshort tmshort commented Mar 30, 2026

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

Date Commit Author Message
2026-03-30 15:29:27 operator-framework/operator-controller@2ca0350 Camila Macedo chore(Boxcutter): Rename ClusterExtensionRevision to ClusterObjectSet (#2589)
2026-03-30 15:17:40 operator-framework/operator-controller@46d66e1 Predrag Knezevic Add e2e test for installing bundle with large (~1MB) CRD (#2602)
2026-03-30 12:13:38 operator-framework/operator-controller@7145047 Kui Wang add create verb to boxcutter preflight (#2587)
2026-03-30 08:20:47 operator-framework/operator-controller@da4f73c Predrag Knezevic 🌱 Externalize CER phase objects into Secrets (#2595)
2026-03-27 15:39:27 operator-framework/operator-controller@e709e65 dependabot[bot] 🌱 Bump marocchino/sticky-pull-request-comment from 2 to 3 (#2601)
2026-03-27 13:35:35 operator-framework/operator-controller@de9700b Camila Macedo fix(boxcutter): detect collision when duplicate package is installed after upgrade (#2578)
2026-03-27 09:15:52 operator-framework/operator-controller@09d32fb Joe Lanford 🌱 Return *DeploymentConfig directly from GetDeploymentConfig() (#2598)

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

Date Commit Author Message
2026-03-27 00:08:03 openshift/operator-framework-operator-controller@a5404c7 dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@62b4047 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@6de33d6 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@503fd49 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@a65d5a5 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-03-27 00:08:07 openshift/operator-framework-operator-controller@861ba1d Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f60f97 Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f9b984 Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-03-27 00:08:09 openshift/operator-framework-operator-controller@93aa04c Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-03-27 00:08:10 openshift/operator-framework-operator-controller@b13601e Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@eada294 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@0ac0688 Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-03-27 00:08:12 openshift/operator-framework-operator-controller@3145d12 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-03-27 00:08:13 openshift/operator-framework-operator-controller@de1e37c Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-03-27 00:08:14 openshift/operator-framework-operator-controller@a661808 Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-03-27 00:08:15 openshift/operator-framework-operator-controller@4364573 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-03-27 00:08:16 openshift/operator-framework-operator-controller@a71adc8 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-03-27 00:08:17 openshift/operator-framework-operator-controller@7ad3189 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-03-27 00:08:18 openshift/operator-framework-operator-controller@2f4933e Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@8144924 Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@fcd1442 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-03-27 00:08:20 openshift/operator-framework-operator-controller@3c65fc1 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@982fe4a Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@4f53515 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@8184828 Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@b6d355b Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-03-27 00:08:23 openshift/operator-framework-operator-controller@fb547f6 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@d864aba Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@4814e36 Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@c3d2f49 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@cd2693d Bruno Andrade UPSTREAM: <carry>: update metadata
2026-03-27 00:08:26 openshift/operator-framework-operator-controller@5afdc7b Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-03-27 00:08:27 openshift/operator-framework-operator-controller@e0e7953 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@af06574 Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@bd49dc3 Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@b814f68 Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@1ee7765 Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-03-27 00:08:30 openshift/operator-framework-operator-controller@5936faa Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@8449cb7 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@0c71e80 Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@195ee5e Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@d56376d Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@bff8d21 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@2de6131 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@854eb32 Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@1bb5964 Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@6514282 Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@3801c43 Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-03-27 00:08:37 openshift/operator-framework-operator-controller@11047e4 Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@71786f8 Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@8d0230f Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-03-27 00:08:39 openshift/operator-framework-operator-controller@01efda6 Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@02513f3 Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@dbb99c4 Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-03-27 00:08:41 openshift/operator-framework-operator-controller@a51c6dc Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@c7d65a5 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@95bc574 Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@7f81680 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@d0150d1 Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-03-27 00:08:44 openshift/operator-framework-operator-controller@3ac430f Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-03-27 00:08:46 openshift/operator-framework-operator-controller@ce02174 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@986b309 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@b11dd9d Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-03-27 00:08:48 openshift/operator-framework-operator-controller@a03bcd1 Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@06577cb Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install tests
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@60dd248 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@95d72c0 Jian Zhang UPSTREAM: <carry>: update OCP-75441 to support multi-arch
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@ca62ded Kui Wang UPSTREAM: <carry>: deployment config cases
2026-03-27 00:08:51 openshift/operator-framework-operator-controller@7ba9124 Todd Short UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@e030a4e Todd Short UPSTREAM: <carry>: Update openshift/api and client-go
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@b5a6b66 Camila Macedo UPSTREAM: <carry>: Add boxcutter tests
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@5f04197 Xia Zhao UPSTREAM: <carry>: enhance QE cases
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@adf1cc9 Daniel Franz UPSTREAM: <carry>: Update quay-operator version to one containing arm64 support
2026-03-27 00:08:54 openshift/operator-framework-operator-controller@ffa1765 Kui Wang UPSTREAM: <carry>: verify volume/volumeMount override
2026-03-16 18:10:23 openshift/operator-framework-operator-controller@f0c6148 Jian Zhang UPSTREAM: <carry>: Add long-duration test script and documents
2026-03-27 13:43:28 openshift/operator-framework-operator-controller@5b3ec28 Todd Short UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests

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.

/label tide/merge-method-merge

joelanford and others added 7 commits March 27, 2026 09:15
Change GetDeploymentConfig() to return (*DeploymentConfig, error) instead of
map[string]any, eliminating the intermediate convertToDeploymentConfig() function
in provider.go. The caller was immediately converting the map to a DeploymentConfig
anyway, so this simplifies the API and removes unnecessary indirection.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bumps [marocchino/sticky-pull-request-comment](https://github.com/marocchino/sticky-pull-request-comment) from 2 to 3.
- [Release notes](https://github.com/marocchino/sticky-pull-request-comment/releases)
- [Commits](marocchino/sticky-pull-request-comment@v2...v3)

---
updated-dependencies:
- dependency-name: marocchino/sticky-pull-request-comment
  dependency-version: '3'
  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>
* Externalize CER phase objects into Secret refs

Add support for storing ClusterExtensionRevision phase objects in
content-addressable immutable Secrets instead of inline in the CER spec.
This removes the etcd object size limit as a constraint on bundle size.

API changes:
- Add ObjectSourceRef type with name, namespace, and key fields
- Make ClusterExtensionRevisionObject.Object optional (omitzero)
- Add optional Ref field with XValidation ensuring exactly one is set
- Add RefResolutionFailed condition reason
- Add RevisionNameKey label for ref Secret association

Applier (boxcutter.go):
- Add SecretPacker to bin-pack serialized objects into Secrets with
  gzip compression for objects exceeding 800KiB
- Add createExternalizedRevision with crash-safe three-step sequence:
  create Secrets, create CER with refs, patch ownerReferences
- Externalize desiredRevision before SSA comparison so the patch
  compares refs-vs-refs instead of inline-vs-refs
- Add ensureSecretOwnerReferences for crash recovery
- Pass SystemNamespace to Boxcutter from main.go

CER controller:
- Add resolveObjectRef to fetch and decompress objects from Secrets
- Handle ref resolution in buildBoxcutterPhases
- Add RBAC for Secret get/list/watch

E2e tests:
- Add scenario verifying refs, immutability, labels, and ownerRefs
- Add step definitions for ref Secret validation
- Fix listExtensionRevisionResources and
  ClusterExtensionRevisionObjectsNotFoundOrNotOwned to resolve refs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Address PR #2595 review feedback

- Fix duplicate key size inflation in SecretPacker by only incrementing
  size for new content hash keys
- Add io.LimitReader (10 MiB cap) for gzip decompression to prevent
  gzip bombs in controller and e2e helpers
- Add doc comment clarifying ObjectSourceRef.Namespace defaults to OLM
  system namespace during ref resolution
- Fix docs: orphan cleanup uses ownerReference GC, ref resolution
  failures are retried (not terminal)
- Remove unused ClusterExtensionRevisionReasonRefResolutionFailed constant
- Add default error branch in e2e listExtensionRevisionResources for
  objects missing both ref and inline content

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Change gzipThreshold from 800 KiB to 900 KiB

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Adds a new large-crd-operator test bundle containing a ~1MB CRD to verify
that the Boxcutter runtime correctly handles large bundle installations.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
… (#2589)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
@openshift-ci-robot
Copy link
Copy Markdown

@tmshort: 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-03-30 15:29:27 operator-framework/operator-controller@2ca0350 Camila Macedo chore(Boxcutter): Rename ClusterExtensionRevision to ClusterObjectSet (#2589)
2026-03-30 15:17:40 operator-framework/operator-controller@46d66e1 Predrag Knezevic Add e2e test for installing bundle with large (~1MB) CRD (#2602)
2026-03-30 12:13:38 operator-framework/operator-controller@7145047 Kui Wang add create verb to boxcutter preflight (#2587)
2026-03-30 08:20:47 operator-framework/operator-controller@da4f73c Predrag Knezevic 🌱 Externalize CER phase objects into Secrets (#2595)
2026-03-27 15:39:27 operator-framework/operator-controller@e709e65 dependabot[bot] 🌱 Bump marocchino/sticky-pull-request-comment from 2 to 3 (#2601)
2026-03-27 13:35:35 operator-framework/operator-controller@de9700b Camila Macedo fix(boxcutter): detect collision when duplicate package is installed after upgrade (#2578)
2026-03-27 09:15:52 operator-framework/operator-controller@09d32fb Joe Lanford 🌱 Return *DeploymentConfig directly from GetDeploymentConfig() (#2598)

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

Date Commit Author Message
2026-03-27 00:08:03 openshift/operator-framework-operator-controller@a5404c7 dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@62b4047 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@6de33d6 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@503fd49 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@a65d5a5 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-03-27 00:08:07 openshift/operator-framework-operator-controller@861ba1d Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f60f97 Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f9b984 Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-03-27 00:08:09 openshift/operator-framework-operator-controller@93aa04c Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-03-27 00:08:10 openshift/operator-framework-operator-controller@b13601e Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@eada294 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@0ac0688 Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-03-27 00:08:12 openshift/operator-framework-operator-controller@3145d12 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-03-27 00:08:13 openshift/operator-framework-operator-controller@de1e37c Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-03-27 00:08:14 openshift/operator-framework-operator-controller@a661808 Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-03-27 00:08:15 openshift/operator-framework-operator-controller@4364573 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-03-27 00:08:16 openshift/operator-framework-operator-controller@a71adc8 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-03-27 00:08:17 openshift/operator-framework-operator-controller@7ad3189 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-03-27 00:08:18 openshift/operator-framework-operator-controller@2f4933e Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@8144924 Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@fcd1442 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-03-27 00:08:20 openshift/operator-framework-operator-controller@3c65fc1 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@982fe4a Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@4f53515 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@8184828 Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@b6d355b Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-03-27 00:08:23 openshift/operator-framework-operator-controller@fb547f6 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@d864aba Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@4814e36 Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@c3d2f49 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@cd2693d Bruno Andrade UPSTREAM: <carry>: update metadata
2026-03-27 00:08:26 openshift/operator-framework-operator-controller@5afdc7b Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-03-27 00:08:27 openshift/operator-framework-operator-controller@e0e7953 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@af06574 Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@bd49dc3 Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@b814f68 Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@1ee7765 Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-03-27 00:08:30 openshift/operator-framework-operator-controller@5936faa Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@8449cb7 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@0c71e80 Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@195ee5e Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@d56376d Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@bff8d21 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@2de6131 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@854eb32 Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@1bb5964 Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@6514282 Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@3801c43 Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-03-27 00:08:37 openshift/operator-framework-operator-controller@11047e4 Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@71786f8 Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@8d0230f Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-03-27 00:08:39 openshift/operator-framework-operator-controller@01efda6 Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@02513f3 Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@dbb99c4 Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-03-27 00:08:41 openshift/operator-framework-operator-controller@a51c6dc Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@c7d65a5 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@95bc574 Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@7f81680 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@d0150d1 Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-03-27 00:08:44 openshift/operator-framework-operator-controller@3ac430f Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-03-27 00:08:46 openshift/operator-framework-operator-controller@ce02174 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@986b309 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@b11dd9d Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-03-27 00:08:48 openshift/operator-framework-operator-controller@a03bcd1 Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@06577cb Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install tests
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@60dd248 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@95d72c0 Jian Zhang UPSTREAM: <carry>: update OCP-75441 to support multi-arch
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@ca62ded Kui Wang UPSTREAM: <carry>: deployment config cases
2026-03-27 00:08:51 openshift/operator-framework-operator-controller@7ba9124 Todd Short UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@e030a4e Todd Short UPSTREAM: <carry>: Update openshift/api and client-go
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@b5a6b66 Camila Macedo UPSTREAM: <carry>: Add boxcutter tests
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@5f04197 Xia Zhao UPSTREAM: <carry>: enhance QE cases
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@adf1cc9 Daniel Franz UPSTREAM: <carry>: Update quay-operator version to one containing arm64 support
2026-03-27 00:08:54 openshift/operator-framework-operator-controller@ffa1765 Kui Wang UPSTREAM: <carry>: verify volume/volumeMount override
2026-03-16 18:10:23 openshift/operator-framework-operator-controller@f0c6148 Jian Zhang UPSTREAM: <carry>: Add long-duration test script and documents
2026-03-27 13:43:28 openshift/operator-framework-operator-controller@5b3ec28 Todd Short UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests

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.

/label tide/merge-method-merge

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

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Mar 30, 2026
@openshift-ci openshift-ci bot added the tide/merge-method-merge Denotes a PR that should use a standard merge by tide when it merges. label Mar 30, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 30, 2026

Walkthrough

Renames the ClusterExtensionRevision API and runtime surfaces to ClusterObjectSet and adds support for externalizing large bundle objects into Secrets via a new mutually-exclusive inline object / Secret ref model with packing, gzip, and ownerReference semantics.

Changes

Cohort / File(s) Summary
Core API & deepcopy
api/v1/clusterobjectset_types.go, api/v1/clusterextension_types.go, api/v1/zz_generated.deepcopy.go
Renamed CER types/constants → ClusterObjectSet equivalents, added ObjectSourceRef, made phase object optional and added ref with XValidation (exactly-one), updated status docs, regenerated deepcopies.
API tests & validation
api/v1/clusterobjectset_types_test.go, api/v1/clusterextensionrevision_types_test.go (deleted), api/v1/validation_test.go
Deleted old CER tests, added ClusterObjectSet immutability/validity test suites, updated validation helper/cases to use ClusterObjectSet types.
ApplyConfigurations (generated)
applyconfigurations/api/v1/clusterobjectset*.go, applyconfigurations/api/v1/clusterobjectsetobject.go, applyconfigurations/api/v1/objectsourceref.go, applyconfigurations/utils.go, applyconfigurations/api/v1/clusterextensionstatus.go
Renamed generated apply-configuration types to ClusterObjectSet variants, added ObjectSourceRefApplyConfiguration and ClusterObjectSetStatus apply type, removed old CER status apply, updated ForKind mapping.
CRD & Helm manifests
helm/.../crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml, helm/.../crd/experimental/...clusterextensions.yaml, helm/olmv1/templates/*
Added/updated ClusterObjectSet CRD (metadata/names), made phase object optional, added ref field and x-kubernetes-validations (has(object) != has(ref)), updated Helm template references and docs.
Secret externalization (packing)
internal/operator-controller/applier/secretpacker.go, internal/operator-controller/applier/secretpacker_test.go, internal/operator-controller/applier/externalize_test.go
Added SecretPacker to pack inline phase objects into content-addressed Secrets (optional gzip, size checks), produce refs map (phaseIdx,objIdx→ObjectSourceRef), and unit tests.
Boxcutter / applier
internal/operator-controller/applier/boxcutter.go, internal/operator-controller/applier/boxcutter_test.go
Switched generator interfaces to ClusterObjectSet, refactored apply flow to externalize inline objects (pack → apply COS with refs → ensure ownerReferences), added crash-safe sequencing and recovery, updated tests.
Phase handling & sorting
internal/operator-controller/applier/phase.go, internal/operator-controller/applier/phase_test.go
Updated PhaseSort/comparator signatures to ClusterObjectSet apply-configuration types while preserving deterministic GVK/metadata sort semantics and tests.
Controller & reconciler
internal/operator-controller/controllers/clusterobjectset_controller.go, internal/operator-controller/controllers/*_test.go, internal/operator-controller/controllers/boxcutter_reconcile_steps.go
Renamed reconciler to ClusterObjectSetReconciler, list/filter by ClusterObjectSet, added ref resolution (Secret fetch, gzip detection, JSON unmarshal with size bounds), sibling/foreign-revision collision checks, archival/status updates, and tests.
Resolve-ref tests & helpers
internal/operator-controller/controllers/resolve_ref_test.go, internal/operator-controller/applier/externalize_test.go
Added tests covering Secret-backed ObjectSourceRef resolution (plain JSON, gzip, missing secret/key, invalid JSON) and scheme helpers registering corev1.
RBAC & pre-authorizer
internal/operator-controller/authorization/rbac.go, internal/operator-controller/authorization/rbac_test.go, helm/.../rbac/*, config/samples/olm_v1_clusterextension.yaml, test/e2e/steps/testdata/*.yaml
Repointed RBAC resources from clusterextensionrevisionsclusterobjectsets (including /status and /finalizers), removed configurable namespaced-collection-verbs option (default create), and updated tests/templates.
E2E tests & steps
test/e2e/features/*, test/e2e/steps/*, test/e2e/README.md, test/e2e/steps/testdata/*
Replaced CER variables/steps with COS (CER_NAMECOS_NAME), added e2e scenarios for externalization, immutability, ownerReference checks, collision handling, and preflight permission verification; updated step implementations to resolve refs and handle gzip.
Docs & design
docs/concepts/large-bundle-support.md, AGENTS.md, docs/api-reference/*, .claude/commands/list-e2e-steps.md
Added Large Bundle Support design doc detailing per-object and phases-level externalization and conventions; updated docs and AGENTS.md to reference ClusterObjectSet semantics and the new ref model.
Config & provider simplification
internal/operator-controller/config/config.go, internal/operator-controller/config/config_test.go, internal/operator-controller/applier/provider.go, internal/operator-controller/applier/provider_test.go
GetDeploymentConfig now returns (*DeploymentConfig, error) (typed) instead of map[string]any; provider simplified to use typed config; tests adapted.
Labels, utilities & artifacts
internal/operator-controller/labels/labels.go, internal/shared/util/test/artifacts.go, hack/tools/update-crds.sh, cmd/operator-controller/main.go, commitchecker.yaml
Added RevisionNameKey label constant, updated artifact collection to ClusterObjectSet, updated CRD filename in scripts, wired controller manager to COS, removed expectedMergeBase.
Applyconfig/CRD generated + tooling
applyconfigurations/*, helm/*, openshift/*, config/samples/*
Wide generated/manifest updates to reflect ClusterObjectSet CRD and applyconfigs, plus CRD/schema doc text updates across Helm/openshift samples.
Testdata, bundles & regression fixtures
testdata/images/bundles/large-crd-operator/..., testdata/images/catalogs/test-catalog/..., test/regression/convert/testdata/...
Added large-crd-operator bundle and catalog entries; added/updated regression expected manifests and numerous test fixtures for affinity generator and other test data.
Misc & deps
go.mod, requirements.txt, many tests/docs`
Dependency bumps, many generated file edits, minor manifest/testfile formatting moves, and added OWNERS_ALIASES entry.

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

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

@tmshort tmshort changed the title NO-ISSUE: Synchronize From Upstream Repositories OCPBUGS-78455: Synchronize From Upstream Repositories Mar 30, 2026
@openshift-ci-robot openshift-ci-robot added jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels Mar 30, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@tmshort: This pull request references Jira Issue OCPBUGS-78455, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.22.0) matches configured target version for branch (4.22.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @Xia-Zhao-rh

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

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

Date Commit Author Message
2026-03-30 15:29:27 operator-framework/operator-controller@2ca0350 Camila Macedo chore(Boxcutter): Rename ClusterExtensionRevision to ClusterObjectSet (#2589)
2026-03-30 15:17:40 operator-framework/operator-controller@46d66e1 Predrag Knezevic Add e2e test for installing bundle with large (~1MB) CRD (#2602)
2026-03-30 12:13:38 operator-framework/operator-controller@7145047 Kui Wang add create verb to boxcutter preflight (#2587)
2026-03-30 08:20:47 operator-framework/operator-controller@da4f73c Predrag Knezevic 🌱 Externalize CER phase objects into Secrets (#2595)
2026-03-27 15:39:27 operator-framework/operator-controller@e709e65 dependabot[bot] 🌱 Bump marocchino/sticky-pull-request-comment from 2 to 3 (#2601)
2026-03-27 13:35:35 operator-framework/operator-controller@de9700b Camila Macedo fix(boxcutter): detect collision when duplicate package is installed after upgrade (#2578)
2026-03-27 09:15:52 operator-framework/operator-controller@09d32fb Joe Lanford 🌱 Return *DeploymentConfig directly from GetDeploymentConfig() (#2598)

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

Date Commit Author Message
2026-03-27 00:08:03 openshift/operator-framework-operator-controller@a5404c7 dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@62b4047 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@6de33d6 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@503fd49 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@a65d5a5 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-03-27 00:08:07 openshift/operator-framework-operator-controller@861ba1d Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f60f97 Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f9b984 Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-03-27 00:08:09 openshift/operator-framework-operator-controller@93aa04c Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-03-27 00:08:10 openshift/operator-framework-operator-controller@b13601e Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@eada294 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@0ac0688 Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-03-27 00:08:12 openshift/operator-framework-operator-controller@3145d12 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-03-27 00:08:13 openshift/operator-framework-operator-controller@de1e37c Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-03-27 00:08:14 openshift/operator-framework-operator-controller@a661808 Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-03-27 00:08:15 openshift/operator-framework-operator-controller@4364573 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-03-27 00:08:16 openshift/operator-framework-operator-controller@a71adc8 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-03-27 00:08:17 openshift/operator-framework-operator-controller@7ad3189 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-03-27 00:08:18 openshift/operator-framework-operator-controller@2f4933e Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@8144924 Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@fcd1442 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-03-27 00:08:20 openshift/operator-framework-operator-controller@3c65fc1 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@982fe4a Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@4f53515 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@8184828 Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@b6d355b Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-03-27 00:08:23 openshift/operator-framework-operator-controller@fb547f6 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@d864aba Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@4814e36 Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@c3d2f49 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@cd2693d Bruno Andrade UPSTREAM: <carry>: update metadata
2026-03-27 00:08:26 openshift/operator-framework-operator-controller@5afdc7b Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-03-27 00:08:27 openshift/operator-framework-operator-controller@e0e7953 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@af06574 Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@bd49dc3 Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@b814f68 Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@1ee7765 Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-03-27 00:08:30 openshift/operator-framework-operator-controller@5936faa Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@8449cb7 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@0c71e80 Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@195ee5e Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@d56376d Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@bff8d21 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@2de6131 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@854eb32 Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@1bb5964 Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@6514282 Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@3801c43 Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-03-27 00:08:37 openshift/operator-framework-operator-controller@11047e4 Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@71786f8 Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@8d0230f Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-03-27 00:08:39 openshift/operator-framework-operator-controller@01efda6 Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@02513f3 Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@dbb99c4 Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-03-27 00:08:41 openshift/operator-framework-operator-controller@a51c6dc Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@c7d65a5 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@95bc574 Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@7f81680 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@d0150d1 Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-03-27 00:08:44 openshift/operator-framework-operator-controller@3ac430f Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-03-27 00:08:46 openshift/operator-framework-operator-controller@ce02174 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@986b309 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@b11dd9d Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-03-27 00:08:48 openshift/operator-framework-operator-controller@a03bcd1 Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@06577cb Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install tests
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@60dd248 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@95d72c0 Jian Zhang UPSTREAM: <carry>: update OCP-75441 to support multi-arch
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@ca62ded Kui Wang UPSTREAM: <carry>: deployment config cases
2026-03-27 00:08:51 openshift/operator-framework-operator-controller@7ba9124 Todd Short UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@e030a4e Todd Short UPSTREAM: <carry>: Update openshift/api and client-go
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@b5a6b66 Camila Macedo UPSTREAM: <carry>: Add boxcutter tests
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@5f04197 Xia Zhao UPSTREAM: <carry>: enhance QE cases
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@adf1cc9 Daniel Franz UPSTREAM: <carry>: Update quay-operator version to one containing arm64 support
2026-03-27 00:08:54 openshift/operator-framework-operator-controller@ffa1765 Kui Wang UPSTREAM: <carry>: verify volume/volumeMount override
2026-03-16 18:10:23 openshift/operator-framework-operator-controller@f0c6148 Jian Zhang UPSTREAM: <carry>: Add long-duration test script and documents
2026-03-27 13:43:28 openshift/operator-framework-operator-controller@5b3ec28 Todd Short UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests

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.

/label tide/merge-method-merge

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

@openshift-ci openshift-ci bot requested a review from Xia-Zhao-rh March 30, 2026 18:07
Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
@openshift-ci openshift-ci bot requested review from dtfranz and perdasilva March 30, 2026 18:07
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 30, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: tmshort

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

The pull request process is described here

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

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

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Mar 30, 2026
@grokspawn
Copy link
Copy Markdown
Contributor

/lgtm

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

/label qe-approved
/verified by @bandrade

@openshift-ci openshift-ci bot added the qe-approved Signifies that QE has signed off on this PR label Mar 30, 2026
@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Mar 30, 2026
@openshift-ci openshift-ci bot removed the lgtm Indicates that a PR is ready to be merged. label Mar 31, 2026
@openshift-ci-robot openshift-ci-robot removed the verified Signifies that the PR passed pre-merge verification criteria label Mar 31, 2026
…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
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

♻️ Duplicate comments (2)
test/e2e/features/install.feature (1)

528-528: ⚠️ Potential issue | 🟠 Major

Don't pin the ref-Secret check to olmv1-system.

Line 528 still hard-codes the controller namespace. That makes this scenario environment-specific and will fail on installs that run the controller in openshift-operator-controller.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/e2e/features/install.feature` at line 528, The step "And
ClusterObjectSet \"${NAME}-1\" ref Secrets exist in \"olmv1-system\" namespace"
hard-codes the controller namespace; change it to use the dynamic
controller/operator namespace variable used elsewhere (e.g.,
${CONTROLLER_NAMESPACE} or ${OPERATOR_NAMESPACE}) or the scenario context value
instead of "olmv1-system". Update the Gherkin step invocation for
ClusterObjectSet "${NAME}-1" ref Secrets exist to reference that variable so the
check runs against the actual controller namespace in each environment.
internal/operator-controller/controllers/clusterobjectset_controller.go (1)

539-543: ⚠️ Potential issue | 🟠 Major

Honor the default namespace contract for Secret refs.

ObjectSourceRef.Namespace is documented as optional, but this lookup uses it verbatim. A ref that omits namespace will result in a lookup against an empty namespace, which will fail. Add a fallback to the OLM system namespace when ref.Namespace is empty.

🔧 Proposed fix
 func (c *ClusterObjectSetReconciler) resolveObjectRef(ctx context.Context, ref ocv1.ObjectSourceRef) (*unstructured.Unstructured, error) {
 	secret := &corev1.Secret{}
-	key := client.ObjectKey{Name: ref.Name, Namespace: ref.Namespace}
+	ns := ref.Namespace
+	if ns == "" {
+		ns = c.SystemNamespace
+	}
+	key := client.ObjectKey{Name: ref.Name, Namespace: ns}
 	if err := c.Client.Get(ctx, key, secret); err != nil {
-		return nil, fmt.Errorf("getting Secret %s/%s: %w", ref.Namespace, ref.Name, err)
+		return nil, fmt.Errorf("getting Secret %s/%s: %w", ns, ref.Name, err)
 	}

Note: The ClusterObjectSetReconciler struct would need a SystemNamespace field added if not already present.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/operator-controller/controllers/clusterobjectset_controller.go`
around lines 539 - 543, resolveObjectRef currently uses ref.Namespace verbatim
which fails when Namespace is omitted; change it to fallback to the operator/OLM
system namespace by using ref.Namespace if non-empty otherwise c.SystemNamespace
(add a SystemNamespace field to ClusterObjectSetReconciler if it doesn’t exist).
Update the key construction (client.ObjectKey{Name: ref.Name, Namespace:
effectiveNamespace}) and keep the existing Get call and error wrapping; ensure
the behavior is identical when a namespace is provided but uses
c.SystemNamespace when ref.Namespace == "".
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@api/v1/clusterobjectset_types_test.go`:
- Around line 154-209: The phase-related test cases in
clusterobjectset_types_test.go are using incomplete/zero-value specs so Create
validation rejects them before phase rules run; update each failing-case fixture
to include a valid CollisionProtection and otherwise-valid fields
(LifecycleState, Revision) and for the 21-phases case populate Phases with 21
entries that have valid non-empty names (e.g., "phase-1"...) so the "no more
than 20" rule triggers, for the 51-objects case populate a single phase with 51
valid ClusterObjectSetObject entries (fill required fields like
Group/Version/Kind/Name) so the "no more than 50 objects" rule triggers, and for
the name-related cases ensure CollisionProtection and other fields are valid and
that other validators (like object count) are within limits so the intended name
validation in the ClusterObjectSetSpec/ClusterObjectSetPhase validators runs.

In `@docs/api-reference/olmv1-api-reference.md`:
- Around line 382-384: The docs were partially updated to refer to
ClusterObjectSet but the API reference was not regenerated and is missing the
ClusterObjectSet resource and related types; regenerate the OpenAPI/swagger
reference/page so the documentation includes the ClusterObjectSet resource and
add explicit entries for ClusterObjectSet, ClusterObjectSetObject.ref and
ObjectSourceRef (search for symbols ClusterObjectSet,
ClusterObjectSetObject.ref, and ObjectSourceRef in the source/spec generator
output), ensuring their schemas, field descriptions, and links are emitted and
then update the sections that currently mention activeRevisions/ClusterExtension
to point to the newly generated ClusterObjectSet API docs.

In `@test/e2e/steps/steps.go`:
- Around line 840-875: ClusterObjectSetRefSecretsHaveOwnerRef does a single read
and can fail spuriously; change it to poll until ownerReferences appear (or
timeout) instead of asserting once: wrap the current logic that lists secrets
(listRefSecrets) and checks each Secret's OwnerReferences in a retry loop (e.g.,
using wait.PollImmediate or a context-aware retry) that re-lists secrets and
re-checks owner refs until success or deadline, honoring the provided ctx for
timeout/cancellation and still returning the same error messages when the final
attempt fails; keep getResource(cos) usage to obtain cosUID once and then poll
for the secrets' owner refs.
- Around line 1613-1649: resolveObjectRef currently always uses ref.Namespace
verbatim when calling k8sClient and in error messages, which breaks refs that
omit namespace; update resolveObjectRef to compute a resolvedNamespace =
ref.Namespace; if empty set it to the OLM system/test default namespace used
elsewhere in the suite, then use resolvedNamespace in the k8sClient(...) call
and in all error messages and Secret lookups (keep references to
ObjectSourceRef.Namespace but replace uses with resolvedNamespace) so ref-less
refs correctly resolve to the OLM system namespace.

---

Duplicate comments:
In `@internal/operator-controller/controllers/clusterobjectset_controller.go`:
- Around line 539-543: resolveObjectRef currently uses ref.Namespace verbatim
which fails when Namespace is omitted; change it to fallback to the operator/OLM
system namespace by using ref.Namespace if non-empty otherwise c.SystemNamespace
(add a SystemNamespace field to ClusterObjectSetReconciler if it doesn’t exist).
Update the key construction (client.ObjectKey{Name: ref.Name, Namespace:
effectiveNamespace}) and keep the existing Get call and error wrapping; ensure
the behavior is identical when a namespace is provided but uses
c.SystemNamespace when ref.Namespace == "".

In `@test/e2e/features/install.feature`:
- Line 528: The step "And ClusterObjectSet \"${NAME}-1\" ref Secrets exist in
\"olmv1-system\" namespace" hard-codes the controller namespace; change it to
use the dynamic controller/operator namespace variable used elsewhere (e.g.,
${CONTROLLER_NAMESPACE} or ${OPERATOR_NAMESPACE}) or the scenario context value
instead of "olmv1-system". Update the Gherkin step invocation for
ClusterObjectSet "${NAME}-1" ref Secrets exist to reference that variable so the
check runs against the actual controller namespace in each environment.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c46397ef-74cf-42a9-91c8-185443e43058

📥 Commits

Reviewing files that changed from the base of the PR and between a267dba and cd2151a.

⛔ Files ignored due to path filters (5)
  • go.sum is excluded by !**/*.sum
  • openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterextension_types.go is excluded by !**/vendor/**
  • openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterobjectset_types.go is excluded by !**/vendor/**
  • openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/zz_generated.deepcopy.go is excluded by !**/vendor/**
  • vendor/modules.txt is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (112)
  • .claude/commands/list-e2e-steps.md
  • AGENTS.md
  • OWNERS_ALIASES
  • api/v1/clusterextension_types.go
  • api/v1/clusterextensionrevision_types_test.go
  • api/v1/clusterobjectset_types.go
  • api/v1/clusterobjectset_types_test.go
  • api/v1/validation_test.go
  • api/v1/zz_generated.deepcopy.go
  • applyconfigurations/api/v1/clusterextensionrevisionstatus.go
  • applyconfigurations/api/v1/clusterextensionstatus.go
  • applyconfigurations/api/v1/clusterobjectset.go
  • applyconfigurations/api/v1/clusterobjectsetobject.go
  • applyconfigurations/api/v1/clusterobjectsetphase.go
  • applyconfigurations/api/v1/clusterobjectsetspec.go
  • applyconfigurations/api/v1/clusterobjectsetstatus.go
  • applyconfigurations/api/v1/objectsourceref.go
  • applyconfigurations/api/v1/revisionstatus.go
  • applyconfigurations/utils.go
  • cmd/operator-controller/main.go
  • commitchecker.yaml
  • config/samples/olm_v1_clusterextension.yaml
  • docs/api-reference/crd-ref-docs-gen-config.yaml
  • docs/api-reference/olmv1-api-reference.md
  • docs/concepts/large-bundle-support.md
  • go.mod
  • hack/tools/update-crds.sh
  • helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensions.yaml
  • helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml
  • helm/olmv1/templates/crds/customresourcedefinition-clusterobjectsets.olm.operatorframework.io.yml
  • helm/olmv1/templates/rbac/clusterrole-operator-controller-manager-role.yml
  • internal/operator-controller/applier/boxcutter.go
  • internal/operator-controller/applier/boxcutter_test.go
  • internal/operator-controller/applier/externalize_test.go
  • internal/operator-controller/applier/phase.go
  • internal/operator-controller/applier/phase_test.go
  • internal/operator-controller/applier/provider.go
  • internal/operator-controller/applier/provider_test.go
  • internal/operator-controller/applier/secretpacker.go
  • internal/operator-controller/applier/secretpacker_test.go
  • internal/operator-controller/authorization/rbac.go
  • internal/operator-controller/authorization/rbac_test.go
  • internal/operator-controller/config/config.go
  • internal/operator-controller/config/config_test.go
  • internal/operator-controller/controllers/boxcutter_reconcile_steps.go
  • internal/operator-controller/controllers/clusterextension_reconcile_steps.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/common_controller.go
  • internal/operator-controller/controllers/common_controller_test.go
  • internal/operator-controller/controllers/resolve_ref_test.go
  • internal/operator-controller/controllers/revision_engine_factory.go
  • internal/operator-controller/labels/labels.go
  • internal/operator-controller/rukpak/render/registryv1/generators/generators.go
  • internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go
  • internal/shared/util/test/artifacts.go
  • manifests/experimental-e2e.yaml
  • manifests/experimental.yaml
  • openshift/operator-controller/manifests-experimental.yaml
  • requirements.txt
  • test/e2e/README.md
  • test/e2e/features/install.feature
  • test/e2e/features/revision.feature
  • test/e2e/features/status.feature
  • test/e2e/features/update.feature
  • test/e2e/steps/hooks.go
  • test/e2e/steps/steps.go
  • test/e2e/steps/testdata/olm-sa-boxcutter-no-create-rbac-template.yaml
  • test/e2e/steps/testdata/olm-sa-boxcutter-rbac-template.yaml
  • test/e2e/steps/testdata/pvc-probe-sa-boxcutter-rbac-template.yaml
  • test/e2e/steps/testdata/rbac-template-for-all-extensions.yaml
  • test/regression/convert/generate-manifests.go
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/00_clusterrole_argocd-operator-metrics-reader.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/01_clusterrole_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/05_configmap_argocd-operator-manager-config.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/06_customresourcedefinition_applications.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/07_customresourcedefinition_applicationsets.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/08_customresourcedefinition_appprojects.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/09_customresourcedefinition_argocdexports.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/10_customresourcedefinition_argocds.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/11_deployment_argocd-operator-controller-manager.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/12_service_argocd-operator-controller-manager-metrics-service.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/13_serviceaccount_argocd-operator-controller-manager.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/00_clusterrole_argocd-operator-metrics-reader.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/01_clusterrole_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/05_configmap_argocd-operator-manager-config.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/06_customresourcedefinition_applications.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/07_customresourcedefinition_applicationsets.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/08_customresourcedefinition_appprojects.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/09_customresourcedefinition_argocdexports.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/10_customresourcedefinition_argocds.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/11_deployment_argocd-operator-controller-manager.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/12_service_argocd-operator-controller-manager-metrics-service.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/13_serviceaccount_argocd-operator-controller-manager.yaml
  • testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrd.operatorframework.io_largecrdtests.yaml
  • testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrdoperator.clusterserviceversion.yaml
  • testdata/images/bundles/large-crd-operator/v1.0.0/manifests/script.configmap.yaml
  • testdata/images/bundles/large-crd-operator/v1.0.0/metadata/annotations.yaml
  • testdata/images/bundles/own-namespace-operator/v1.0.0/manifests/ownnamespaceoperator.clusterserviceversion.yaml
  • testdata/images/bundles/single-namespace-operator/v1.0.0/manifests/singlenamespaceoperator.clusterserviceversion.yaml
  • testdata/images/bundles/test-operator/v1.0.0/manifests/testoperator.clusterserviceversion.yaml
  • testdata/images/bundles/test-operator/v1.0.2/manifests/testoperator.clusterserviceversion.yaml
  • testdata/images/bundles/test-operator/v1.0.3/manifests/testoperator.clusterserviceversion.yaml
  • testdata/images/bundles/test-operator/v1.2.0/manifests/testoperator.clusterserviceversion.yaml
  • testdata/images/catalogs/test-catalog/v1/configs/catalog.yaml
💤 Files with no reviewable changes (3)
  • commitchecker.yaml
  • applyconfigurations/api/v1/clusterextensionrevisionstatus.go
  • api/v1/clusterextensionrevision_types_test.go
✅ Files skipped from review due to trivial changes (41)
  • OWNERS_ALIASES
  • test/e2e/README.md
  • requirements.txt
  • internal/operator-controller/controllers/clusterextension_reconcile_steps.go
  • testdata/images/bundles/test-operator/v1.0.3/manifests/testoperator.clusterserviceversion.yaml
  • testdata/images/bundles/own-namespace-operator/v1.0.0/manifests/ownnamespaceoperator.clusterserviceversion.yaml
  • test/e2e/features/status.feature
  • testdata/images/bundles/single-namespace-operator/v1.0.0/manifests/singlenamespaceoperator.clusterserviceversion.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
  • AGENTS.md
  • testdata/images/bundles/large-crd-operator/v1.0.0/metadata/annotations.yaml
  • applyconfigurations/api/v1/revisionstatus.go
  • applyconfigurations/api/v1/clusterextensionstatus.go
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/05_configmap_argocd-operator-manager-config.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/00_clusterrole_argocd-operator-metrics-reader.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/13_serviceaccount_argocd-operator-controller-manager.yaml
  • test/e2e/steps/hooks.go
  • go.mod
  • testdata/images/bundles/large-crd-operator/v1.0.0/manifests/script.configmap.yaml
  • helm/olmv1/templates/crds/customresourcedefinition-clusterobjectsets.olm.operatorframework.io.yml
  • test/e2e/steps/testdata/pvc-probe-sa-boxcutter-rbac-template.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/12_service_argocd-operator-controller-manager-metrics-service.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/04_clusterrolebinding_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
  • api/v1/clusterextension_types.go
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/12_service_argocd-operator-controller-manager-metrics-service.yaml
  • helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensions.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/00_clusterrole_argocd-operator-metrics-reader.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/09_customresourcedefinition_argocdexports.argoproj.io.yaml
  • applyconfigurations/api/v1/clusterobjectsetstatus.go
  • testdata/images/catalogs/test-catalog/v1/configs/catalog.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/08_customresourcedefinition_appprojects.argoproj.io.yaml
  • internal/operator-controller/applier/secretpacker_test.go
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/09_customresourcedefinition_argocdexports.argoproj.io.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/05_configmap_argocd-operator-manager-config.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/13_serviceaccount_argocd-operator-controller-manager.yaml
  • applyconfigurations/api/v1/objectsourceref.go
  • internal/operator-controller/applier/externalize_test.go
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity/02_clusterrole_argocd-operator.v0.-3gkm3u8zfarktdile5wekso69zs9bgzb988mhjm0y6p.yaml
  • test/regression/convert/testdata/expected-manifests/argocd-operator.v0.6.0/with-empty-affinity-subtype/03_clusterrolebinding_argocd-operator.v0-1dhiybrldl1gyksid1dk2dqjsc72psdybc7iyvse5gpx.yaml
🚧 Files skipped from review as they are similar to previous changes (21)
  • internal/operator-controller/applier/provider_test.go
  • test/e2e/steps/testdata/olm-sa-boxcutter-rbac-template.yaml
  • internal/shared/util/test/artifacts.go
  • internal/operator-controller/authorization/rbac.go
  • test/e2e/steps/testdata/rbac-template-for-all-extensions.yaml
  • internal/operator-controller/labels/labels.go
  • applyconfigurations/utils.go
  • docs/api-reference/crd-ref-docs-gen-config.yaml
  • test/e2e/features/revision.feature
  • internal/operator-controller/authorization/rbac_test.go
  • internal/operator-controller/config/config_test.go
  • helm/olmv1/templates/rbac/clusterrole-operator-controller-manager-role.yml
  • api/v1/validation_test.go
  • openshift/operator-controller/manifests-experimental.yaml
  • internal/operator-controller/controllers/boxcutter_reconcile_steps.go
  • testdata/images/bundles/large-crd-operator/v1.0.0/manifests/largecrdoperator.clusterserviceversion.yaml
  • hack/tools/update-crds.sh
  • .claude/commands/list-e2e-steps.md
  • applyconfigurations/api/v1/clusterobjectsetphase.go
  • internal/operator-controller/controllers/revision_engine_factory.go
  • internal/operator-controller/applier/provider.go

Comment on lines +154 to +209
"phases must have no more than 20 phases": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: make([]ClusterObjectSetPhase, 21),
},
valid: false,
},
"phases entries must have no more than 50 objects": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "too-many-objects",
Objects: make([]ClusterObjectSetObject, 51),
},
},
},
valid: false,
},
"phases entry names cannot be empty": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "",
},
},
},
valid: false,
},
"phases entry names cannot start with symbols": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "-invalid",
},
},
},
valid: false,
},
"phases entry names cannot start with numeric characters": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "1-invalid",
},
},
},
valid: false,
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Make the phase-validation cases fail for the intended reason.

Lines 154-209 don't start from a valid spec: CollisionProtection is missing, the 21-phase case uses empty phase names, and the 51-object case uses zero-value objects. Create can be rejected before the 20-phase/50-object/name validators run, so these tests won't catch regressions in those rules.

🧪 Example of a tighter fixture setup
+	baseValidSpec := ClusterObjectSetSpec{
+		LifecycleState:      ClusterObjectSetLifecycleStateActive,
+		Revision:            1,
+		CollisionProtection: CollisionProtectionPrevent,
+	}
+
 	"phases must have no more than 20 phases": {
-		spec: ClusterObjectSetSpec{
-			LifecycleState: ClusterObjectSetLifecycleStateActive,
-			Revision:       1,
-			Phases:         make([]ClusterObjectSetPhase, 21),
-		},
+		spec: func() ClusterObjectSetSpec {
+			spec := baseValidSpec
+			spec.Phases = make([]ClusterObjectSetPhase, 21)
+			for i := range spec.Phases {
+				spec.Phases[i] = ClusterObjectSetPhase{Name: fmt.Sprintf("phase-%d", i)}
+			}
+			return spec
+		}(),
 		valid: false,
 	},
 	"phases entries must have no more than 50 objects": {
-		spec: ClusterObjectSetSpec{
-			LifecycleState: ClusterObjectSetLifecycleStateActive,
-			Revision:       1,
-			Phases: []ClusterObjectSetPhase{
-				{
-					Name:    "too-many-objects",
-					Objects: make([]ClusterObjectSetObject, 51),
-				},
-			},
-		},
+		spec: func() ClusterObjectSetSpec {
+			spec := baseValidSpec
+			objs := make([]ClusterObjectSetObject, 51)
+			for i := range objs {
+				objs[i] = ClusterObjectSetObject{
+					Ref: ObjectSourceRef{Name: "my-secret", Key: fmt.Sprintf("obj-%d", i)},
+				}
+			}
+			spec.Phases = []ClusterObjectSetPhase{{
+				Name:    "too-many-objects",
+				Objects: objs,
+			}}
+			return spec
+		}(),
 		valid: false,
 	},
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"phases must have no more than 20 phases": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: make([]ClusterObjectSetPhase, 21),
},
valid: false,
},
"phases entries must have no more than 50 objects": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "too-many-objects",
Objects: make([]ClusterObjectSetObject, 51),
},
},
},
valid: false,
},
"phases entry names cannot be empty": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "",
},
},
},
valid: false,
},
"phases entry names cannot start with symbols": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "-invalid",
},
},
},
valid: false,
},
"phases entry names cannot start with numeric characters": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "1-invalid",
},
},
},
valid: false,
baseValidSpec := ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
CollisionProtection: CollisionProtectionPrevent,
}
"phases must have no more than 20 phases": {
spec: func() ClusterObjectSetSpec {
spec := baseValidSpec
spec.Phases = make([]ClusterObjectSetPhase, 21)
for i := range spec.Phases {
spec.Phases[i] = ClusterObjectSetPhase{Name: fmt.Sprintf("phase-%d", i)}
}
return spec
}(),
valid: false,
},
"phases entries must have no more than 50 objects": {
spec: func() ClusterObjectSetSpec {
spec := baseValidSpec
objs := make([]ClusterObjectSetObject, 51)
for i := range objs {
objs[i] = ClusterObjectSetObject{
Ref: ObjectSourceRef{Name: "my-secret", Key: fmt.Sprintf("obj-%d", i)},
}
}
spec.Phases = []ClusterObjectSetPhase{{
Name: "too-many-objects",
Objects: objs,
}}
return spec
}(),
valid: false,
},
"phases entry names cannot be empty": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "",
},
},
},
valid: false,
},
"phases entry names cannot start with symbols": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "-invalid",
},
},
},
valid: false,
},
"phases entry names cannot start with numeric characters": {
spec: ClusterObjectSetSpec{
LifecycleState: ClusterObjectSetLifecycleStateActive,
Revision: 1,
Phases: []ClusterObjectSetPhase{
{
Name: "1-invalid",
},
},
},
valid: false,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/v1/clusterobjectset_types_test.go` around lines 154 - 209, The
phase-related test cases in clusterobjectset_types_test.go are using
incomplete/zero-value specs so Create validation rejects them before phase rules
run; update each failing-case fixture to include a valid CollisionProtection and
otherwise-valid fields (LifecycleState, Revision) and for the 21-phases case
populate Phases with 21 entries that have valid non-empty names (e.g.,
"phase-1"...) so the "no more than 20" rule triggers, for the 51-objects case
populate a single phase with 51 valid ClusterObjectSetObject entries (fill
required fields like Group/Version/Kind/Name) so the "no more than 50 objects"
rule triggers, and for the name-related cases ensure CollisionProtection and
other fields are valid and that other validators (like object count) are within
limits so the intended name validation in the
ClusterObjectSetSpec/ClusterObjectSetPhase validators runs.

Comment on lines +382 to +384
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.31/#condition-v1-meta) array_ | conditions represents the current state of the ClusterExtension.<br />The set of condition types which apply to all spec.source variations are Installed and Progressing.<br />The Installed condition represents whether the bundle has been installed for this ClusterExtension:<br /> - When Installed is True and the Reason is Succeeded, the bundle has been successfully installed.<br /> - When Installed is False and the Reason is Failed, the bundle has failed to install.<br />The Progressing condition represents whether or not the ClusterExtension is advancing towards a new state.<br />When Progressing is True and the Reason is Succeeded, the ClusterExtension is making progress towards a new state.<br />When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.<br />When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.<br /><opcon:experimental:description><br />When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.<br /></opcon:experimental:description><br />When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.<br />These are indications from a package owner to guide users away from a particular package, channel, or bundle:<br /> - BundleDeprecated is True if the installed bundle is marked deprecated, False if not deprecated, or Unknown if no bundle is installed yet or if catalog data is unavailable.<br /> - ChannelDeprecated is True if any requested channel is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.<br /> - PackageDeprecated is True if the requested package is marked deprecated, False if not deprecated, or Unknown if catalog data is unavailable.<br /> - Deprecated is a rollup condition that is True when any deprecation exists, False when none exist, or Unknown when catalog data is unavailable. | | Optional: \{\} <br /> |
| `install` _[ClusterExtensionInstallStatus](#clusterextensioninstallstatus)_ | install is a representation of the current installation status for this ClusterExtension. | | Optional: \{\} <br /> |
| `activeRevisions` _[RevisionStatus](#revisionstatus) array_ | activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,<br />including both installed and rolling out revisions.<br /><opcon:experimental> | | Optional: \{\} <br /> |
| `activeRevisions` _[RevisionStatus](#revisionstatus) array_ | activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,<br />including both installed and rolling out revisions.<br /><opcon:experimental> | | Optional: \{\} <br /> |
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Regenerate this reference for the new ClusterObjectSet API.

These edits switch the narrative to ClusterObjectSet, but the page still never documents the ClusterObjectSet resource, ClusterObjectSetObject.ref, or ObjectSourceRef. The public reference stays incomplete.

Also applies to: 554-563

🧰 Tools
🪛 LanguageTool

[style] ~382-~382: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’.
Context: ... />The Progressing condition represents whether or not the ClusterExtension is advancing towar...

(WHETHER)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/api-reference/olmv1-api-reference.md` around lines 382 - 384, The docs
were partially updated to refer to ClusterObjectSet but the API reference was
not regenerated and is missing the ClusterObjectSet resource and related types;
regenerate the OpenAPI/swagger reference/page so the documentation includes the
ClusterObjectSet resource and add explicit entries for ClusterObjectSet,
ClusterObjectSetObject.ref and ObjectSourceRef (search for symbols
ClusterObjectSet, ClusterObjectSetObject.ref, and ObjectSourceRef in the
source/spec generator output), ensuring their schemas, field descriptions, and
links are emitted and then update the sections that currently mention
activeRevisions/ClusterExtension to point to the newly generated
ClusterObjectSet API docs.

Comment on lines +840 to +875
// ClusterObjectSetRefSecretsHaveOwnerRef verifies that all ref Secrets for the named
// ClusterObjectSet have an ownerReference pointing to the ClusterObjectSet with controller=true.
func ClusterObjectSetRefSecretsHaveOwnerRef(ctx context.Context, revisionName string) error {
sc := scenarioCtx(ctx)
revisionName = substituteScenarioVars(strings.TrimSpace(revisionName), sc)

cosObj, err := getResource("clusterobjectset", revisionName, "")
if err != nil {
return fmt.Errorf("getting ClusterObjectSet %q: %w", revisionName, err)
}
cosUID := cosObj.GetUID()

secrets, err := listRefSecrets(ctx, revisionName)
if err != nil {
return err
}
if len(secrets) == 0 {
return fmt.Errorf("no ref Secrets found for revision %q", revisionName)
}

for _, s := range secrets {
found := false
for _, ref := range s.OwnerReferences {
if ref.Kind == ocv1.ClusterObjectSetKind && ref.Name == revisionName && ref.UID == cosUID {
if ref.Controller == nil || !*ref.Controller {
return fmt.Errorf("secret %s/%s has ownerReference to ClusterObjectSet but controller is not true", s.Namespace, s.Name)
}
found = true
break
}
}
if !found {
return fmt.Errorf("secret %s/%s does not have ownerReference to ClusterObjectSet %q (uid %s)", s.Namespace, s.Name, revisionName, cosUID)
}
}
return nil
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Poll for Secret ownerReferences instead of asserting once.

This helper says it “polls with timeout”, but it does a single read and returns immediately. Since ref Secret ownerReferences are attached after the ClusterObjectSet exists, this step can fail spuriously right after rollout.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/e2e/steps/steps.go` around lines 840 - 875,
ClusterObjectSetRefSecretsHaveOwnerRef does a single read and can fail
spuriously; change it to poll until ownerReferences appear (or timeout) instead
of asserting once: wrap the current logic that lists secrets (listRefSecrets)
and checks each Secret's OwnerReferences in a retry loop (e.g., using
wait.PollImmediate or a context-aware retry) that re-lists secrets and re-checks
owner refs until success or deadline, honoring the provided ctx for
timeout/cancellation and still returning the same error messages when the final
attempt fails; keep getResource(cos) usage to obtain cosUID once and then poll
for the secrets' owner refs.

Comment on lines +1613 to +1649
// resolveObjectRef fetches an object from a Secret ref using kubectl.
func resolveObjectRef(ref ocv1.ObjectSourceRef) (*unstructured.Unstructured, error) {
out, err := k8sClient("get", "secret", ref.Name, "-n", ref.Namespace, "-o", "json")
if err != nil {
return nil, fmt.Errorf("getting Secret %s/%s: %w", ref.Namespace, ref.Name, err)
}
var secret corev1.Secret
if err := json.Unmarshal([]byte(out), &secret); err != nil {
return nil, fmt.Errorf("unmarshaling Secret %s/%s: %w", ref.Namespace, ref.Name, err)
}
data, ok := secret.Data[ref.Key]
if !ok {
return nil, fmt.Errorf("key %q not found in Secret %s/%s", ref.Key, ref.Namespace, ref.Name)
}
// Auto-detect gzip compression (magic bytes 0x1f 0x8b)
if len(data) >= 2 && data[0] == 0x1f && data[1] == 0x8b {
reader, err := gzip.NewReader(bytes.NewReader(data))
if err != nil {
return nil, fmt.Errorf("creating gzip reader for key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
}
defer reader.Close()
const maxDecompressedSize = 10 * 1024 * 1024 // 10 MiB
limited := io.LimitReader(reader, maxDecompressedSize+1)
decompressed, err := io.ReadAll(limited)
if err != nil {
return nil, fmt.Errorf("decompressing key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
}
if len(decompressed) > maxDecompressedSize {
return nil, fmt.Errorf("decompressed data for key %q in Secret %s/%s exceeds maximum size (%d bytes)", ref.Key, ref.Namespace, ref.Name, maxDecompressedSize)
}
data = decompressed
}
obj := &unstructured.Unstructured{}
if err := json.Unmarshal(data, &obj.Object); err != nil {
return nil, fmt.Errorf("unmarshaling object from key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
}
return obj, nil
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Honor the default namespace for ref.

ObjectSourceRef.namespace is optional, but this helper always resolves Secrets with -n <ref.Namespace>. A valid ref that omits namespace will resolve against "" here instead of the OLM system namespace and break the new ref-backed paths.

Suggested fix
 func resolveObjectRef(ref ocv1.ObjectSourceRef) (*unstructured.Unstructured, error) {
-	out, err := k8sClient("get", "secret", ref.Name, "-n", ref.Namespace, "-o", "json")
+	namespace := ref.Namespace
+	if namespace == "" {
+		namespace = olmNamespace
+	}
+	out, err := k8sClient("get", "secret", ref.Name, "-n", namespace, "-o", "json")
 	if err != nil {
-		return nil, fmt.Errorf("getting Secret %s/%s: %w", ref.Namespace, ref.Name, err)
+		return nil, fmt.Errorf("getting Secret %s/%s: %w", namespace, ref.Name, err)
 	}
 	var secret corev1.Secret
 	if err := json.Unmarshal([]byte(out), &secret); err != nil {
-		return nil, fmt.Errorf("unmarshaling Secret %s/%s: %w", ref.Namespace, ref.Name, err)
+		return nil, fmt.Errorf("unmarshaling Secret %s/%s: %w", namespace, ref.Name, err)
 	}
 	data, ok := secret.Data[ref.Key]
 	if !ok {
-		return nil, fmt.Errorf("key %q not found in Secret %s/%s", ref.Key, ref.Namespace, ref.Name)
+		return nil, fmt.Errorf("key %q not found in Secret %s/%s", ref.Key, namespace, ref.Name)
 	}
 	// Auto-detect gzip compression (magic bytes 0x1f 0x8b)
 	if len(data) >= 2 && data[0] == 0x1f && data[1] == 0x8b {
 		reader, err := gzip.NewReader(bytes.NewReader(data))
 		if err != nil {
-			return nil, fmt.Errorf("creating gzip reader for key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
+			return nil, fmt.Errorf("creating gzip reader for key %q in Secret %s/%s: %w", ref.Key, namespace, ref.Name, err)
 		}
 		defer reader.Close()
 		const maxDecompressedSize = 10 * 1024 * 1024 // 10 MiB
 		limited := io.LimitReader(reader, maxDecompressedSize+1)
 		decompressed, err := io.ReadAll(limited)
 		if err != nil {
-			return nil, fmt.Errorf("decompressing key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
+			return nil, fmt.Errorf("decompressing key %q in Secret %s/%s: %w", ref.Key, namespace, ref.Name, err)
 		}
 		if len(decompressed) > maxDecompressedSize {
-			return nil, fmt.Errorf("decompressed data for key %q in Secret %s/%s exceeds maximum size (%d bytes)", ref.Key, ref.Namespace, ref.Name, maxDecompressedSize)
+			return nil, fmt.Errorf("decompressed data for key %q in Secret %s/%s exceeds maximum size (%d bytes)", ref.Key, namespace, ref.Name, maxDecompressedSize)
 		}
 		data = decompressed
 	}
 	obj := &unstructured.Unstructured{}
 	if err := json.Unmarshal(data, &obj.Object); err != nil {
-		return nil, fmt.Errorf("unmarshaling object from key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
+		return nil, fmt.Errorf("unmarshaling object from key %q in Secret %s/%s: %w", ref.Key, namespace, ref.Name, err)
 	}
 	return obj, nil
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// resolveObjectRef fetches an object from a Secret ref using kubectl.
func resolveObjectRef(ref ocv1.ObjectSourceRef) (*unstructured.Unstructured, error) {
out, err := k8sClient("get", "secret", ref.Name, "-n", ref.Namespace, "-o", "json")
if err != nil {
return nil, fmt.Errorf("getting Secret %s/%s: %w", ref.Namespace, ref.Name, err)
}
var secret corev1.Secret
if err := json.Unmarshal([]byte(out), &secret); err != nil {
return nil, fmt.Errorf("unmarshaling Secret %s/%s: %w", ref.Namespace, ref.Name, err)
}
data, ok := secret.Data[ref.Key]
if !ok {
return nil, fmt.Errorf("key %q not found in Secret %s/%s", ref.Key, ref.Namespace, ref.Name)
}
// Auto-detect gzip compression (magic bytes 0x1f 0x8b)
if len(data) >= 2 && data[0] == 0x1f && data[1] == 0x8b {
reader, err := gzip.NewReader(bytes.NewReader(data))
if err != nil {
return nil, fmt.Errorf("creating gzip reader for key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
}
defer reader.Close()
const maxDecompressedSize = 10 * 1024 * 1024 // 10 MiB
limited := io.LimitReader(reader, maxDecompressedSize+1)
decompressed, err := io.ReadAll(limited)
if err != nil {
return nil, fmt.Errorf("decompressing key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
}
if len(decompressed) > maxDecompressedSize {
return nil, fmt.Errorf("decompressed data for key %q in Secret %s/%s exceeds maximum size (%d bytes)", ref.Key, ref.Namespace, ref.Name, maxDecompressedSize)
}
data = decompressed
}
obj := &unstructured.Unstructured{}
if err := json.Unmarshal(data, &obj.Object); err != nil {
return nil, fmt.Errorf("unmarshaling object from key %q in Secret %s/%s: %w", ref.Key, ref.Namespace, ref.Name, err)
}
return obj, nil
// resolveObjectRef fetches an object from a Secret ref using kubectl.
func resolveObjectRef(ref ocv1.ObjectSourceRef) (*unstructured.Unstructured, error) {
namespace := ref.Namespace
if namespace == "" {
namespace = olmNamespace
}
out, err := k8sClient("get", "secret", ref.Name, "-n", namespace, "-o", "json")
if err != nil {
return nil, fmt.Errorf("getting Secret %s/%s: %w", namespace, ref.Name, err)
}
var secret corev1.Secret
if err := json.Unmarshal([]byte(out), &secret); err != nil {
return nil, fmt.Errorf("unmarshaling Secret %s/%s: %w", namespace, ref.Name, err)
}
data, ok := secret.Data[ref.Key]
if !ok {
return nil, fmt.Errorf("key %q not found in Secret %s/%s", ref.Key, namespace, ref.Name)
}
// Auto-detect gzip compression (magic bytes 0x1f 0x8b)
if len(data) >= 2 && data[0] == 0x1f && data[1] == 0x8b {
reader, err := gzip.NewReader(bytes.NewReader(data))
if err != nil {
return nil, fmt.Errorf("creating gzip reader for key %q in Secret %s/%s: %w", ref.Key, namespace, ref.Name, err)
}
defer reader.Close()
const maxDecompressedSize = 10 * 1024 * 1024 // 10 MiB
limited := io.LimitReader(reader, maxDecompressedSize+1)
decompressed, err := io.ReadAll(limited)
if err != nil {
return nil, fmt.Errorf("decompressing key %q in Secret %s/%s: %w", ref.Key, namespace, ref.Name, err)
}
if len(decompressed) > maxDecompressedSize {
return nil, fmt.Errorf("decompressed data for key %q in Secret %s/%s exceeds maximum size (%d bytes)", ref.Key, namespace, ref.Name, maxDecompressedSize)
}
data = decompressed
}
obj := &unstructured.Unstructured{}
if err := json.Unmarshal(data, &obj.Object); err != nil {
return nil, fmt.Errorf("unmarshaling object from key %q in Secret %s/%s: %w", ref.Key, namespace, ref.Name, err)
}
return obj, nil
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/e2e/steps/steps.go` around lines 1613 - 1649, resolveObjectRef currently
always uses ref.Namespace verbatim when calling k8sClient and in error messages,
which breaks refs that omit namespace; update resolveObjectRef to compute a
resolvedNamespace = ref.Namespace; if empty set it to the OLM system/test
default namespace used elsewhere in the suite, then use resolvedNamespace in the
k8sClient(...) call and in all error messages and Secret lookups (keep
references to ObjectSourceRef.Namespace but replace uses with resolvedNamespace)
so ref-less refs correctly resolve to the OLM system namespace.

@tmshort
Copy link
Copy Markdown
Contributor Author

tmshort commented Mar 31, 2026

Updated with the extra commits from #687

@grokspawn
Copy link
Copy Markdown
Contributor

/lgtm
pending clear CI

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

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@openshift/tests-extension/test/olmv1-preflight.go`:
- Around line 188-190: The Role binding currently restricts finalizer updates to
a single resource name (ResourceNames: []string{ceName}) but Boxcutter
finalizers are revisioned (e.g., "<ceName>-1"), causing the permission to miss
the actual object; update the Role definition that sets Resources:
[]string{"clusterobjectsets/finalizers"} / ResourceNames to either remove the
ResourceNames restriction so it applies to all finalizers, or populate
ResourceNames with the revisioned name(s) dynamically (e.g., use the revisioned
ceName format), ensuring the code that constructs ResourceNames references the
ceName revisioning logic rather than the base ceName.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 788bca7f-9444-4ec7-84c1-f8019d8126fb

📥 Commits

Reviewing files that changed from the base of the PR and between cd2151a and 6b27a32.

📒 Files selected for processing (7)
  • openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json
  • openshift/tests-extension/pkg/bindata/qe/bindata.go
  • openshift/tests-extension/test/olmv1-incompatible.go
  • openshift/tests-extension/test/olmv1-preflight.go
  • openshift/tests-extension/test/qe/specs/olmv1_ce.go
  • openshift/tests-extension/test/qe/testdata/olm/sa-nginx-insufficient-operand-rbac-boxcutter.yaml
  • openshift/tests-extension/test/qe/testdata/olm/sa-nginx-limited-boxcutter.yaml
✅ Files skipped from review due to trivial changes (2)
  • openshift/tests-extension/test/qe/testdata/olm/sa-nginx-insufficient-operand-rbac-boxcutter.yaml
  • openshift/tests-extension/.openshift-tests-extension/openshift_payload_olmv1.json

Comment on lines +188 to 190
Resources: []string{"clusterobjectsets/finalizers"},
Verbs: []string{"update"},
ResourceNames: []string{ceName},
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Boxcutter finalizer ResourceNames likely targets the wrong object name format.

Line 190 still scopes to ceName, but boxcutter finalizer permissions are revisioned (<ceName>-1). This can make the base role invalid in all boxcutter scenarios, causing failures for the wrong reason.

💡 Proposed fix
 		{
 			APIGroups:     []string{"olm.operatorframework.io"},
 			Resources:     []string{"clusterobjectsets/finalizers"},
 			Verbs:         []string{"update"},
-			ResourceNames: []string{ceName},
+			ResourceNames: []string{fmt.Sprintf("%s-1", ceName)},
 		},
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Resources: []string{"clusterobjectsets/finalizers"},
Verbs: []string{"update"},
ResourceNames: []string{ceName},
Resources: []string{"clusterobjectsets/finalizers"},
Verbs: []string{"update"},
ResourceNames: []string{fmt.Sprintf("%s-1", ceName)},
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@openshift/tests-extension/test/olmv1-preflight.go` around lines 188 - 190,
The Role binding currently restricts finalizer updates to a single resource name
(ResourceNames: []string{ceName}) but Boxcutter finalizers are revisioned (e.g.,
"<ceName>-1"), causing the permission to miss the actual object; update the Role
definition that sets Resources: []string{"clusterobjectsets/finalizers"} /
ResourceNames to either remove the ResourceNames restriction so it applies to
all finalizers, or populate ResourceNames with the revisioned name(s)
dynamically (e.g., use the revisioned ceName format), ensuring the code that
constructs ResourceNames references the ceName revisioning logic rather than the
base ceName.

@bandrade
Copy link
Copy Markdown
Contributor

/label qe-approved
/verified by @bandrade

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Mar 31, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@bandrade: This PR has been marked as verified by @bandrade.

Details

In response to this:

/label qe-approved
/verified by @bandrade

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-merge-bot openshift-merge-bot bot merged commit 0d486fc into openshift:main Mar 31, 2026
15 of 16 checks passed
@openshift-ci-robot
Copy link
Copy Markdown

@tmshort: Jira Issue OCPBUGS-78211: Some pull requests linked via external trackers have merged:

The following pull request, linked via external tracker, has not merged:

All associated pull requests must be merged or unlinked from the Jira bug in order for it to move to the next state. Once unlinked, request a bug refresh with /jira refresh.

Jira Issue OCPBUGS-78211 has not been moved to the MODIFIED state.

This PR is marked as verified. If the remaining PRs listed above are marked as verified before merging, the issue will automatically be moved to VERIFIED after all of the changes from the PRs are available in an accepted nightly payload.

Jira Issue OCPBUGS-78455: Some pull requests linked via external trackers have merged:

The following pull request, linked via external tracker, has not merged:

All associated pull requests must be merged or unlinked from the Jira bug in order for it to move to the next state. Once unlinked, request a bug refresh with /jira refresh.

Jira Issue OCPBUGS-78455 has not been moved to the MODIFIED state.

This PR is marked as verified. If the remaining PRs listed above are marked as verified before merging, the issue will automatically be moved to VERIFIED after all of the changes from the PRs are available in an accepted nightly payload.

Details

In response to this:

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

Date Commit Author Message
2026-03-30 15:29:27 operator-framework/operator-controller@2ca0350 Camila Macedo chore(Boxcutter): Rename ClusterExtensionRevision to ClusterObjectSet (#2589)
2026-03-30 15:17:40 operator-framework/operator-controller@46d66e1 Predrag Knezevic Add e2e test for installing bundle with large (~1MB) CRD (#2602)
2026-03-30 12:13:38 operator-framework/operator-controller@7145047 Kui Wang add create verb to boxcutter preflight (#2587)
2026-03-30 08:20:47 operator-framework/operator-controller@da4f73c Predrag Knezevic 🌱 Externalize CER phase objects into Secrets (#2595)
2026-03-27 15:39:27 operator-framework/operator-controller@e709e65 dependabot[bot] 🌱 Bump marocchino/sticky-pull-request-comment from 2 to 3 (#2601)
2026-03-27 13:35:35 operator-framework/operator-controller@de9700b Camila Macedo fix(boxcutter): detect collision when duplicate package is installed after upgrade (#2578)
2026-03-27 09:15:52 operator-framework/operator-controller@09d32fb Joe Lanford 🌱 Return *DeploymentConfig directly from GetDeploymentConfig() (#2598)

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

Date Commit Author Message
2026-03-27 00:08:03 openshift/operator-framework-operator-controller@a5404c7 dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@62b4047 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@6de33d6 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@503fd49 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@a65d5a5 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-03-27 00:08:07 openshift/operator-framework-operator-controller@861ba1d Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f60f97 Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f9b984 Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-03-27 00:08:09 openshift/operator-framework-operator-controller@93aa04c Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-03-27 00:08:10 openshift/operator-framework-operator-controller@b13601e Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@eada294 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@0ac0688 Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-03-27 00:08:12 openshift/operator-framework-operator-controller@3145d12 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-03-27 00:08:13 openshift/operator-framework-operator-controller@de1e37c Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-03-27 00:08:14 openshift/operator-framework-operator-controller@a661808 Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-03-27 00:08:15 openshift/operator-framework-operator-controller@4364573 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-03-27 00:08:16 openshift/operator-framework-operator-controller@a71adc8 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-03-27 00:08:17 openshift/operator-framework-operator-controller@7ad3189 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-03-27 00:08:18 openshift/operator-framework-operator-controller@2f4933e Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@8144924 Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@fcd1442 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-03-27 00:08:20 openshift/operator-framework-operator-controller@3c65fc1 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@982fe4a Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@4f53515 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@8184828 Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@b6d355b Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-03-27 00:08:23 openshift/operator-framework-operator-controller@fb547f6 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@d864aba Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@4814e36 Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@c3d2f49 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@cd2693d Bruno Andrade UPSTREAM: <carry>: update metadata
2026-03-27 00:08:26 openshift/operator-framework-operator-controller@5afdc7b Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-03-27 00:08:27 openshift/operator-framework-operator-controller@e0e7953 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@af06574 Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@bd49dc3 Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@b814f68 Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@1ee7765 Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-03-27 00:08:30 openshift/operator-framework-operator-controller@5936faa Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@8449cb7 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@0c71e80 Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@195ee5e Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@d56376d Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@bff8d21 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@2de6131 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@854eb32 Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@1bb5964 Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@6514282 Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@3801c43 Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-03-27 00:08:37 openshift/operator-framework-operator-controller@11047e4 Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@71786f8 Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@8d0230f Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-03-27 00:08:39 openshift/operator-framework-operator-controller@01efda6 Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@02513f3 Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@dbb99c4 Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-03-27 00:08:41 openshift/operator-framework-operator-controller@a51c6dc Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@c7d65a5 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@95bc574 Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@7f81680 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@d0150d1 Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-03-27 00:08:44 openshift/operator-framework-operator-controller@3ac430f Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-03-27 00:08:46 openshift/operator-framework-operator-controller@ce02174 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@986b309 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@b11dd9d Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-03-27 00:08:48 openshift/operator-framework-operator-controller@a03bcd1 Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@06577cb Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install tests
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@60dd248 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@95d72c0 Jian Zhang UPSTREAM: <carry>: update OCP-75441 to support multi-arch
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@ca62ded Kui Wang UPSTREAM: <carry>: deployment config cases
2026-03-27 00:08:51 openshift/operator-framework-operator-controller@7ba9124 Todd Short UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@e030a4e Todd Short UPSTREAM: <carry>: Update openshift/api and client-go
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@b5a6b66 Camila Macedo UPSTREAM: <carry>: Add boxcutter tests
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@5f04197 Xia Zhao UPSTREAM: <carry>: enhance QE cases
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@adf1cc9 Daniel Franz UPSTREAM: <carry>: Update quay-operator version to one containing arm64 support
2026-03-27 00:08:54 openshift/operator-framework-operator-controller@ffa1765 Kui Wang UPSTREAM: <carry>: verify volume/volumeMount override
2026-03-16 18:10:23 openshift/operator-framework-operator-controller@f0c6148 Jian Zhang UPSTREAM: <carry>: Add long-duration test script and documents
2026-03-27 13:43:28 openshift/operator-framework-operator-controller@5b3ec28 Todd Short UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests

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.

/label tide/merge-method-merge

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.

@tmshort tmshort deleted the synchronize branch March 31, 2026 22:54
@kuiwang02
Copy link
Copy Markdown
Contributor

/jira refresh

@openshift-ci-robot
Copy link
Copy Markdown

@kuiwang02: Jira Issue OCPBUGS-78211 is in an unrecognized state (MODIFIED) and will not be moved to the MODIFIED state.

Jira Issue Verification Checks: Jira Issue OCPBUGS-78455
✔️ This pull request was pre-merge verified.
✔️ All associated pull requests have merged.
✔️ All associated, merged pull requests were pre-merge verified.

Jira Issue OCPBUGS-78455 has been moved to the MODIFIED state and will move to the VERIFIED state when the change is available in an accepted nightly payload. 🕓

Details

In response to this:

/jira refresh

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.

@kuiwang02
Copy link
Copy Markdown
Contributor

/jira refresh

@openshift-ci-robot
Copy link
Copy Markdown

@kuiwang02: Jira Issue Verification Checks: Jira Issue OCPBUGS-78211
✔️ This pull request was pre-merge verified.
✔️ All associated pull requests have merged.
✔️ All associated, merged pull requests were pre-merge verified.

Jira Issue OCPBUGS-78211 has been moved to the MODIFIED state and will move to the VERIFIED state when the change is available in an accepted nightly payload. 🕓

Jira Issue OCPBUGS-78455 is in an unrecognized state (MODIFIED) and will not be moved to the MODIFIED state.

Details

In response to this:

/jira refresh

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.

@kuiwang02
Copy link
Copy Markdown
Contributor

/retitle OCPBUGS-76381,OCPBUGS-76383,OCPBUGS-78211,OCPBUGS-78455: Synchronize From Upstream Repositories

@openshift-ci openshift-ci bot changed the title OCPBUGS-78211,OCPBUGS-78455: Synchronize From Upstream Repositories OCPBUGS-76381,OCPBUGS-76383,OCPBUGS-78211,OCPBUGS-78455: Synchronize From Upstream Repositories Apr 1, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@tmshort: Jira Issue Verification Checks: Jira Issue OCPBUGS-76381
✔️ This pull request was pre-merge verified.
✔️ All associated pull requests have merged.
✔️ All associated, merged pull requests were pre-merge verified.

Jira Issue OCPBUGS-76381 has been moved to the MODIFIED state and will move to the VERIFIED state when the change is available in an accepted nightly payload. 🕓

Jira Issue Verification Checks: Jira Issue OCPBUGS-76383
✔️ This pull request was pre-merge verified.
✔️ All associated pull requests have merged.
✔️ All associated, merged pull requests were pre-merge verified.

Jira Issue OCPBUGS-76383 has been moved to the MODIFIED state and will move to the VERIFIED state when the change is available in an accepted nightly payload. 🕓

Jira Issue OCPBUGS-78211 is in an unrecognized state (ON_QA) and will not be moved to the MODIFIED state.

Jira Issue OCPBUGS-78455 is in an unrecognized state (ON_QA) and will not be moved to the MODIFIED state.

Details

In response to this:

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

Date Commit Author Message
2026-03-30 15:29:27 operator-framework/operator-controller@2ca0350 Camila Macedo chore(Boxcutter): Rename ClusterExtensionRevision to ClusterObjectSet (#2589)
2026-03-30 15:17:40 operator-framework/operator-controller@46d66e1 Predrag Knezevic Add e2e test for installing bundle with large (~1MB) CRD (#2602)
2026-03-30 12:13:38 operator-framework/operator-controller@7145047 Kui Wang add create verb to boxcutter preflight (#2587)
2026-03-30 08:20:47 operator-framework/operator-controller@da4f73c Predrag Knezevic 🌱 Externalize CER phase objects into Secrets (#2595)
2026-03-27 15:39:27 operator-framework/operator-controller@e709e65 dependabot[bot] 🌱 Bump marocchino/sticky-pull-request-comment from 2 to 3 (#2601)
2026-03-27 13:35:35 operator-framework/operator-controller@de9700b Camila Macedo fix(boxcutter): detect collision when duplicate package is installed after upgrade (#2578)
2026-03-27 09:15:52 operator-framework/operator-controller@09d32fb Joe Lanford 🌱 Return *DeploymentConfig directly from GetDeploymentConfig() (#2598)

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

Date Commit Author Message
2026-03-27 00:08:03 openshift/operator-framework-operator-controller@a5404c7 dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@62b4047 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-03-27 00:08:05 openshift/operator-framework-operator-controller@6de33d6 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@503fd49 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-03-27 00:08:06 openshift/operator-framework-operator-controller@a65d5a5 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-03-27 00:08:07 openshift/operator-framework-operator-controller@861ba1d Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f60f97 Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-03-27 00:08:08 openshift/operator-framework-operator-controller@2f9b984 Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-03-27 00:08:09 openshift/operator-framework-operator-controller@93aa04c Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-03-27 00:08:10 openshift/operator-framework-operator-controller@b13601e Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@eada294 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-03-27 00:08:11 openshift/operator-framework-operator-controller@0ac0688 Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-03-27 00:08:12 openshift/operator-framework-operator-controller@3145d12 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-03-27 00:08:13 openshift/operator-framework-operator-controller@de1e37c Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-03-27 00:08:14 openshift/operator-framework-operator-controller@a661808 Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-03-27 00:08:15 openshift/operator-framework-operator-controller@4364573 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-03-27 00:08:16 openshift/operator-framework-operator-controller@a71adc8 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-03-27 00:08:17 openshift/operator-framework-operator-controller@7ad3189 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-03-27 00:08:18 openshift/operator-framework-operator-controller@2f4933e Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@8144924 Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-03-27 00:08:19 openshift/operator-framework-operator-controller@fcd1442 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-03-27 00:08:20 openshift/operator-framework-operator-controller@3c65fc1 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@982fe4a Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-03-27 00:08:21 openshift/operator-framework-operator-controller@4f53515 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@8184828 Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-03-27 00:08:22 openshift/operator-framework-operator-controller@b6d355b Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-03-27 00:08:23 openshift/operator-framework-operator-controller@fb547f6 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@d864aba Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-03-27 00:08:24 openshift/operator-framework-operator-controller@4814e36 Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@c3d2f49 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-03-27 00:08:25 openshift/operator-framework-operator-controller@cd2693d Bruno Andrade UPSTREAM: <carry>: update metadata
2026-03-27 00:08:26 openshift/operator-framework-operator-controller@5afdc7b Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-03-27 00:08:27 openshift/operator-framework-operator-controller@e0e7953 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@af06574 Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-03-27 00:08:28 openshift/operator-framework-operator-controller@bd49dc3 Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@b814f68 Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-03-27 00:08:29 openshift/operator-framework-operator-controller@1ee7765 Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-03-27 00:08:30 openshift/operator-framework-operator-controller@5936faa Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@8449cb7 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:31 openshift/operator-framework-operator-controller@0c71e80 Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@195ee5e Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-03-27 00:08:32 openshift/operator-framework-operator-controller@d56376d Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@bff8d21 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-03-27 00:08:34 openshift/operator-framework-operator-controller@2de6131 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@854eb32 Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-03-27 00:08:35 openshift/operator-framework-operator-controller@1bb5964 Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@6514282 Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-03-27 00:08:36 openshift/operator-framework-operator-controller@3801c43 Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-03-27 00:08:37 openshift/operator-framework-operator-controller@11047e4 Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@71786f8 Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-03-27 00:08:38 openshift/operator-framework-operator-controller@8d0230f Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-03-27 00:08:39 openshift/operator-framework-operator-controller@01efda6 Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@02513f3 Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-03-27 00:08:40 openshift/operator-framework-operator-controller@dbb99c4 Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-03-27 00:08:41 openshift/operator-framework-operator-controller@a51c6dc Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@c7d65a5 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-03-27 00:08:42 openshift/operator-framework-operator-controller@95bc574 Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@7f81680 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-03-27 00:08:43 openshift/operator-framework-operator-controller@d0150d1 Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-03-27 00:08:44 openshift/operator-framework-operator-controller@3ac430f Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-03-27 00:08:46 openshift/operator-framework-operator-controller@ce02174 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@986b309 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-03-27 00:08:47 openshift/operator-framework-operator-controller@b11dd9d Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-03-27 00:08:48 openshift/operator-framework-operator-controller@a03bcd1 Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@06577cb Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install tests
2026-03-27 00:08:49 openshift/operator-framework-operator-controller@60dd248 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@95d72c0 Jian Zhang UPSTREAM: <carry>: update OCP-75441 to support multi-arch
2026-03-27 00:08:50 openshift/operator-framework-operator-controller@ca62ded Kui Wang UPSTREAM: <carry>: deployment config cases
2026-03-27 00:08:51 openshift/operator-framework-operator-controller@7ba9124 Todd Short UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@e030a4e Todd Short UPSTREAM: <carry>: Update openshift/api and client-go
2026-03-27 00:08:52 openshift/operator-framework-operator-controller@b5a6b66 Camila Macedo UPSTREAM: <carry>: Add boxcutter tests
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@5f04197 Xia Zhao UPSTREAM: <carry>: enhance QE cases
2026-03-27 00:08:53 openshift/operator-framework-operator-controller@adf1cc9 Daniel Franz UPSTREAM: <carry>: Update quay-operator version to one containing arm64 support
2026-03-27 00:08:54 openshift/operator-framework-operator-controller@ffa1765 Kui Wang UPSTREAM: <carry>: verify volume/volumeMount override
2026-03-16 18:10:23 openshift/operator-framework-operator-controller@f0c6148 Jian Zhang UPSTREAM: <carry>: Add long-duration test script and documents
2026-03-27 13:43:28 openshift/operator-framework-operator-controller@5b3ec28 Todd Short UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests

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.

/label tide/merge-method-merge

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.

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/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. qe-approved Signifies that QE has signed off on this PR tide/merge-method-merge Denotes a PR that should use a standard merge by tide when it merges. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.