Skip to content

[release-4.21] OCPBUGS-88295, OCPBUGS-88297, OCPBUGS-82146, OCPBUGS-78330, OCPBUGS-85550, OCPBUGS-88324, OCPBUGS-88322, OCPBUGS-88320: Backport noOLM Gateway API test coverage and upgrade tests#31232

Merged
openshift-merge-bot[bot] merged 6 commits into
openshift:release-4.21from
gcs278:backport-gwapi-upgrade-test-4.21
Jun 12, 2026

Conversation

@gcs278

@gcs278 gcs278 commented May 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Backport of Gateway API noOLM (Sail Library) test coverage and upgrade tests to release-4.21, as part of the Sail Library backport (NE-2286). This provides full test coverage for the GatewayAPIWithoutOLM feature gate, including OLM-to-Sail-Library migration upgrade testing, test flake fixes, and parallel worker cleanup fixes.

Depends on #31139

Cherry-picked PRs

PR Title Type
#30897 NE-2561: Add Gateway API OLM to noOLM migration upgrade test Feature
#30964 OCPBUGS-81751: Fix GatewayClass update conflict in markTestDone Bug fix
#31000 OCPBUGS-83267: Use upgrades.Skippable for Gateway API upgrade test skip logic Bug fix
#31023 OCPBUGS-83281: Fix Gateway cleanup in parallel e2e test workers Bug fix

Early CI Test Results (GatewayAPIWithoutOLM FG Disabled)

This PR backports the Gateway API upgrade test and bug fixes to release-4.21. The GatewayAPIWithoutOLM feature gate is disabled on this branch, so all default CI jobs test the existing OLM-based Gateway API path only. To validate the noOLM (Sail Library) path, we run /testwith including openshift/cluster-ingress-operator#1462 and openshift/api#2865, which enable the feature gate.

OLM Tests (FG Disabled)

These tests run with the GatewayAPIWithoutOLM feature gate disabled, so Gateway API uses the existing OLM-based installation path. They confirm the backported test code does not regress existing behavior.

  • OLM non-upgrade — Pre-submit e2e jobs test fresh OLM-based install and Gateway API functionality
  • OLM-to-OLM upgrade — Pre-submit upgrade job + payload upgrade jobs validate OLM-based upgrades are not regressed across platforms

Pre-submits

Pre-submits are passing, including the e2e-gcp-ovn-upgrade job which runs the Gateway API upgrade test against the OLM-based path.

Full PR test history

Payload Upgrade Jobs

Additional upgrade coverage across platforms beyond what pre-submits test.

/payload-job periodic-ci-openshift-release-main-ci-4.21-upgrade-from-stable-4.20-e2e-gcp-ovn-rt-upgrade
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-aws-ovn-upgrade-out-of-change
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-azure-ovn-upgrade
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-vsphere-ovn-upgrade
/payload-job periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-ovn-upgrade
/payload-job periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-upgrade-ovn-ipv6
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-aws-upgrade-ovn-single-node
/payload-job periodic-ci-openshift-release-main-nightly-4.21-e2e-aws-ovn-upgrade-fips

Example Payload run

