Skip to content

OPRUN-4509: Synchronize From Upstream Repositories#669

Merged
openshift-merge-bot[bot] merged 73 commits intoopenshift:mainfrom
openshift-bot:synchronize-upstream
Mar 20, 2026
Merged

OPRUN-4509: Synchronize From Upstream Repositories#669
openshift-merge-bot[bot] merged 73 commits intoopenshift:mainfrom
openshift-bot:synchronize-upstream

Conversation

@openshift-bot
Copy link

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

Date Commit Author Message
2026-03-19 21:14:55 operator-framework/operator-controller@dd1c319 Camila Macedo chore(ci): Add test to check if user changes are preserved (#2512)
2026-03-19 12:30:36 operator-framework/operator-controller@8ccea5a Jordan Keister initial (#2562)
2026-03-19 07:51:36 operator-framework/operator-controller@eea6f95 dependabot[bot] 🌱 Bump google.golang.org/grpc from 1.79.1 to 1.79.3 (#2577)
2026-03-19 07:48:55 operator-framework/operator-controller@15303e1 Daniel Franz ProgressionProbes (#2550)

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

Date Commit Author Message
2026-03-19 00:11:18 openshift/operator-framework-operator-controller@0830b6f dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-03-19 00:11:21 openshift/operator-framework-operator-controller@e699091 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-03-19 00:11:23 openshift/operator-framework-operator-controller@8a2e0d1 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-03-19 00:11:24 openshift/operator-framework-operator-controller@e952333 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-03-19 00:11:26 openshift/operator-framework-operator-controller@05c7f66 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-03-19 00:11:27 openshift/operator-framework-operator-controller@bce9abf Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-03-19 00:11:28 openshift/operator-framework-operator-controller@475150e Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-03-19 00:11:30 openshift/operator-framework-operator-controller@47d405a Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-03-19 00:11:32 openshift/operator-framework-operator-controller@2cbcbdd Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-03-19 00:11:33 openshift/operator-framework-operator-controller@43d5d7f Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-03-19 00:11:35 openshift/operator-framework-operator-controller@ae2c9c8 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-03-19 00:11:36 openshift/operator-framework-operator-controller@f15964d Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-03-19 00:11:38 openshift/operator-framework-operator-controller@cbfed20 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-03-19 00:11:39 openshift/operator-framework-operator-controller@2fa96ff Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-03-19 00:11:41 openshift/operator-framework-operator-controller@857135d Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-03-19 00:11:44 openshift/operator-framework-operator-controller@15e1214 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-03-19 00:11:46 openshift/operator-framework-operator-controller@648deaa Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-03-19 00:11:48 openshift/operator-framework-operator-controller@0a53e10 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-03-19 00:11:49 openshift/operator-framework-operator-controller@92b3c5f Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-03-19 00:11:51 openshift/operator-framework-operator-controller@f3ee9ac Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-03-19 00:11:52 openshift/operator-framework-operator-controller@dcd4b02 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-03-19 00:11:54 openshift/operator-framework-operator-controller@8f64269 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-03-19 00:11:55 openshift/operator-framework-operator-controller@b7cc6fc Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-03-19 00:11:57 openshift/operator-framework-operator-controller@be29032 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-03-19 00:11:58 openshift/operator-framework-operator-controller@c568e9f Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-03-19 00:12:00 openshift/operator-framework-operator-controller@1db5761 Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-03-19 00:12:01 openshift/operator-framework-operator-controller@262bf71 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-03-19 00:12:03 openshift/operator-framework-operator-controller@f775dbb Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-03-19 00:12:04 openshift/operator-framework-operator-controller@742c3cd Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-03-19 00:12:06 openshift/operator-framework-operator-controller@62ef393 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-03-19 00:12:07 openshift/operator-framework-operator-controller@e79bcee Bruno Andrade UPSTREAM: <carry>: update metadata
2026-03-19 00:12:09 openshift/operator-framework-operator-controller@c270751 Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-03-19 00:12:10 openshift/operator-framework-operator-controller@cadfc07 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-03-19 00:12:12 openshift/operator-framework-operator-controller@4a676bf Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-03-19 00:12:13 openshift/operator-framework-operator-controller@1ccf9a2 Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-03-19 00:12:15 openshift/operator-framework-operator-controller@a52c09f Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-03-19 00:12:16 openshift/operator-framework-operator-controller@57b3dba Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-03-19 00:12:18 openshift/operator-framework-operator-controller@1a8c0bc Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-03-19 00:12:19 openshift/operator-framework-operator-controller@477a743 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-19 00:12:20 openshift/operator-framework-operator-controller@272709b Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-03-19 00:12:22 openshift/operator-framework-operator-controller@ca72d8a Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-03-19 00:12:23 openshift/operator-framework-operator-controller@e46eac4 Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-03-19 00:12:25 openshift/operator-framework-operator-controller@01981f0 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-03-19 00:12:26 openshift/operator-framework-operator-controller@25e1be9 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-03-19 00:12:28 openshift/operator-framework-operator-controller@22bd6b9 Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-03-19 00:12:29 openshift/operator-framework-operator-controller@e580d0a Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-03-19 00:12:31 openshift/operator-framework-operator-controller@333234b Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-03-19 00:12:32 openshift/operator-framework-operator-controller@9c7a83a Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-03-19 00:12:34 openshift/operator-framework-operator-controller@1bb126b Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-03-19 00:12:35 openshift/operator-framework-operator-controller@a3205ef Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-03-19 00:12:37 openshift/operator-framework-operator-controller@803bd4e Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-03-19 00:12:39 openshift/operator-framework-operator-controller@95743cf Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-03-19 00:12:41 openshift/operator-framework-operator-controller@75aa3f1 Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-03-19 00:12:42 openshift/operator-framework-operator-controller@e31bede Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-03-19 00:12:44 openshift/operator-framework-operator-controller@c487407 Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-03-19 00:12:45 openshift/operator-framework-operator-controller@3be85e5 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-03-19 00:12:47 openshift/operator-framework-operator-controller@c932f2e Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-03-19 00:12:48 openshift/operator-framework-operator-controller@7f78df4 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-03-19 00:12:50 openshift/operator-framework-operator-controller@ab8bfaf Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-03-19 00:12:51 openshift/operator-framework-operator-controller@d1f27c0 Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-03-19 00:12:54 openshift/operator-framework-operator-controller@83b78d7 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-03-19 00:12:56 openshift/operator-framework-operator-controller@e508e69 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-03-19 00:12:57 openshift/operator-framework-operator-controller@3439590 Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-03-19 00:12:59 openshift/operator-framework-operator-controller@365342e Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-03-19 00:13:00 openshift/operator-framework-operator-controller@1d8b221 Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install 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.

/cc @openshift/openshift-team-operator-framework

dtfranz and others added 30 commits March 19, 2026 07:48
Provides an API which allows custom probe definitions to determine readiness of the CER phases. Objects can be selected for in one of two ways: by GroupKind, or by Label (matchLabels and matchExpressions). They can then be tested via any of: ConditionEqual, FieldsEqual, and FieldValue. ConditionEqual checks that the object has a condition matching the type and status provided. FieldsEqual uses two provided field paths and checks for equality. FieldValue uses a provided field path and checks that the value is equal to the provided expected value.

Signed-off-by: Daniel Franz <dfranz@redhat.com>
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.79.1 to 1.79.3.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](grpc/grpc-go@v1.79.1...v1.79.3)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.79.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: grokspawn <jordan@nimblewidget.com>
Add a test to ensure that OLM is not reverting user changes like kubectl rollout restart.

Assisted-by: Cursor/Claude
Signed-off-by: dtfranz <dfranz@redhat.com>

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

The `default` directory was renamed `base`.

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

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

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

UPSTREAM: <carry>: Drop commitchecker

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

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

UPSTREAM: <carry>: update owners

* Remove alumni from owners
* Add m1kola to approvers

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

UPSTREAM: <carry>: Add pointer to tooling README

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

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

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

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

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

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

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

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

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

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

UPSTREAM: <carry>: add openshift kustomize overlay

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

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

UPSTREAM: <carry>: Add tmshort to approvers

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

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

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

UPSTREAM: <carry>: Properly copy and call kustomize

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

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

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

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

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

UPSTREAM: <carry>: Add downstream verify makefile target

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

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

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

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

Pass global-pull-secret to the manager container.

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

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

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

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

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

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

UPSTREAM: <carry>: Add HowTo for origin tests

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

UPSTREAM: <carry>: Add e2e registry Dockerfile

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

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

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

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

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

UPSTREAM: <carry>: Enable downstream e2e

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

UPSTREAM: <carry>: Remove m1kola from owners

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

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

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

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

UPSTREAM: <carry>: Add support for proxy trustedCAs

Just map the list of trusted ca certs into the deployment

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

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

Copy correct (new) executable name for operator-controller

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

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

Joe Lanford <joe.lanford@gmail.com>

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

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

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

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

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

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

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

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

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

UPSTREAM: <carry>: fixup catalogd.Dockerfile paths

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

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

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

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

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

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

This reverts commit 548caa4.

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

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

UPSTREAM: <carry>: Remove vet from openshift verify

The `vet` target was removed upstream.

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

UPSTREAM: <carry>: Skip another upstream test

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

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

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

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

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

The root catalogd directory has been removed

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

UPSTREAM: <carry>: Update DOWNSTREAM_OWNERS_ALIASES

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

UPSTREAM: <carry>: Add openshift node selector annotation

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

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

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

UPSTREAM: <carry>: set the SElinux type

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

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

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

UPSTREAM: <carry>: Bump catalog versions to 4.19

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

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

This reverts commit a98980b.

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

techpreview is no longer a required option.

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

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

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

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

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

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

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

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

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

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

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

UPSTREAM: <carry>: Bump catalog versions to 4.19

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UPSTREAM: <carry>: Add support for experimental manifests

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

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

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

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

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

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

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

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

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

Upstream now uses a different image

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

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

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

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

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

UPSTREAM: <carry>: Fix experimental manifest copying

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

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

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

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

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

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

UPSTREAM: <carry>: [OTE] Add Readme

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

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

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

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

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

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

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

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

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

Assisted-by: Gemini

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

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

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

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

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

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

Assisted-by: Gemini

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

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

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

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

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

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

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

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

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

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

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

This reverts commit 9963614.

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

UPSTREAM: <carry>: Remove bindata generation from build

Using go-bindata is causing problems with ART builds.

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

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

This is a quickfix to put out the fire.

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

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

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

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

Assisted-by: Gemini

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

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

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

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

Assisted-by: Gemini

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

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

Assisted-by: Gemini

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

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

UPSTREAM: <carry>: remove obsolete owners

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

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

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

Assisted-by: Gemini

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

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

Assisted-by: Gemini

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

This reverts commit 0bb1953.

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

This reverts commit e9e3220.

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

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

This reverts commit 9cc13d8.

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

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

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

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

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

UPSTREAM: <carry>: add jiazha to approvers

UPSTREAM: <carry>: Create combined manifests for comparison

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

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

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

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

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

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

This fixes the copy location.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UPSTREAM: <carry>: Clean up cp-manifests

There is no longer a need to copy conditionally

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

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

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

UPSTREAM: <carry>: support webhook case in disconnected

UPSTREAM: <carry>: Consolidate build API

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

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

Signed-off-by: Todd Short <todd.short@me.com>
…images from openshift/catalogd/manifests.yaml
Signed-off-by: Todd Short <todd.short@me.com>
Signed-off-by: Todd Short <todd.short@me.com>
…uess and waiting for k8s cleanups

Co-Author: kuiwang@redhat.com
… format

Fix k8s.io/kubernetes replace version from v1.30.1-0... to v0.0.0-... format to resolve
bumper tool verification failures. Add hack/ocp-replace.sh script to manage OCP fork
replaces properly.

Assisted-by: Cursor
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
The current pod simply does a `sleep 1000`, which means that the startup,
liveness and readiness probes all fail. Use a busybox containter to run a
simple script and httpd server to emulate the probes.
Signed-off-by: Todd Short <todd.short@me.com>
camilamacedo86 and others added 8 commits March 20, 2026 00:06
The test operator's httpd script uses python3's http.server which
binds to 0.0.0.0 (IPv4 only) by default. On IPv6-only networks
(e.g. metal-ipi-ovn-ipv6-techpreview), the startup/liveness/readiness
probes connect to the pod's IPv6 address but nothing is listening,
causing the operator pod to never become Ready and the OLMv1
ClusterExtension install test to time out.

Adding --bind :: makes python3 http.server listen on all interfaces
including IPv6, fixing the test on dual-stack and IPv6-only clusters.

This resolves the 0% pass rate on:
- periodic-ci-openshift-release-main-nightly-4.22-e2e-metal-ipi-ovn-ipv6-techpreview

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…g for CE install tests

With BoxcutterRuntime, Installed=True is only set after all availability
probes pass, which can take longer on TechPreview clusters (IPv6, multi-arch).
Increases install-specific timeout from 5m to 10m and logs condition state
on each poll to aid debugging flaky failures.
@openshift-bot openshift-bot added tide/merge-method-merge Denotes a PR that should use a standard merge by tide when it merges. kind/sync approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Mar 20, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Mar 20, 2026
@openshift-ci-robot
Copy link

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

Details

In response to this:

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

Date Commit Author Message
2026-03-19 21:14:55 operator-framework/operator-controller@dd1c319 Camila Macedo chore(ci): Add test to check if user changes are preserved (#2512)
2026-03-19 12:30:36 operator-framework/operator-controller@8ccea5a Jordan Keister initial (#2562)
2026-03-19 07:51:36 operator-framework/operator-controller@eea6f95 dependabot[bot] 🌱 Bump google.golang.org/grpc from 1.79.1 to 1.79.3 (#2577)
2026-03-19 07:48:55 operator-framework/operator-controller@15303e1 Daniel Franz ProgressionProbes (#2550)

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

Date Commit Author Message
2026-03-19 00:11:18 openshift/operator-framework-operator-controller@0830b6f dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-03-19 00:11:21 openshift/operator-framework-operator-controller@e699091 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-03-19 00:11:23 openshift/operator-framework-operator-controller@8a2e0d1 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-03-19 00:11:24 openshift/operator-framework-operator-controller@e952333 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-03-19 00:11:26 openshift/operator-framework-operator-controller@05c7f66 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-03-19 00:11:27 openshift/operator-framework-operator-controller@bce9abf Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-03-19 00:11:28 openshift/operator-framework-operator-controller@475150e Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-03-19 00:11:30 openshift/operator-framework-operator-controller@47d405a Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-03-19 00:11:32 openshift/operator-framework-operator-controller@2cbcbdd Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-03-19 00:11:33 openshift/operator-framework-operator-controller@43d5d7f Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-03-19 00:11:35 openshift/operator-framework-operator-controller@ae2c9c8 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-03-19 00:11:36 openshift/operator-framework-operator-controller@f15964d Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-03-19 00:11:38 openshift/operator-framework-operator-controller@cbfed20 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-03-19 00:11:39 openshift/operator-framework-operator-controller@2fa96ff Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-03-19 00:11:41 openshift/operator-framework-operator-controller@857135d Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-03-19 00:11:44 openshift/operator-framework-operator-controller@15e1214 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-03-19 00:11:46 openshift/operator-framework-operator-controller@648deaa Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-03-19 00:11:48 openshift/operator-framework-operator-controller@0a53e10 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-03-19 00:11:49 openshift/operator-framework-operator-controller@92b3c5f Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-03-19 00:11:51 openshift/operator-framework-operator-controller@f3ee9ac Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-03-19 00:11:52 openshift/operator-framework-operator-controller@dcd4b02 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-03-19 00:11:54 openshift/operator-framework-operator-controller@8f64269 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-03-19 00:11:55 openshift/operator-framework-operator-controller@b7cc6fc Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-03-19 00:11:57 openshift/operator-framework-operator-controller@be29032 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-03-19 00:11:58 openshift/operator-framework-operator-controller@c568e9f Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-03-19 00:12:00 openshift/operator-framework-operator-controller@1db5761 Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-03-19 00:12:01 openshift/operator-framework-operator-controller@262bf71 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-03-19 00:12:03 openshift/operator-framework-operator-controller@f775dbb Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-03-19 00:12:04 openshift/operator-framework-operator-controller@742c3cd Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-03-19 00:12:06 openshift/operator-framework-operator-controller@62ef393 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-03-19 00:12:07 openshift/operator-framework-operator-controller@e79bcee Bruno Andrade UPSTREAM: <carry>: update metadata
2026-03-19 00:12:09 openshift/operator-framework-operator-controller@c270751 Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-03-19 00:12:10 openshift/operator-framework-operator-controller@cadfc07 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-03-19 00:12:12 openshift/operator-framework-operator-controller@4a676bf Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-03-19 00:12:13 openshift/operator-framework-operator-controller@1ccf9a2 Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-03-19 00:12:15 openshift/operator-framework-operator-controller@a52c09f Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-03-19 00:12:16 openshift/operator-framework-operator-controller@57b3dba Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-03-19 00:12:18 openshift/operator-framework-operator-controller@1a8c0bc Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-03-19 00:12:19 openshift/operator-framework-operator-controller@477a743 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-19 00:12:20 openshift/operator-framework-operator-controller@272709b Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-03-19 00:12:22 openshift/operator-framework-operator-controller@ca72d8a Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-03-19 00:12:23 openshift/operator-framework-operator-controller@e46eac4 Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-03-19 00:12:25 openshift/operator-framework-operator-controller@01981f0 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-03-19 00:12:26 openshift/operator-framework-operator-controller@25e1be9 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-03-19 00:12:28 openshift/operator-framework-operator-controller@22bd6b9 Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-03-19 00:12:29 openshift/operator-framework-operator-controller@e580d0a Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-03-19 00:12:31 openshift/operator-framework-operator-controller@333234b Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-03-19 00:12:32 openshift/operator-framework-operator-controller@9c7a83a Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-03-19 00:12:34 openshift/operator-framework-operator-controller@1bb126b Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-03-19 00:12:35 openshift/operator-framework-operator-controller@a3205ef Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-03-19 00:12:37 openshift/operator-framework-operator-controller@803bd4e Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-03-19 00:12:39 openshift/operator-framework-operator-controller@95743cf Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-03-19 00:12:41 openshift/operator-framework-operator-controller@75aa3f1 Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-03-19 00:12:42 openshift/operator-framework-operator-controller@e31bede Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-03-19 00:12:44 openshift/operator-framework-operator-controller@c487407 Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-03-19 00:12:45 openshift/operator-framework-operator-controller@3be85e5 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-03-19 00:12:47 openshift/operator-framework-operator-controller@c932f2e Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-03-19 00:12:48 openshift/operator-framework-operator-controller@7f78df4 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-03-19 00:12:50 openshift/operator-framework-operator-controller@ab8bfaf Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-03-19 00:12:51 openshift/operator-framework-operator-controller@d1f27c0 Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-03-19 00:12:54 openshift/operator-framework-operator-controller@83b78d7 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-03-19 00:12:56 openshift/operator-framework-operator-controller@e508e69 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-03-19 00:12:57 openshift/operator-framework-operator-controller@3439590 Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-03-19 00:12:59 openshift/operator-framework-operator-controller@365342e Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-03-19 00:13:00 openshift/operator-framework-operator-controller@1d8b221 Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install 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.

/cc @openshift/openshift-team-operator-framework

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

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

coderabbitai bot commented Mar 20, 2026

Walkthrough

This pull request introduces a new progressionProbes feature to ClusterExtensionRevision, enabling custom readiness checks via selector-matched assertions. It adds new API types, generated support code, controller logic to build and apply probes dynamically, CRD schema validation, CLI kubeconfig support, and comprehensive E2E tests.

Changes

Cohort / File(s) Summary
Core API Definitions
api/v1/clusterextensionrevision_types.go
Added new progressionProbes field to ClusterExtensionRevisionSpec with supporting types: ProgressionProbe, ObjectSelector (discriminated union), Assertion (discriminated union over three probe variants), ConditionEqualProbe, FieldsEqualProbe, FieldValueProbe, enums SelectorType and ProbeType. Includes kubebuilder validation constraints and XValidation rules.
Generated DeepCopy Support
api/v1/zz_generated.deepcopy.go
Auto-generated deepcopy implementations for new types (Assertion, ConditionEqualProbe, FieldValueProbe, FieldsEqualProbe, ObjectSelector, ProgressionProbe) and updated ClusterExtensionRevisionSpec.DeepCopyInto to handle new ProgressionProbes slice.
Apply Configuration Helpers
applyconfigurations/api/v1/assertion.go, conditionequalprobe.go, fieldsequalprobe.go, fieldvalueprobe.go, objectselector.go, progressionprobe.go, clusterextensionrevisionspec.go, ../utils.go
Generated declarative configuration builders for Kubernetes apply operations, each with fluent setter methods; updated utils to recognize new GVKs in ForKind function.
Controller Implementation
internal/operator-controller/applier/phase.go, phase_test.go, controllers/clusterextensionrevision_controller.go
Implemented FieldValueProbe type for field-path-based readiness checks; refactored clusterextensionrevision_controller.go to dynamically build progression probes from user-provided assertions, replacing CEL-based static probes with field-value-based probes; added comprehensive unit and integration tests.
CRD Schema Manifests
helm/olmv1/base/.../olm.operatorframework.io_clusterextensionrevisions.yaml, manifests/experimental.yaml, manifests/experimental-e2e.yaml
Added spec.progressionProbes field with discriminator-enforced validation rules for selectors (GroupKind vs Label) and assertions (ConditionEqual vs FieldsEqual vs FieldValue), including conditional required/forbidden constraints via x-kubernetes-validations.
CLI Tool Updates
cmd/catalogd/main.go, cmd/operator-controller/main.go
Added --kubeconfig CLI flag with conditional REST config loading via clientcmd.BuildConfigFromFlags, falling back to in-cluster config when flag is empty; added imports for k8s.io/client-go/rest and k8s.io/client-go/tools/clientcmd.
E2E Tests and Steps
test/e2e/features/revision.feature, user-managed-fields.feature, steps/steps.go, steps/testdata/pvc-probe-sa-boxcutter-rbac-template.yaml
Added BDD scenarios validating progression probe assertion failures and successes; implemented step definitions for annotations/labels manipulation, rollout control, pod-template inspection, reconciliation triggering, and replica set validation; expanded test RBAC to include pods and serviceaccounts.
Documentation and Dependencies
docs/api-reference/olmv1-api-reference.md, go.mod, openshift/tests-extension/go.mod, commitchecker.yaml, hack/api-lint-diff/run.sh
Added API reference documentation for new types and enums; updated google.golang.org/grpc from v1.79.1 to v1.79.3; updated merge base commit and disabled nonpointerstructs linter in lint-diff configuration.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

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

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 20, 2026

@openshift-bot: GitHub didn't allow me to request PR reviews from the following users: openshift/openshift-team-operator-framework.

Note that only openshift members and repo collaborators can review this PR, and authors cannot review their own PRs.

Details

In response to this:

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

Date Commit Author Message
2026-03-19 21:14:55 operator-framework/operator-controller@dd1c319 Camila Macedo chore(ci): Add test to check if user changes are preserved (#2512)
2026-03-19 12:30:36 operator-framework/operator-controller@8ccea5a Jordan Keister initial (#2562)
2026-03-19 07:51:36 operator-framework/operator-controller@eea6f95 dependabot[bot] 🌱 Bump google.golang.org/grpc from 1.79.1 to 1.79.3 (#2577)
2026-03-19 07:48:55 operator-framework/operator-controller@15303e1 Daniel Franz ProgressionProbes (#2550)

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

Date Commit Author Message
2026-03-19 00:11:18 openshift/operator-framework-operator-controller@0830b6f dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-03-19 00:11:21 openshift/operator-framework-operator-controller@e699091 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-03-19 00:11:23 openshift/operator-framework-operator-controller@8a2e0d1 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-03-19 00:11:24 openshift/operator-framework-operator-controller@e952333 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-03-19 00:11:26 openshift/operator-framework-operator-controller@05c7f66 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-03-19 00:11:27 openshift/operator-framework-operator-controller@bce9abf Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-03-19 00:11:28 openshift/operator-framework-operator-controller@475150e Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-03-19 00:11:30 openshift/operator-framework-operator-controller@47d405a Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-03-19 00:11:32 openshift/operator-framework-operator-controller@2cbcbdd Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-03-19 00:11:33 openshift/operator-framework-operator-controller@43d5d7f Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-03-19 00:11:35 openshift/operator-framework-operator-controller@ae2c9c8 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-03-19 00:11:36 openshift/operator-framework-operator-controller@f15964d Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-03-19 00:11:38 openshift/operator-framework-operator-controller@cbfed20 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-03-19 00:11:39 openshift/operator-framework-operator-controller@2fa96ff Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-03-19 00:11:41 openshift/operator-framework-operator-controller@857135d Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-03-19 00:11:44 openshift/operator-framework-operator-controller@15e1214 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-03-19 00:11:46 openshift/operator-framework-operator-controller@648deaa Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-03-19 00:11:48 openshift/operator-framework-operator-controller@0a53e10 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-03-19 00:11:49 openshift/operator-framework-operator-controller@92b3c5f Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-03-19 00:11:51 openshift/operator-framework-operator-controller@f3ee9ac Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-03-19 00:11:52 openshift/operator-framework-operator-controller@dcd4b02 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-03-19 00:11:54 openshift/operator-framework-operator-controller@8f64269 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-03-19 00:11:55 openshift/operator-framework-operator-controller@b7cc6fc Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-03-19 00:11:57 openshift/operator-framework-operator-controller@be29032 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-03-19 00:11:58 openshift/operator-framework-operator-controller@c568e9f Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-03-19 00:12:00 openshift/operator-framework-operator-controller@1db5761 Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-03-19 00:12:01 openshift/operator-framework-operator-controller@262bf71 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-03-19 00:12:03 openshift/operator-framework-operator-controller@f775dbb Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-03-19 00:12:04 openshift/operator-framework-operator-controller@742c3cd Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-03-19 00:12:06 openshift/operator-framework-operator-controller@62ef393 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-03-19 00:12:07 openshift/operator-framework-operator-controller@e79bcee Bruno Andrade UPSTREAM: <carry>: update metadata
2026-03-19 00:12:09 openshift/operator-framework-operator-controller@c270751 Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-03-19 00:12:10 openshift/operator-framework-operator-controller@cadfc07 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-03-19 00:12:12 openshift/operator-framework-operator-controller@4a676bf Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-03-19 00:12:13 openshift/operator-framework-operator-controller@1ccf9a2 Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-03-19 00:12:15 openshift/operator-framework-operator-controller@a52c09f Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-03-19 00:12:16 openshift/operator-framework-operator-controller@57b3dba Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-03-19 00:12:18 openshift/operator-framework-operator-controller@1a8c0bc Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-03-19 00:12:19 openshift/operator-framework-operator-controller@477a743 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-19 00:12:20 openshift/operator-framework-operator-controller@272709b Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-03-19 00:12:22 openshift/operator-framework-operator-controller@ca72d8a Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-03-19 00:12:23 openshift/operator-framework-operator-controller@e46eac4 Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-03-19 00:12:25 openshift/operator-framework-operator-controller@01981f0 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-03-19 00:12:26 openshift/operator-framework-operator-controller@25e1be9 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-03-19 00:12:28 openshift/operator-framework-operator-controller@22bd6b9 Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-03-19 00:12:29 openshift/operator-framework-operator-controller@e580d0a Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-03-19 00:12:31 openshift/operator-framework-operator-controller@333234b Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-03-19 00:12:32 openshift/operator-framework-operator-controller@9c7a83a Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-03-19 00:12:34 openshift/operator-framework-operator-controller@1bb126b Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-03-19 00:12:35 openshift/operator-framework-operator-controller@a3205ef Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-03-19 00:12:37 openshift/operator-framework-operator-controller@803bd4e Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-03-19 00:12:39 openshift/operator-framework-operator-controller@95743cf Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-03-19 00:12:41 openshift/operator-framework-operator-controller@75aa3f1 Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-03-19 00:12:42 openshift/operator-framework-operator-controller@e31bede Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-03-19 00:12:44 openshift/operator-framework-operator-controller@c487407 Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-03-19 00:12:45 openshift/operator-framework-operator-controller@3be85e5 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-03-19 00:12:47 openshift/operator-framework-operator-controller@c932f2e Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-03-19 00:12:48 openshift/operator-framework-operator-controller@7f78df4 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-03-19 00:12:50 openshift/operator-framework-operator-controller@ab8bfaf Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-03-19 00:12:51 openshift/operator-framework-operator-controller@d1f27c0 Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-03-19 00:12:54 openshift/operator-framework-operator-controller@83b78d7 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-03-19 00:12:56 openshift/operator-framework-operator-controller@e508e69 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-03-19 00:12:57 openshift/operator-framework-operator-controller@3439590 Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-03-19 00:12:59 openshift/operator-framework-operator-controller@365342e Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-03-19 00:13:00 openshift/operator-framework-operator-controller@1d8b221 Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install 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.

/cc @openshift/openshift-team-operator-framework

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

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 20, 2026

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

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

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

The pull request process is described here

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

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

1 similar comment
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 20, 2026

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

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

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

The pull request process is described here

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

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

Copy link

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

🧹 Nitpick comments (1)
test/e2e/steps/steps.go (1)

1651-1663: Use the rollout command’s exit status instead of parsing its message.

Because Line 152 makes the CLI configurable, matching "successfully rolled out" here turns this waiter into a dependency on client-specific, human-readable output from kubectl/oc. The exit code from rollout status --watch=false is the more stable contract.

Suggested change
 	waitFor(ctx, func() bool {
-		out, err := k8sClient("rollout", "status", "deployment/"+deploymentName, "-n", sc.namespace, "--watch=false")
+		_, err := k8sClient("rollout", "status", "deployment/"+deploymentName, "-n", sc.namespace, "--watch=false")
 		if err != nil {
 			logger.V(1).Info("Failed to get rollout status", "deployment", deploymentName, "error", err)
 			return false
 		}
-		// Successful rollout shows "successfully rolled out"
-		if strings.Contains(out, "successfully rolled out") {
-			logger.V(1).Info("Rollout completed successfully", "deployment", deploymentName)
-			return true
-		}
-		logger.V(1).Info("Rollout not yet complete", "deployment", deploymentName, "status", out)
-		return false
+		logger.V(1).Info("Rollout completed successfully", "deployment", deploymentName)
+		return true
 	})
🤖 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 1651 - 1663, The waiter currently
inspects the human-readable output from k8sClient("rollout", "status", ...) to
detect completion; instead use the command's exit status (the returned error) as
the stable success signal. In the waitFor closure (the call that invokes
k8sClient), replace the strings.Contains(out, "successfully rolled out") check
with a check that err == nil to indicate rollout success, keep the existing
logger.V(1).Info calls but log the error when err != nil (and include
deploymentName and sc.namespace for context), and avoid depending on the CLI
output string to determine success.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@cmd/catalogd/main.go`:
- Around line 280-294: The code loads file-based kubeconfig into restConfig when
cfg.kubeconfig is set but still unconditionally requires extracting an
in-cluster service account JWT (causing startup to fail outside the cluster);
modify the startup sequence so the service-account-dependent pull-secret setup
is only attempted when running in-cluster (e.g., when ctrl.GetConfigOrDie() was
used or when SA detection succeeds) — gate the logic that reads the SA/JWT and
configures pull secrets behind an "in-cluster" check or successful SA detection,
using the existing restConfig/cfg.kubeconfig/ctrl.GetConfigOrDie and the
service-account extraction routine (the code that currently fails when
extracting the SA) to decide whether to run that setup before calling
ctrl.NewManager.

In `@cmd/operator-controller/main.go`:
- Around line 331-343: The startup currently attempts in-cluster service-account
/ pull-secret wiring before honoring cfg.kubeconfig which can cause off-cluster
runs to fail; make all code that reads the service-account token or wires
pull-secrets (e.g., any calls to functions like loadServiceAccountToken,
readServiceAccountJWT, reconcilePullSecrets, or direct
os.ReadFile("/var/run/secrets/...")) conditional so it only runs when
cfg.kubeconfig is empty (i.e., running in-cluster). Ensure the kubeconfig branch
(cfg.kubeconfig != "") short-circuits any in-cluster-only logic and proceeds to
use clientcmd.BuildConfigFromFlags, and avoid calling ctrl.GetConfigOrDie or
other in-cluster dependent functions before that guard.

In `@docs/api-reference/olmv1-api-reference.md`:
- Around line 27-29: The docs reference an undefined heading "ProgressionProbe"
(anchors to `#progressionprobe`) which breaks intra-doc links; either add a proper
"ProgressionProbe" section documenting the probe API (include description,
fields, methods, examples and an H2/H3 heading that exactly matches
"ProgressionProbe") or remove/replace the anchors that point to
`#progressionprobe`; update any references at the same places that mention
ProgressionProbe so they point to the new heading or to an existing section, and
ensure the anchor text/heading slug matches exactly.

In
`@helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensionrevisions.yaml`:
- Around line 226-484: The spec.progressionProbes array must be made immutable
like spec.phases; add the immutability marker to the source API type (the
ProgressionProbes field on the ClusterExtensionRevision spec struct) using the
same kubebuilder validation tag you used for phases (e.g.
+kubebuilder:validation:Immutable or the project's equivalent), then regenerate
the CRD so the generated YAML for spec.progressionProbes contains
x-kubernetes-immutable: true (matching the existing immutability behavior for
spec.phases).

In `@test/e2e/features/revision.feature`:
- Line 140: The scenario title has incorrect subject-verb agreement: update the
Scenario line containing "Phases does not progress when user-provided
progressionProbes do not pass" to "Phases do not progress when user-provided
progressionProbes do not pass" (search for that exact scenario string in the
feature to locate and replace it).

---

Nitpick comments:
In `@test/e2e/steps/steps.go`:
- Around line 1651-1663: The waiter currently inspects the human-readable output
from k8sClient("rollout", "status", ...) to detect completion; instead use the
command's exit status (the returned error) as the stable success signal. In the
waitFor closure (the call that invokes k8sClient), replace the
strings.Contains(out, "successfully rolled out") check with a check that err ==
nil to indicate rollout success, keep the existing logger.V(1).Info calls but
log the error when err != nil (and include deploymentName and sc.namespace for
context), and avoid depending on the CLI output string to determine success.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8d0f56a3-e890-4e3f-8d65-87e22defb8c6

📥 Commits

Reviewing files that changed from the base of the PR and between b69d095 and 4819987.

⛔ Files ignored due to path filters (20)
  • go.sum is excluded by !**/*.sum
  • openshift/tests-extension/go.sum is excluded by !**/*.sum
  • openshift/tests-extension/vendor/github.com/operator-framework/operator-controller/api/v1/clusterextensionrevision_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/**
  • openshift/tests-extension/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go is excluded by !**/vendor/**
  • openshift/tests-extension/vendor/google.golang.org/grpc/internal/transport/client_stream.go is excluded by !**/vendor/**
  • openshift/tests-extension/vendor/google.golang.org/grpc/internal/transport/http2_client.go is excluded by !**/vendor/**
  • openshift/tests-extension/vendor/google.golang.org/grpc/internal/transport/transport.go is excluded by !**/vendor/**
  • openshift/tests-extension/vendor/google.golang.org/grpc/server.go is excluded by !**/vendor/**
  • openshift/tests-extension/vendor/google.golang.org/grpc/stream.go is excluded by !**/vendor/**
  • openshift/tests-extension/vendor/google.golang.org/grpc/version.go is excluded by !**/vendor/**
  • openshift/tests-extension/vendor/modules.txt is excluded by !**/vendor/**
  • vendor/google.golang.org/grpc/internal/envconfig/envconfig.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/client_stream.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/http2_client.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/internal/transport/transport.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/server.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/stream.go is excluded by !vendor/**, !**/vendor/**
  • vendor/google.golang.org/grpc/version.go is excluded by !vendor/**, !**/vendor/**
  • vendor/modules.txt is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (27)
  • api/v1/clusterextensionrevision_types.go
  • api/v1/zz_generated.deepcopy.go
  • applyconfigurations/api/v1/assertion.go
  • applyconfigurations/api/v1/clusterextensionrevisionspec.go
  • applyconfigurations/api/v1/conditionequalprobe.go
  • applyconfigurations/api/v1/fieldsequalprobe.go
  • applyconfigurations/api/v1/fieldvalueprobe.go
  • applyconfigurations/api/v1/objectselector.go
  • applyconfigurations/api/v1/progressionprobe.go
  • applyconfigurations/utils.go
  • cmd/catalogd/main.go
  • cmd/operator-controller/main.go
  • commitchecker.yaml
  • docs/api-reference/olmv1-api-reference.md
  • go.mod
  • hack/api-lint-diff/run.sh
  • helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensionrevisions.yaml
  • internal/operator-controller/applier/phase.go
  • internal/operator-controller/applier/phase_test.go
  • internal/operator-controller/controllers/clusterextensionrevision_controller.go
  • manifests/experimental-e2e.yaml
  • manifests/experimental.yaml
  • openshift/tests-extension/go.mod
  • test/e2e/features/revision.feature
  • test/e2e/features/user-managed-fields.feature
  • test/e2e/steps/steps.go
  • test/e2e/steps/testdata/pvc-probe-sa-boxcutter-rbac-template.yaml

Comment on lines +280 to 294
// Create manager with kubeconfig support for non-default kubeconfig
var restConfig *rest.Config
if cfg.kubeconfig != "" {
setupLog.Info("loading kubeconfig from file", "path", cfg.kubeconfig)
restConfig, err = clientcmd.BuildConfigFromFlags("", cfg.kubeconfig)
if err != nil {
setupLog.Error(err, "unable to load kubeconfig")
return err
}
} else {
restConfig = ctrl.GetConfigOrDie()
}

mgr, err := ctrl.NewManager(restConfig, ctrl.Options{
Scheme: scheme,
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

--kubeconfig mode can still fail outside the cluster due to unconditional SA JWT dependency.

Even when Line 282 loads file-based kubeconfig, Line 266 still requires extracting a service account from in-cluster JWT and returns on failure. This can block startup for local/off-cluster kubeconfig usage. Please gate service-account-dependent pull-secret setup behind successful SA detection (or in-cluster mode), so kubeconfig mode is actually usable.

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

In `@cmd/catalogd/main.go` around lines 280 - 294, The code loads file-based
kubeconfig into restConfig when cfg.kubeconfig is set but still unconditionally
requires extracting an in-cluster service account JWT (causing startup to fail
outside the cluster); modify the startup sequence so the
service-account-dependent pull-secret setup is only attempted when running
in-cluster (e.g., when ctrl.GetConfigOrDie() was used or when SA detection
succeeds) — gate the logic that reads the SA/JWT and configures pull secrets
behind an "in-cluster" check or successful SA detection, using the existing
restConfig/cfg.kubeconfig/ctrl.GetConfigOrDie and the service-account extraction
routine (the code that currently fails when extracting the SA) to decide whether
to run that setup before calling ctrl.NewManager.

Comment on lines +331 to 343
// Load REST config with kubeconfig support for non-default kubeconfig
var restConfig *rest.Config
if cfg.kubeconfig != "" {
setupLog.Info("loading kubeconfig from file", "path", cfg.kubeconfig)
restConfig, err = clientcmd.BuildConfigFromFlags("", cfg.kubeconfig)
if err != nil {
setupLog.Error(err, "unable to load kubeconfig")
return err
}
} else {
restConfig = ctrl.GetConfigOrDie()
}
mgr, err := ctrl.NewManager(restConfig, ctrl.Options{
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Kubeconfig path is undermined by earlier mandatory in-cluster service-account lookup.

Although Line 333 supports explicit kubeconfig, startup can still fail earlier at Line 272 when service-account JWT is unavailable (typical off-cluster run). Consider making SA/pull-secret wiring conditional so kubeconfig-based execution works outside the cluster.

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

In `@cmd/operator-controller/main.go` around lines 331 - 343, The startup
currently attempts in-cluster service-account / pull-secret wiring before
honoring cfg.kubeconfig which can cause off-cluster runs to fail; make all code
that reads the service-account token or wires pull-secrets (e.g., any calls to
functions like loadServiceAccountToken, readServiceAccountJWT,
reconcilePullSecrets, or direct os.ReadFile("/var/run/secrets/...")) conditional
so it only runs when cfg.kubeconfig is empty (i.e., running in-cluster). Ensure
the kubeconfig branch (cfg.kubeconfig != "") short-circuits any in-cluster-only
logic and proceeds to use clientcmd.BuildConfigFromFlags, and avoid calling
ctrl.GetConfigOrDie or other in-cluster dependent functions before that guard.

Comment on lines +27 to +29
_Appears in:_
- [ProgressionProbe](#progressionprobe)

Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add the missing ProgressionProbe section or drop these anchors.

Line 28 and Line 469 link to #progressionprobe, but this file never defines that heading. The new probe API is therefore only partially documented and the generated reference ships with broken intra-doc navigation.

Also applies to: 468-469

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 28-28: Link fragments should be valid

(MD051, link-fragments)

🤖 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 27 - 29, The docs
reference an undefined heading "ProgressionProbe" (anchors to `#progressionprobe`)
which breaks intra-doc links; either add a proper "ProgressionProbe" section
documenting the probe API (include description, fields, methods, examples and an
H2/H3 heading that exactly matches "ProgressionProbe") or remove/replace the
anchors that point to `#progressionprobe`; update any references at the same
places that mention ProgressionProbe so they point to the new heading or to an
existing section, and ensure the anchor text/heading slug matches exactly.

Comment on lines +226 to +484
progressionProbes:
description: |-
progressionProbes is an optional field which provides the ability to define custom readiness probes
for objects defined within spec.phases. As documented in that field, most kubernetes-native objects
within the phases already have some kind of readiness check built-in, but this field allows for checks
which are tailored to the objects being rolled out - particularly custom resources.

Probes defined within the progressionProbes list will apply to every phase in the revision. However, the probes will only
execute against phase objects which are a match for the provided selector type. For instance, a probe using a GroupKind selector
for ConfigMaps will automatically be considered to have passed for any non-ConfigMap object, but will halt any phase containing
a ConfigMap if that particular object does not pass the probe check.

The maximum number of probes is 20.
items:
description: ProgressionProbe provides a custom probe definition,
consisting of an object selection method and assertions.
properties:
assertions:
description: |-
assertions is a required list of checks which will run against the objects selected by the selector. If
one or more assertions fail then the phase within which the object lives will be not be considered
'Ready', blocking rollout of all subsequent phases.
items:
description: Assertion is a discriminated union which defines
the probe type and definition used as an assertion.
properties:
conditionEqual:
description: conditionEqual contains the expected condition
type and status.
properties:
status:
description: |-
status sets the expected condition status.

Allowed values are "True" and "False".
enum:
- "True"
- "False"
type: string
type:
description: type sets the expected condition type,
i.e. "Ready".
maxLength: 200
minLength: 1
type: string
required:
- status
- type
type: object
fieldValue:
description: fieldValue contains the expected field path
and value found within.
properties:
fieldPath:
description: |-
fieldPath sets the field path for the field to check, i.e. "status.phase". The probe will fail
if the path does not exist.
maxLength: 200
minLength: 1
type: string
x-kubernetes-validations:
- message: must contain a valid field path. valid
fields contain upper or lower-case alphanumeric
characters separated by the "." character.
rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
value:
description: value sets the expected value found at
fieldPath, i.e. "Bound".
maxLength: 200
minLength: 1
type: string
required:
- fieldPath
- value
type: object
fieldsEqual:
description: fieldsEqual contains the two field paths
whose values are expected to match.
properties:
fieldA:
description: |-
fieldA sets the field path for the first field, i.e. "spec.replicas". The probe will fail
if the path does not exist.
maxLength: 200
minLength: 1
type: string
x-kubernetes-validations:
- message: must contain a valid field path. valid
fields contain upper or lower-case alphanumeric
characters separated by the "." character.
rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
fieldB:
description: |-
fieldB sets the field path for the second field, i.e. "status.readyReplicas". The probe will fail
if the path does not exist.
maxLength: 200
minLength: 1
type: string
x-kubernetes-validations:
- message: must contain a valid field path. valid
fields contain upper or lower-case alphanumeric
characters separated by the "." character.
rule: self.matches('^[a-zA-Z0-9]+(?:\\.[a-zA-Z0-9]+)*$')
required:
- fieldA
- fieldB
type: object
type:
description: |-
type is a required field which specifies the type of probe to use.

The allowed probe types are "ConditionEqual", "FieldsEqual", and "FieldValue".

When set to "ConditionEqual", the probe checks objects that have reached a condition of specified type and status.
When set to "FieldsEqual", the probe checks that the values found at two provided field paths are matching.
When set to "FieldValue", the probe checks that the value found at the provided field path matches what was specified.
enum:
- ConditionEqual
- FieldsEqual
- FieldValue
type: string
required:
- type
type: object
x-kubernetes-validations:
- message: conditionEqual is required when type is ConditionEqual,
and forbidden otherwise
rule: 'self.type == ''ConditionEqual'' ?has(self.conditionEqual)
: !has(self.conditionEqual)'
- message: fieldsEqual is required when type is FieldsEqual,
and forbidden otherwise
rule: 'self.type == ''FieldsEqual'' ?has(self.fieldsEqual)
: !has(self.fieldsEqual)'
- message: fieldValue is required when type is FieldValue,
and forbidden otherwise
rule: 'self.type == ''FieldValue'' ?has(self.fieldValue)
: !has(self.fieldValue)'
maxItems: 20
minItems: 1
type: array
x-kubernetes-list-type: atomic
selector:
description: |-
selector is a required field which defines the method by which we select objects to apply the below
assertions to. Any object which matches the defined selector will have all the associated assertions
applied against it.

If no objects within a phase are selected by the provided selector, then all assertions defined here
are considered to have succeeded.
properties:
groupKind:
description: |-
groupKind specifies the group and kind of objects to select.

Required when type is "GroupKind".

Uses the Kubernetes format specified here:
https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#GroupKind
properties:
group:
type: string
kind:
type: string
required:
- group
- kind
type: object
label:
description: |-
label is the label selector definition.

Required when type is "Label".

A probe using a Label selector will be executed against every object matching the labels or expressions; you must use care
when using this type of selector. For example, if multiple Kind objects are selected via labels then the probe is
likely to fail because the values of different Kind objects rarely share the same schema.

The LabelSelector field uses the following Kubernetes format:
https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#LabelSelector
Requires exactly one of matchLabels or matchExpressions.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
x-kubernetes-validations:
- message: exactly one of matchLabels or matchExpressions
must be set
rule: (has(self.matchExpressions) && !has(self.matchLabels))
|| (!has(self.matchExpressions) && has(self.matchLabels))
type:
description: |-
type is a required field which specifies the type of selector to use.

The allowed selector types are "GroupKind" and "Label".

When set to "GroupKind", all objects which match the specified group and kind will be selected.
When set to "Label", all objects which match the specified labels and/or expressions will be selected.
enum:
- GroupKind
- Label
type: string
required:
- type
type: object
x-kubernetes-validations:
- message: groupKind is required when type is GroupKind, and
forbidden otherwise
rule: 'self.type == ''GroupKind'' ?has(self.groupKind) : !has(self.groupKind)'
- message: label is required when type is Label, and forbidden
otherwise
rule: 'self.type == ''Label'' ?has(self.label) : !has(self.label)'
required:
- assertions
- selector
type: object
maxItems: 20
minItems: 1
type: array
x-kubernetes-list-type: atomic
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Make spec.progressionProbes immutable.

Line 226 introduces rollout-gating state on ClusterExtensionRevision, but unlike spec.phases this field has no update validation. Because ClusterExtensionRevision is documented as an immutable snapshot, allowing in-place edits here lets users retroactively change rollout behavior for an existing revision instead of forcing a new one. Please add the same immutability guard at the source type so both generated CRDs stay consistent.

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

In
`@helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensionrevisions.yaml`
around lines 226 - 484, The spec.progressionProbes array must be made immutable
like spec.phases; add the immutability marker to the source API type (the
ProgressionProbes field on the ClusterExtensionRevision spec struct) using the
same kubebuilder validation tag you used for phases (e.g.
+kubebuilder:validation:Immutable or the project's equivalent), then regenerate
the CRD so the generated YAML for spec.progressionProbes contains
x-kubernetes-immutable: true (matching the existing immutability behavior for
spec.phases).

And resource "persistentvolumeclaim/test-pvc" is installed
And resource "configmap/test-configmap" is installed

Scenario: Phases does not progress when user-provided progressionProbes do not pass
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Minor grammatical issue in scenario name.

"Phases does not progress" should be "Phases do not progress" for correct subject-verb agreement.

Suggested fix
-  Scenario: Phases does not progress when user-provided progressionProbes do not pass
+  Scenario: Phases do not progress when user-provided progressionProbes do not pass
📝 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
Scenario: Phases does not progress when user-provided progressionProbes do not pass
Scenario: Phases do not progress when user-provided progressionProbes do not pass
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/e2e/features/revision.feature` at line 140, The scenario title has
incorrect subject-verb agreement: update the Scenario line containing "Phases
does not progress when user-provided progressionProbes do not pass" to "Phases
do not progress when user-provided progressionProbes do not pass" (search for
that exact scenario string in the feature to locate and replace it).

@jianzhangbjz
Copy link
Member

Hi @Xia-Zhao-rh , could you help verify it? Thanks!

@jianzhangbjz
Copy link
Member

jianzhangbjz commented Mar 20, 2026

/retitle OPRUN-4509: Synchronize From Upstream Repositories

@openshift-ci openshift-ci bot changed the title NO-ISSUE: Synchronize From Upstream Repositories OPRUN-4509: Synchronize From Upstream Repositories Mar 20, 2026
@openshift-ci-robot
Copy link

openshift-ci-robot commented Mar 20, 2026

@openshift-bot: This pull request references OPRUN-4509 which is a valid jira issue.

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

Details

In response to this:

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

Date Commit Author Message
2026-03-19 21:14:55 operator-framework/operator-controller@dd1c319 Camila Macedo chore(ci): Add test to check if user changes are preserved (#2512)
2026-03-19 12:30:36 operator-framework/operator-controller@8ccea5a Jordan Keister initial (#2562)
2026-03-19 07:51:36 operator-framework/operator-controller@eea6f95 dependabot[bot] 🌱 Bump google.golang.org/grpc from 1.79.1 to 1.79.3 (#2577)
2026-03-19 07:48:55 operator-framework/operator-controller@15303e1 Daniel Franz ProgressionProbes (#2550)

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

Date Commit Author Message
2026-03-19 00:11:18 openshift/operator-framework-operator-controller@0830b6f dtfranz UPSTREAM: <carry>: Add OpenShift specific files
2026-03-19 00:11:21 openshift/operator-framework-operator-controller@e699091 Camila Macedo UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
2026-03-19 00:11:23 openshift/operator-framework-operator-controller@8a2e0d1 Camila Macedo UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
2026-03-19 00:11:24 openshift/operator-framework-operator-controller@e952333 Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp images from openshift/catalogd/manifests.yaml
2026-03-19 00:11:26 openshift/operator-framework-operator-controller@05c7f66 Todd Short UPSTREAM: <carry>: Update OCP catalogs to v4.21
2026-03-19 00:11:27 openshift/operator-framework-operator-controller@bce9abf Kui Wang UPSTREAM: <carry>: support singleown cases in disconnected
2026-03-19 00:11:28 openshift/operator-framework-operator-controller@475150e Kui Wang UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
2026-03-19 00:11:30 openshift/operator-framework-operator-controller@47d405a Camila Macedo UPSTREAM: <carry>: Define Default timeouts and apply their usage accross to avoid flakes
2026-03-19 00:11:32 openshift/operator-framework-operator-controller@2cbcbdd Todd Short UPSTREAM: <carry>: Update to new feature-gate options in helm
2026-03-19 00:11:33 openshift/operator-framework-operator-controller@43d5d7f Camila Macedo UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniquess and waiting for k8s cleanups
2026-03-19 00:11:35 openshift/operator-framework-operator-controller@ae2c9c8 Camila Macedo UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comments ( Follow-Up of: 714977c )
2026-03-19 00:11:36 openshift/operator-framework-operator-controller@f15964d Kui Wang UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inline.watchNamespace
2026-03-19 00:11:38 openshift/operator-framework-operator-controller@cbfed20 Camila Macedo UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension uninstall
2026-03-19 00:11:39 openshift/operator-framework-operator-controller@2fa96ff Kui Wang UPSTREAM: <carry>: Add [OTP] to migrated cases
2026-03-19 00:11:41 openshift/operator-framework-operator-controller@857135d Camila Macedo UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
2026-03-19 00:11:44 openshift/operator-framework-operator-controller@15e1214 Camila Macedo UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version format
2026-03-19 00:11:46 openshift/operator-framework-operator-controller@648deaa Camila Macedo UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and dependencies
2026-03-19 00:11:48 openshift/operator-framework-operator-controller@0a53e10 Kui Wang UPSTREAM: <carry>: add disconnected environment support with custom prow job for migrated qe cases
2026-03-19 00:11:49 openshift/operator-framework-operator-controller@92b3c5f Jian Zhang UPSTREAM: <carry>: migrate jiazha test cases to OTE
2026-03-19 00:11:51 openshift/operator-framework-operator-controller@f3ee9ac Xia Zhao UPSTREAM: <carry>: migrate clustercatalog case to ote
2026-03-19 00:11:52 openshift/operator-framework-operator-controller@dcd4b02 Kui Wang UPSTREAM: <carry>: migrate olmv1 QE stress cases
2026-03-19 00:11:54 openshift/operator-framework-operator-controller@8f64269 Todd Short UPSTREAM: <carry>: Use busybox/httpd to simulate probes
2026-03-19 00:11:55 openshift/operator-framework-operator-controller@b7cc6fc Xia Zhao UPSTREAM: <carry>: migrate olmv1 QE cases
2026-03-19 00:11:57 openshift/operator-framework-operator-controller@be29032 Kui Wang UPSTREAM: <carry>: add agent for olmv1 qe cases
2026-03-19 00:11:58 openshift/operator-framework-operator-controller@c568e9f Todd Short UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
2026-03-19 00:12:00 openshift/operator-framework-operator-controller@1db5761 Rashmi Gottipati UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
2026-03-19 00:12:01 openshift/operator-framework-operator-controller@262bf71 Rashmi Gottipati UPSTREAM: <carry>: address review comments through addl prompts
2026-03-19 00:12:03 openshift/operator-framework-operator-controller@f775dbb Rashmi Gottipati UPSTREAM: <carry>: addressing some more review comments
2026-03-19 00:12:04 openshift/operator-framework-operator-controller@742c3cd Rashmi Gottipati UPSTREAM: <carry>: remove DCO line
2026-03-19 00:12:06 openshift/operator-framework-operator-controller@62ef393 Bruno Andrade UPSTREAM: <carry>: migrate bandrade test cases to OTE
2026-03-19 00:12:07 openshift/operator-framework-operator-controller@e79bcee Bruno Andrade UPSTREAM: <carry>: update metadata
2026-03-19 00:12:09 openshift/operator-framework-operator-controller@c270751 Bruno Andrade UPSTREAM: <carry>: remove originalName
2026-03-19 00:12:10 openshift/operator-framework-operator-controller@cadfc07 Jian Zhang UPSTREAM: <carry>: update 80458's timeout to 180s
2026-03-19 00:12:12 openshift/operator-framework-operator-controller@4a676bf Jian Zhang UPSTREAM: <carry>: update 83026 to specify the clustercatalog
2026-03-19 00:12:13 openshift/operator-framework-operator-controller@1ccf9a2 Catherine Chan-Tse UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
2026-03-19 00:12:15 openshift/operator-framework-operator-controller@a52c09f Predrag Knezevic UPSTREAM: <carry>: Use oc client for running e2e tests
2026-03-19 00:12:16 openshift/operator-framework-operator-controller@57b3dba Predrag Knezevic UPSTREAM: <carry>: Run upstream e2e tests tagged with @catalogd-update
2026-03-19 00:12:18 openshift/operator-framework-operator-controller@1a8c0bc Kui Wang UPSTREAM: <carry>: enhance case to make it more stable
2026-03-19 00:12:19 openshift/operator-framework-operator-controller@477a743 Evan Hearne UPSTREAM: <carry>: add service account to curl job
2026-03-19 00:12:20 openshift/operator-framework-operator-controller@272709b Evan Hearne UPSTREAM: <carry>: move sa creation out of buildCurlJob()
2026-03-19 00:12:22 openshift/operator-framework-operator-controller@ca72d8a Evan Hearne UPSTREAM: <carry>: comment out delete service account
2026-03-19 00:12:23 openshift/operator-framework-operator-controller@e46eac4 Evan Hearne UPSTREAM: <carry>: move defercleanup for sa for LIFO
2026-03-19 00:12:25 openshift/operator-framework-operator-controller@01981f0 Evan Hearne UPSTREAM: <carry>: add polling so job fully deleted before proceed
2026-03-19 00:12:26 openshift/operator-framework-operator-controller@25e1be9 Luke Meyer UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redhat/add-service-account-curl-job"
2026-03-19 00:12:28 openshift/operator-framework-operator-controller@22bd6b9 Camila Macedo UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
2026-03-19 00:12:29 openshift/operator-framework-operator-controller@e580d0a Kui Wang UPSTREAM: <carry>: config watchnamespace cases
2026-03-19 00:12:31 openshift/operator-framework-operator-controller@333234b Xia Zhao UPSTREAM: <carry>: enhance ocp-79770
2026-03-19 00:12:32 openshift/operator-framework-operator-controller@9c7a83a Kui Wang UPSTREAM: <carry>: upgrade version support case
2026-03-19 00:12:34 openshift/operator-framework-operator-controller@1bb126b Per Goncalves da Silva UPSTREAM: <carry>: Remove installed condition check from auth preflight test
2026-03-19 00:12:35 openshift/operator-framework-operator-controller@a3205ef Per Goncalves da Silva UPSTREAM: <carry>: Add openshift/api dependency
2026-03-19 00:12:37 openshift/operator-framework-operator-controller@803bd4e Per Goncalves da Silva UPSTREAM: <carry>: Add boxcutter specific preflight auth test
2026-03-19 00:12:39 openshift/operator-framework-operator-controller@95743cf Kui Wang UPSTREAM: <carry>: adjust watchnamespace case based on change
2026-03-19 00:12:41 openshift/operator-framework-operator-controller@75aa3f1 Camila Macedo UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root dir
2026-03-19 00:12:42 openshift/operator-framework-operator-controller@e31bede Bruno Andrade UPSTREAM: <carry>: add 83979 automation
2026-03-19 00:12:44 openshift/operator-framework-operator-controller@c487407 Bruno Andrade UPSTREAM: <carry>: add 85889 automation
2026-03-19 00:12:45 openshift/operator-framework-operator-controller@3be85e5 Per Goncalves da Silva UPSTREAM: <carry>: Update test-operator startup script to fix pod probe endpoints
2026-03-19 00:12:47 openshift/operator-framework-operator-controller@c932f2e Per Goncalves da Silva UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
2026-03-19 00:12:48 openshift/operator-framework-operator-controller@7f78df4 Camila Macedo UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles instead of openshift-pipelines-operator-rh
2026-03-19 00:12:50 openshift/operator-framework-operator-controller@ab8bfaf Kui Wang UPSTREAM: <carry>: adjust sa and permission test cases per new change from boxcutterruntime
2026-03-19 00:12:51 openshift/operator-framework-operator-controller@d1f27c0 Camila Macedo UPSTREAM: <carry>: Update OCP catalogs to v4.22
2026-03-19 00:12:54 openshift/operator-framework-operator-controller@83b78d7 Camila Macedo UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and dependencies
2026-03-19 00:12:56 openshift/operator-framework-operator-controller@e508e69 Jian Zhang UPSTREAM: <carry>: fix 83026 for TP cluster
2026-03-19 00:12:57 openshift/operator-framework-operator-controller@3439590 Kui Wang UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
2026-03-19 00:12:59 openshift/operator-framework-operator-controller@365342e Stephen Benjamin UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
2026-03-19 00:13:00 openshift/operator-framework-operator-controller@1d8b221 Camila Macedo UPSTREAM: <carry>: Increase install timeout and add diagnostic logging for CE install 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.

/cc @openshift/openshift-team-operator-framework

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.

@jianzhangbjz
Copy link
Member

/assign @Xia-Zhao-rh

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 20, 2026

@openshift-bot: all tests passed!

Full PR test history. Your PR dashboard.

Details

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

@Xia-Zhao-rh
Copy link
Contributor

/verified by @Xia-Zhao-rh

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

@Xia-Zhao-rh: This PR has been marked as verified by @Xia-Zhao-rh.

Details

In response to this:

/verified by @Xia-Zhao-rh

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 ee1522b into openshift:main Mar 20, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. kind/sync lgtm Indicates that a PR is ready to be merged. 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.