Job Result Failure Reason Prow Link
e2e-azure-ovn-upgrade ✅ PASS link
e2e-vsphere-ovn-upgrade ✅ PASS link
e2e-metal-ipi-ovn-upgrade ✅ PASS link
e2e-metal-ipi-upgrade-ovn-ipv6 ✅ PASS link
e2e-gcp-ovn-rt-upgrade ⚠️ FLAKE Timed out waiting for node count (5) to equal machine count (6) — machine never joined cluster link
e2e-aws-ovn-upgrade-out-of-change ❌ FAIL Expected failure from backporting the GatewayAPIWithoutOLM feature gate (openshift/api#2864) — latest candidate includes the FG but previous candidate predates it, so the test sees a missing FG post-upgrade. Will self-resolve once both candidates include the API change. link
e2e-aws-upgrade-ovn-single-node ⚠️ FLAKE No JUnit results generated — install/setup failure before tests ran link
e2e-aws-ovn-upgrade-fips ⚠️ FLAKE Pre-existing monitor failures: required-scc-annotation-checker across many namespaces (etcd, kube-apiserver, dns, multus, ovn-kubernetes, etc.) and terminationMessagePolicy on istiod/servicemesh pods — not related to this PR link

noOLM Tests (FG Enabled via /testwith with CIO openshift/cluster-ingress-operator#1462 + API openshift/api#2865)

Note: openshift/cluster-ingress-operator#1462 is identical to openshift/cluster-ingress-operator#1442 (the actual backport PR) plus one commit that removes the release.openshift.io/feature-set annotation from the Sail Library RBAC manifests, allowing the noOLM path to run under the Default feature set. openshift/api#2865 promotes the GatewayAPIWithoutOLM feature gate to Default.

These tests include the CIO and API PRs that enable the GatewayAPIWithoutOLM feature gate, so Gateway API uses the Sail Library installation path instead of OLM.

  • noOLM non-upgradee2e-gcp-ovn validates fresh install with Sail Library
  • OLM-to-noOLM upgradee2e-gcp-ovn-upgrade validates migration from OLM to Sail Library during upgrade
/testwith openshift/origin/release-4.21/e2e-gcp-ovn openshift/cluster-ingress-operator#1462 openshift/api#2865
/testwith openshift/origin/release-4.21/e2e-gcp-ovn-upgrade openshift/cluster-ingress-operator#1462 openshift/api#2865
Job Result Prow Link
e2e-gcp-ovn ✅ PASS link
e2e-gcp-ovn-upgrade ✅ PASS link
e2e-gcp-ovn-upgrade (rerun) ✅ PASS link

Migration log from the upgrade test confirms successful OLM-to-Sail-Library transition:

2026-06-04T21:15:15.852Z  INFO  operator.gatewayclass_controller  gatewayclass/controller.go:482  Migrating from OSSM to Sail Library: deleting Istio CR

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 7d427c1d-8e86-4550-96b0-fbc68c7f0f01

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

Use the checkbox below for a quick retry:

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

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

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 29, 2026
@openshift-ci

openshift-ci Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@gcs278

gcs278 commented May 29, 2026

Copy link
Copy Markdown
Contributor Author

Upgrades are actually not working for OLM (only affect 4.20->4.21 right now). https://redhat.atlassian.net/browse/OCPBUGS-86778

Let's test this via:
/payload-job periodic-ci-openshift-release-release-4.21-ci-4.21-upgrade-from-stable-4.20-e2e-gcp-ovn-upgrade

@openshift-ci

openshift-ci Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

@gcs278: trigger 0 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

@gcs278

gcs278 commented May 29, 2026

Copy link
Copy Markdown
Contributor Author

/payload-job periodic-ci-openshift-release-main-ci-4.21-upgrade-from-stable-4.20-e2e-gcp-ovn-upgrade

@openshift-ci

openshift-ci Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

@gcs278: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.21-upgrade-from-stable-4.20-e2e-gcp-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/71de0a60-5b7e-11f1-9d30-2d7158c6abc3-0

@gcs278 gcs278 changed the title [release-4.21] Backport Gateway API upgrade test [release-4.21] NE-2286: Backport noOLM Gateway API test coverage and upgrade tests Jun 3, 2026
@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 3, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 3, 2026
@openshift-ci-robot

openshift-ci-robot commented Jun 3, 2026

Copy link
Copy Markdown

@gcs278: This pull request references NE-2286 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 epic to target either version "4.21." or "openshift-4.21.", but it targets "openshift-4.22" instead.

Details

In response to this:

Summary

Cherry-picked commits

  • cf1f8260f2 NE-2292: Add Gateway API OLM to NO-OLM migration upgrade test (NE-2561: Add Gateway API OLM to NO-OLM migration upgrade test #30897)
  • 8ef51c3945 OCPBUGS-83267: Use upgrades.Skippable for Gateway API upgrade test skip logic
  • 3f8a12d619 OCPBUGS-83281: Fix Gateway cleanup in parallel e2e test workers
  • e29073f79d fail the test if it fails on test cleanup
  • ca41c3642d update the OLM resources cleanup for non-OLM clusters
  • Stub commit: hardcode isNoOLMFeatureGateEnabled to return false until feature gate is backported

Dependencies

Test plan

  • Tests compile (go build ./test/extended/router/ ./test/e2e/upgrade/)
  • Gateway API upgrade test runs and validates OLM-based provisioning
  • No OLM code paths are dead (feature gate always off)

🤖 Generated with Claude Code

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.

@gcs278 gcs278 force-pushed the backport-gwapi-upgrade-test-4.21 branch from bc7da27 to a9db8cd Compare June 3, 2026 21:41
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 3, 2026
@gcs278 gcs278 marked this pull request as ready for review June 3, 2026 21:42
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 3, 2026
@openshift-ci openshift-ci Bot requested review from knobunc and sjenning June 3, 2026 21:43
@gcs278 gcs278 force-pushed the backport-gwapi-upgrade-test-4.21 branch from a9db8cd to 39715ca Compare June 3, 2026 21:44
@gcs278

gcs278 commented Jun 3, 2026

Copy link
Copy Markdown
Contributor Author

/test all

@gcs278

gcs278 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor Author

/test ?

@gcs278

gcs278 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor Author

Origin 4.21 jobs don't run automatically:

/test e2e-aws-csi
/test e2e-aws-jenkins
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-image-registry
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-builds
/test e2e-gcp-ovn-image-ecosystem
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi
/test go-verify-deps
/test images
/test lint
/test okd-scos-images
/test unit
/test verify
/test verify-deps

@gcs278

gcs278 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor Author

Testing is a bit tricky for this one. First, we need to prove that we don't break CI with NO-OLM disabled. The pre-submits will mostly prove this already, but there are more upgrade tests that should be run:

OLM to OLM:
/payload-job periodic-ci-openshift-release-main-ci-4.21-upgrade-from-stable-4.20-e2e-gcp-ovn-rt-upgrade
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-aws-ovn-upgrade-out-of-change
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-azure-ovn-upgrade
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-vsphere-ovn-upgrade
/payload-job periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-ovn-upgrade
/payload-job periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-upgrade-ovn-ipv6
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-aws-upgrade-ovn-single-node
/payload-job periodic-ci-openshift-release-main-nightly-4.21-e2e-aws-ovn-upgrade-fips

@openshift-ci

openshift-ci Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

@gcs278: trigger 8 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.21-upgrade-from-stable-4.20-e2e-gcp-ovn-rt-upgrade
  • periodic-ci-openshift-release-main-ci-4.21-e2e-aws-ovn-upgrade-out-of-change
  • periodic-ci-openshift-release-main-ci-4.21-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-4.21-e2e-vsphere-ovn-upgrade
  • periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-ovn-upgrade
  • periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-upgrade-ovn-ipv6
  • periodic-ci-openshift-release-main-ci-4.21-e2e-aws-upgrade-ovn-single-node
  • periodic-ci-openshift-release-main-nightly-4.21-e2e-aws-ovn-upgrade-fips

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/ba79f340-603a-11f1-95a8-8af10d374131-0

@gcs278

gcs278 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor Author

Next, we should validate with openshift/cluster-ingress-operator#1442, which shows OLM to noOLM migration is working. For this, we need to vendor the backport + removed FG annotation on RBAC manifests and then the FG to default to allow NO-OLM to run by default:

OLM to noOLM:
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.21-upgrade-from-stable-4.20-e2e-gcp-ovn-rt-upgrade openshift/cluster-ingress-operator#1462 openshift/api#2865
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.21-e2e-aws-ovn-upgrade-out-of-change openshift/cluster-ingress-operator#1462 openshift/api#2865
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.21-e2e-azure-ovn-upgrade openshift/cluster-ingress-operator#1462 openshift/api#2865
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.21-e2e-vsphere-ovn-upgrade openshift/cluster-ingress-operator#1462 openshift/api#2865
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-ovn-upgrade openshift/cluster-ingress-operator#1462 openshift/api#2865
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-upgrade-ovn-ipv6 openshift/cluster-ingress-operator#1462 openshift/api#2865
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.21-e2e-aws-upgrade-ovn-single-node openshift/cluster-ingress-operator#1462 openshift/api#2865
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.21-e2e-aws-ovn-upgrade-fips openshift/cluster-ingress-operator#1462 openshift/api#2865

Then, I will run some /testwith for presubmits with NO-OLM to test the non-upgrade NO-OLM test jobs after this

@openshift-ci

openshift-ci Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

@gcs278: given command is invalid: at least one of the commands given is only supported on a one-command-per-comment basis, please separate out commands as multiple comments

@gcs278

gcs278 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor Author

Ehh I guess I'll do it as a payload:

noOLM fresh install (non-upgrade) on AWS, GCP, Azure
/payload-with-prs periodic-ci-openshift-release-main-ci-4.21-e2e-aws-ovn openshift/cluster-ingress-operator#1462 openshift/api#2865
/payload-with-prs periodic-ci-openshift-release-main-ci-4.21-e2e-gcp-ovn openshift/cluster-ingress-operator#1462 openshift/api#2865
/payload-with-prs periodic-ci-openshift-release-main-ci-4.21-e2e-azure-ovn openshift/cluster-ingress-operator#1462 openshift/api#2865

@gcs278

gcs278 commented Jun 11, 2026

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jun 11, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: This pull request references Jira Issue OCPBUGS-88324, which is valid. The bug has been moved to the POST state.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state New, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note type set to "Release Note Not Required"
  • dependent bug Jira Issue OCPBUGS-84322 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-84322 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

Details

In response to this:

/jira refresh

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

@gcs278 gcs278 changed the title OCPBUGS-88324: [release-4.21] OCPBUGS-88295, OCPBUGS-88297, OCPBUGS-82146, OCPBUGS-78330, OCPBUGS-85550: Backport noOLM Gateway API test coverage and upgrade tests [release-4.21] OCPBUGS-88295, OCPBUGS-88297, OCPBUGS-82146, OCPBUGS-78330, OCPBUGS-85550, OCPBUGS-88324, OCPBUGS-88322, OCPBUGS-88320: Backport noOLM Gateway API test coverage and upgrade tests Jun 11, 2026
@openshift-ci-robot openshift-ci-robot added jira/severity-critical Referenced Jira bug's severity is critical for the branch this PR is targeting. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. and removed jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels Jun 11, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: This pull request references Jira Issue OCPBUGS-88295, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-86778 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-86778 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

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

This pull request references Jira Issue OCPBUGS-88297, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-79467 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-79467 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

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

This pull request references Jira Issue OCPBUGS-82146, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-76609 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-76609 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

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

This pull request references Jira Issue OCPBUGS-78330, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-88300 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-88300 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

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

This pull request references Jira Issue OCPBUGS-85550, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-88302 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-88302 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

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

This pull request references Jira Issue OCPBUGS-88324, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note type set to "Release Note Not Required"
  • dependent bug Jira Issue OCPBUGS-84322 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-84322 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

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

This pull request references Jira Issue OCPBUGS-88322, which is invalid:

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

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

This pull request references Jira Issue OCPBUGS-88320, which is valid. The bug has been moved to the POST state.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state New, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-81751 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-81751 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

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

Details

In response to this:

Summary

Backport of Gateway API noOLM (Sail Library) test coverage and upgrade tests to release-4.21, as part of the Sail Library backport (NE-2286). This provides full test coverage for the GatewayAPIWithoutOLM feature gate, including OLM-to-Sail-Library migration upgrade testing, test flake fixes, and parallel worker cleanup fixes.

Depends on #31139

Cherry-picked PRs

PR Title Type
#30897 NE-2561: Add Gateway API OLM to noOLM migration upgrade test Feature
#30964 OCPBUGS-81751: Fix GatewayClass update conflict in markTestDone Bug fix
#31000 OCPBUGS-83267: Use upgrades.Skippable for Gateway API upgrade test skip logic Bug fix
#31023 OCPBUGS-83281: Fix Gateway cleanup in parallel e2e test workers Bug fix

Test plan

  • go build ./test/extended/router/ ./test/e2e/upgrade/ compiles
  • Gateway API upgrade test runs and validates OLM-based provisioning
  • Full CI green after feature gate promotion

🤖 Generated with Claude Code

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.

@gcs278

gcs278 commented Jun 11, 2026

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jun 11, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: This pull request references Jira Issue OCPBUGS-88295, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-86778 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-86778 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

This pull request references Jira Issue OCPBUGS-88297, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-79467 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-79467 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

This pull request references Jira Issue OCPBUGS-82146, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-76609 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-76609 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

This pull request references Jira Issue OCPBUGS-78330, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-88300 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-88300 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

This pull request references Jira Issue OCPBUGS-85550, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-88302 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-88302 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

This pull request references Jira Issue OCPBUGS-88324, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note type set to "Release Note Not Required"
  • dependent bug Jira Issue OCPBUGS-84322 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-84322 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

This pull request references Jira Issue OCPBUGS-88322, which is valid. The bug has been moved to the POST state.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state New, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note type set to "Release Note Not Required"
  • dependent bug Jira Issue OCPBUGS-83712 is in the state Verified, which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-83712 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

This pull request references Jira Issue OCPBUGS-88320, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-81751 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-81751 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

Details

In response to this:

/jira refresh

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

@gcs278

gcs278 commented Jun 11, 2026

Copy link
Copy Markdown
Contributor Author

This is ready to go
/unhold

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 11, 2026
e2e.Logf("GatewayAPI resources successfully created with OLM-based provisioning")
} else {
g.By("Validating CIO-based (NO-OLM) provisioning before upgrade")
t.validateCIOProvisioning(ctx, false) // false = no migration occurred

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is this set to false because on any type of upgrade NO-OLM is always enabled?
otherwise, seems like it is hardcoded

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nevermind, I think I see what you are doing here, maybe need to make the comment a bit more clear:

Suggested change
t.validateCIOProvisioning(ctx, false) // false = no migration occurred
t.validateCIOProvisioning(ctx, false) // false = no migration occurred yet, since this is a pre-upgrade check

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

on another thought we could use !t.startedWithNoOLM because this will always be false if NO-OLM is enabled and it'll be true if it isn't but then it would never make it into this else conditional.

Maybe I am overthinking it but I think it's better than the hardcoded false

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

ah yea the no migration occured is a bit confusing - I agree with your suggestion for the comment.

Technically, we could use !t.startedWithNoOLM and it'd work, but I think hardcoding false is more explicit. It directly says "no migration occurred" rather than deriving it from another field that happens to have the same value.

Valid points - I think we can save for a follow up in a future PR on main.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

understandable, then in that case we can just update the comment to make it more clear?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yes sure - i'll take note of this for a future PR we can merge into main so it's on the code branch where we are actively developing.

} else {
g.By("GatewayAPIWithoutOLM is disabled - validating OLM-based provisioning")
// A shorter timeout here is because the resources should already exist post-upgrade state.
validateOLMBasedOSSM(t.oc, 2*time.Minute)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think we possibly discussed this during 4.22, but just want to bring it up again. Having a longer timeout should not affect anything right? it might be a fail safe in case things take some time to get back to normal after the upgrade?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Right, we discussed this before. The timeout is just to handle brief get failures, not to wait for OLM resources to appear. They should already exist at this point, otherwise we should actually fail. A longer timeout would risk masking a real problem.

But that said, it's a bit of a shortcut. Ideally we'd have a separate function that asserts the resources exist immediately, with retries only for transient API errors rather than waiting for them to appear. Rewriting all that logic felt messy, so I reused the existing function with a lower timeout as a compromise.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I took another look and all each resource timeout is 2 minutes so I guess thats fine :)

if migrationOccurred {
e2e.Logf("Gateway API successfully migrated from OLM to CIO (NO-OLM) during upgrade")
} else if endsWithNoOLM {
e2e.Logf("Gateway API using CIO-based (NO-OLM) provisioning - no migration occurred")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
e2e.Logf("Gateway API using CIO-based (NO-OLM) provisioning - no migration occurred")
e2e.Logf("Gateway API using is using CIO-based (NO-OLM) provisioning pre/post upgrade - no migration occurred")

kind of a nit but makes it a little more clear for someone reading it first time

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yea some logs could be clearer - actually this one is specifically for post upgrade not. I'll keep a note of that for a follow up 👍

g.By("Waiting for upgrade to complete")
<-done

g.By("Verifying Gateway still exists and is programmed")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

any reason we dont check the status of the gatewayClass first using checkGatewayClassCondition(t.oc, gatewayClassName, string(gatewayv1.GatewayClassConditionStatusAccepted), metav1.ConditionTrue)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No particular reason except that we call it later in validateCIOProvisioning because it's specific to sail library / noOLM. The OLM path doesn't set these conditions.

You'd just need to have extra if statements here to call it otherwise, or reorder everything and pull it out of that function. But I see your point - I generally like to start at the "top" and work my way down the hierarchy.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we want to update it then in main followup?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Possibly - I don't feel so strongly as it still correctly checks everything - the test is providing appropriate coverage either way. I'd say it'd be a consideration if we were tweaking/refactoring the upgrade test in a future PR.

}
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we skip httproute cleanup?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Oh nice catch! We orphan a httproute. Not the end of the world, but yes, not desirable. We should follow up with this in the next PR for updating this test in main.

configv1.IBMCloudPlatformType,
configv1.VSpherePlatformType,
configv1.BareMetalPlatformType,
configv1.EquinixMetalPlatformType:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

do we have CI tests for all of these supported platform types?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I took a look at the currently ran tests and it seems like there is nothing running Azure, Equinix, or IBM

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

When you say "currently ran tests" - do you mean pre-submits? We definitely have periodic azure and equinix (I think equinix==metal), and ibmcloud (but not sure how often it runs if ever).

Either way, it's here for a these platforms if it's needed - these platforms should be supported.

@gcs278 gcs278 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Nice thanks for the review @rhamini3 - good comments and good catch with the orphaned HTTPRoute.

Sorry to punt on these but I think it'd be better to address in the main branch in a future PR (otherwise it'd just be for 4.21) - I'll be sure to refer back to here when a future PR touches these files.

e2e.Logf("GatewayAPI resources successfully created with OLM-based provisioning")
} else {
g.By("Validating CIO-based (NO-OLM) provisioning before upgrade")
t.validateCIOProvisioning(ctx, false) // false = no migration occurred

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

ah yea the no migration occured is a bit confusing - I agree with your suggestion for the comment.

Technically, we could use !t.startedWithNoOLM and it'd work, but I think hardcoding false is more explicit. It directly says "no migration occurred" rather than deriving it from another field that happens to have the same value.

Valid points - I think we can save for a follow up in a future PR on main.

} else {
g.By("GatewayAPIWithoutOLM is disabled - validating OLM-based provisioning")
// A shorter timeout here is because the resources should already exist post-upgrade state.
validateOLMBasedOSSM(t.oc, 2*time.Minute)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Right, we discussed this before. The timeout is just to handle brief get failures, not to wait for OLM resources to appear. They should already exist at this point, otherwise we should actually fail. A longer timeout would risk masking a real problem.

But that said, it's a bit of a shortcut. Ideally we'd have a separate function that asserts the resources exist immediately, with retries only for transient API errors rather than waiting for them to appear. Rewriting all that logic felt messy, so I reused the existing function with a lower timeout as a compromise.

if migrationOccurred {
e2e.Logf("Gateway API successfully migrated from OLM to CIO (NO-OLM) during upgrade")
} else if endsWithNoOLM {
e2e.Logf("Gateway API using CIO-based (NO-OLM) provisioning - no migration occurred")

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yea some logs could be clearer - actually this one is specifically for post upgrade not. I'll keep a note of that for a follow up 👍

g.By("Waiting for upgrade to complete")
<-done

g.By("Verifying Gateway still exists and is programmed")

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No particular reason except that we call it later in validateCIOProvisioning because it's specific to sail library / noOLM. The OLM path doesn't set these conditions.

You'd just need to have extra if statements here to call it otherwise, or reorder everything and pull it out of that function. But I see your point - I generally like to start at the "top" and work my way down the hierarchy.

}
}
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Oh nice catch! We orphan a httproute. Not the end of the world, but yes, not desirable. We should follow up with this in the next PR for updating this test in main.

configv1.IBMCloudPlatformType,
configv1.VSpherePlatformType,
configv1.BareMetalPlatformType,
configv1.EquinixMetalPlatformType:

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

When you say "currently ran tests" - do you mean pre-submits? We definitely have periodic azure and equinix (I think equinix==metal), and ibmcloud (but not sure how often it runs if ever).

Either way, it's here for a these platforms if it's needed - these platforms should be supported.

@rhamini3

Copy link
Copy Markdown
Contributor

/lgtm
thanks Grant!

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 12, 2026
@rhamini3

Copy link
Copy Markdown
Contributor

/approve

@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: This pull request references Jira Issue OCPBUGS-88295, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-86778 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-86778 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

This pull request references Jira Issue OCPBUGS-88297, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-79467 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-79467 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

This pull request references Jira Issue OCPBUGS-82146, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-76609 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-76609 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

This pull request references Jira Issue OCPBUGS-78330, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-88300 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-88300 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

This pull request references Jira Issue OCPBUGS-85550, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-88302 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-88302 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

This pull request references Jira Issue OCPBUGS-88324, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note type set to "Release Note Not Required"
  • dependent bug Jira Issue OCPBUGS-84322 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-84322 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

This pull request references Jira Issue OCPBUGS-88322, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note type set to "Release Note Not Required"
  • dependent bug Jira Issue OCPBUGS-83712 is in the state Verified, which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-83712 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

Requesting review from QA contact:
/cc @melvinjoseph86

This pull request references Jira Issue OCPBUGS-88320, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.21.z) matches configured target version for branch (4.21.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-81751 is in the state Closed (Done), which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-81751 targets the "4.22.0" version, which is one of the valid target versions: 4.22.0
  • bug has dependents

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

Details

In response to this:

Summary

Backport of Gateway API noOLM (Sail Library) test coverage and upgrade tests to release-4.21, as part of the Sail Library backport (NE-2286). This provides full test coverage for the GatewayAPIWithoutOLM feature gate, including OLM-to-Sail-Library migration upgrade testing, test flake fixes, and parallel worker cleanup fixes.

Depends on #31139

Cherry-picked PRs

PR Title Type
#30897 NE-2561: Add Gateway API OLM to noOLM migration upgrade test Feature
#30964 OCPBUGS-81751: Fix GatewayClass update conflict in markTestDone Bug fix
#31000 OCPBUGS-83267: Use upgrades.Skippable for Gateway API upgrade test skip logic Bug fix
#31023 OCPBUGS-83281: Fix Gateway cleanup in parallel e2e test workers Bug fix

Test plan

  • go build ./test/extended/router/ ./test/e2e/upgrade/ compiles
  • Gateway API upgrade test runs and validates OLM-based provisioning
  • Full CI green after feature gate promotion

🤖 Generated with Claude Code

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.

@neisw

neisw commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

/approve

@openshift-ci

openshift-ci Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: gcs278, neisw, rhamini3

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

The pull request process is described here

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

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

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

Copy link
Copy Markdown
Contributor

OCPBUGS-88324
e2e-gcp-ovn test no longer orphans the gateway pods

OCPBUGS-88322, OCPBUGS-88295
Upgrade tests no longer panic and fully pass

OCPBUGS-88320
Tests are no longer panicing

/verified by e2e

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jun 12, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@rhamini3: This PR has been marked as verified by e2e.

Details

In response to this:

OCPBUGS-88324
e2e-gcp-ovn test no longer orphans the gateway pods

OCPBUGS-88322, OCPBUGS-88295
Upgrade tests no longer panic and fully pass

OCPBUGS-88320
Tests are no longer panicing

/verified by e2e

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

@openshift-ci

openshift-ci Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

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

@openshift-merge-bot openshift-merge-bot Bot merged commit 9a35db2 into openshift:release-4.21 Jun 12, 2026
27 checks passed
@openshift-ci-robot

Copy link
Copy Markdown

@gcs278: Jira Issue OCPBUGS-88295: Some pull requests linked via external trackers have merged:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Details

In response to this:

Summary

Backport of Gateway API noOLM (Sail Library) test coverage and upgrade tests to release-4.21, as part of the Sail Library backport (NE-2286). This provides full test coverage for the GatewayAPIWithoutOLM feature gate, including OLM-to-Sail-Library migration upgrade testing, test flake fixes, and parallel worker cleanup fixes.

Depends on #31139

Cherry-picked PRs

PR Title Type
#30897 NE-2561: Add Gateway API OLM to noOLM migration upgrade test Feature
#30964 OCPBUGS-81751: Fix GatewayClass update conflict in markTestDone Bug fix
#31000 OCPBUGS-83267: Use upgrades.Skippable for Gateway API upgrade test skip logic Bug fix
#31023 OCPBUGS-83281: Fix Gateway cleanup in parallel e2e test workers Bug fix

Early CI Test Results (GatewayAPIWithoutOLM FG Disabled)

This PR backports the Gateway API upgrade test and bug fixes to release-4.21. The GatewayAPIWithoutOLM feature gate is disabled on this branch, so all default CI jobs test the existing OLM-based Gateway API path only. To validate the noOLM (Sail Library) path, we run /testwith including openshift/cluster-ingress-operator#1462 and openshift/api#2865, which enable the feature gate.

OLM Tests (FG Disabled)

These tests run with the GatewayAPIWithoutOLM feature gate disabled, so Gateway API uses the existing OLM-based installation path. They confirm the backported test code does not regress existing behavior.

  • OLM non-upgrade — Pre-submit e2e jobs test fresh OLM-based install and Gateway API functionality
  • OLM-to-OLM upgrade — Pre-submit upgrade job + payload upgrade jobs validate OLM-based upgrades are not regressed across platforms

Pre-submits

Pre-submits are passing, including the e2e-gcp-ovn-upgrade job which runs the Gateway API upgrade test against the OLM-based path.

Full PR test history

Payload Upgrade Jobs

Additional upgrade coverage across platforms beyond what pre-submits test.

/payload-job periodic-ci-openshift-release-main-ci-4.21-upgrade-from-stable-4.20-e2e-gcp-ovn-rt-upgrade
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-aws-ovn-upgrade-out-of-change
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-azure-ovn-upgrade
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-vsphere-ovn-upgrade
/payload-job periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-ovn-upgrade
/payload-job periodic-ci-openshift-release-main-nightly-4.21-e2e-metal-ipi-upgrade-ovn-ipv6
/payload-job periodic-ci-openshift-release-main-ci-4.21-e2e-aws-upgrade-ovn-single-node
/payload-job periodic-ci-openshift-release-main-nightly-4.21-e2e-aws-ovn-upgrade-fips

Example Payload run

Job Result Failure Reason Prow Link
e2e-azure-ovn-upgrade ✅ PASS link
e2e-vsphere-ovn-upgrade ✅ PASS link
e2e-metal-ipi-ovn-upgrade ✅ PASS link
e2e-metal-ipi-upgrade-ovn-ipv6 ✅ PASS link
e2e-gcp-ovn-rt-upgrade ⚠️ FLAKE Timed out waiting for node count (5) to equal machine count (6) — machine never joined cluster link
e2e-aws-ovn-upgrade-out-of-change ❌ FAIL Expected failure from backporting the GatewayAPIWithoutOLM feature gate (openshift/api#2864) — latest candidate includes the FG but previous candidate predates it, so the test sees a missing FG post-upgrade. Will self-resolve once both candidates include the API change. link
e2e-aws-upgrade-ovn-single-node ⚠️ FLAKE No JUnit results generated — install/setup failure before tests ran link
e2e-aws-ovn-upgrade-fips ⚠️ FLAKE Pre-existing monitor failures: required-scc-annotation-checker across many namespaces (etcd, kube-apiserver, dns, multus, ovn-kubernetes, etc.) and terminationMessagePolicy on istiod/servicemesh pods — not related to this PR link

noOLM Tests (FG Enabled via /testwith with CIO openshift/cluster-ingress-operator#1462 + API openshift/api#2865)

Note: openshift/cluster-ingress-operator#1462 is identical to openshift/cluster-ingress-operator#1442 (the actual backport PR) plus one commit that removes the release.openshift.io/feature-set annotation from the Sail Library RBAC manifests, allowing the noOLM path to run under the Default feature set. openshift/api#2865 promotes the GatewayAPIWithoutOLM feature gate to Default.

These tests include the CIO and API PRs that enable the GatewayAPIWithoutOLM feature gate, so Gateway API uses the Sail Library installation path instead of OLM.

  • noOLM non-upgradee2e-gcp-ovn validates fresh install with Sail Library
  • OLM-to-noOLM upgradee2e-gcp-ovn-upgrade validates migration from OLM to Sail Library during upgrade
/testwith openshift/origin/release-4.21/e2e-gcp-ovn openshift/cluster-ingress-operator#1462 openshift/api#2865
/testwith openshift/origin/release-4.21/e2e-gcp-ovn-upgrade openshift/cluster-ingress-operator#1462 openshift/api#2865
Job Result Prow Link
e2e-gcp-ovn ✅ PASS link
e2e-gcp-ovn-upgrade ✅ PASS link
e2e-gcp-ovn-upgrade (rerun) ✅ PASS link

Migration log from the upgrade test confirms successful OLM-to-Sail-Library transition:

2026-06-04T21:15:15.852Z  INFO  operator.gatewayclass_controller  gatewayclass/controller.go:482  Migrating from OSSM to Sail Library: deleting Istio CR

🤖 Generated with Claude Code

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

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/severity-critical Referenced Jira bug's severity is critical for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants