Skip to content

NE-2561: Add Gateway API OLM to NO-OLM migration upgrade test#30897

Open
gcs278 wants to merge 1 commit intoopenshift:mainfrom
gcs278:gwapi-olm-upgrade-test
Open

NE-2561: Add Gateway API OLM to NO-OLM migration upgrade test#30897
gcs278 wants to merge 1 commit intoopenshift:mainfrom
gcs278:gwapi-olm-upgrade-test

Conversation

@gcs278
Copy link
Copy Markdown
Contributor

@gcs278 gcs278 commented Mar 18, 2026

Add upgrade test validating Gateway API migration from OLM-based Istio to CIO-managed Sail Library during 4.21 to 4.22 upgrades.

Setup creates Gateway/HTTPRoute with OLM provisioning and tests connectivity. Test validates migration: Gateway remains programmed, Istiod running, Istio CRDs stay OLM-managed, GatewayClass has CIO finalizer, Istio CR deleted, subscription persists. Teardown cleans up all resources.

Note: While this isn't strictly blocked on noOLM GA promotion (openshift/api#2772), if it merges before it, it will only test OLM --> OLM, and noOLM --> noOLM as TechPreview cannot be upgraded (upgrade CI jobs don't exist for TP).

Commands to Run Complete Test Set

GCP Tests

# Z-stream: NO-OLM → NO-OLM
/testwith openshift/origin/main/e2e-gcp-ovn-upgrade openshift/api#2772

# Z-stream: OLM → OLM (baseline)
/test e2e-gcp-ovn-upgrade

# Minor upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade openshift/api#2772

# Minor upgrade: OLM → OLM (baseline)
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade

AWS Tests

# EUS upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused openshift/api#2772

# EUS upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused

vSphere Tests

# Minor upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade openshift/api#2772

# Minor upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade

BareMetal Tests

# Minor upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade openshift/api#2772

# Minor upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade

CC: @rhamini3

@openshift-ci-robot
Copy link
Copy Markdown

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: automatic mode

@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 18, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Mar 18, 2026

@gcs278: This pull request references NE-2292 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:

Add upgrade test validating Gateway API migration from OLM-based Istio to CIO-managed Sail Library during 4.21 to 4.22 upgrades.

Setup creates Gateway/HTTPRoute with OLM provisioning and tests connectivity. Test validates migration: Gateway remains programmed, Istiod running, Istio CRDs stay OLM-managed, GatewayClass has CIO finalizer, Istio CR deleted, subscription persists. Teardown cleans up all resources.

CC: @rhamini3

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 added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 18, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 18, 2026

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

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 18, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a Gateway API upgrade e2e test and registers it in the upgrade suite; the test provisions GatewayClass/Gateway/HTTPRoute, validates provisioning and connectivity before and after upgrades (detects OLM↔NO-OLM migration). Refactors controller helpers for Istio/OSSM checks and replaces echo backend Pod with a Deployment.

Changes

Cohort / File(s) Summary
Upgrade test registration
test/e2e/upgrade/upgrade.go
Imported the router tests package and registered &router.GatewayAPIUpgradeTest{} in AllTests().
Gateway API upgrade test
test/extended/router/gatewayapi_upgrade.go
Added GatewayAPIUpgradeTest type and methods (Name, DisplayName, Setup, Test, Teardown, validateCIOProvisioning). Implements pre-upgrade provisioning of GatewayClass/Gateway/HTTPRoute, acceptance and HTTP connectivity checks, migration-aware post-upgrade validation (OLM↔NO-OLM), and cleanup of Istio/OSSM artifacts.
Gateway API controller helpers & backend
test/extended/router/gatewayapicontroller.go
Refactored Istio/OSSM readiness and validation: added checkIstiodRunning, checkIstiodManagedBySailLibrary, consolidated OLM verification into validateOLMBasedOSSM, changed waitForIstioHealthy to accept a timeout, generalized CRD ownership checks (assertIstioCRDsHaveLabel, assertIstioCRDsOwnedByOLM), promoted OSSM deployment name to file-level constant, and replaced Pod-based echo backend with buildEchoDeployment (Deployment + Service updates).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

✨ 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 approved Indicates a PR has been approved by an approver from all required OWNERS files. label Mar 18, 2026
@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Mar 18, 2026

/test e2e-gcp-ovn-upgrade

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Mar 18, 2026

/test ?

@gcs278 gcs278 force-pushed the gwapi-olm-upgrade-test branch from 90dbe8d to ac9d301 Compare March 18, 2026 02:02
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 18, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: gcs278
Once this PR has been reviewed and has the lgtm label, please assign deads2k for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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 removed the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Mar 18, 2026
@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Mar 18, 2026

/test e2e-gcp-ovn-upgrade

@gcs278 gcs278 force-pushed the gwapi-olm-upgrade-test branch 2 times, most recently from b08e876 to 4df0775 Compare March 18, 2026 04:04
@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Mar 18, 2026

/test e2e-gcp-ovn-upgrade

@openshift-trt
Copy link
Copy Markdown

openshift-trt bot commented Mar 18, 2026

Risk analysis has seen new tests most likely introduced by this PR.
Please ensure that new tests meet guidelines for naming and stability.

New Test Risks for sha: 4df0775

Job Name New Test Risk
pull-ci-openshift-origin-main-e2e-gcp-ovn-upgrade High - "[sig-network-edge][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API migration from OLM to NO-OLM during upgrade" is a new test that failed 1 time(s) against the current commit

New tests seen in this PR at sha: 4df0775

  • "[sig-network-edge][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API migration from OLM to NO-OLM during upgrade" [Total: 1, Pass: 0, Fail: 1, Flake: 0]

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Mar 18, 2026

/test ?

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Mar 18, 2026

/payload list

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 18, 2026

@gcs278: it appears that you have attempted to use some version of the payload command, but your comment was incorrectly formatted and cannot be acted upon. See the docs for usage info.

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Mar 18, 2026

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

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 18, 2026

@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.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/60c65dd0-22f9-11f1-91b0-a3e2ef55f2e7-0

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Mar 18, 2026

Ah darn this isn't going to work because periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade is not test tech preview: it still will try to upgrade GA'ed clustered, and the test will fail. We need a upgrade-from-stable job for tech preview, or we have to wait until we GA.

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 18, 2026

@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.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/c6220410-2306-11f1-9c3a-90af7c7cc380-0

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Mar 18, 2026

[trying again]

Okay, this is a bit crazy, but I created a draft promotion PR (openshift/api#2772) so that we can test with NoOLM as default since we don't have upgrade-from-stable techpreview jobs anywhere.

/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade openshift/api#2772 openshift/cluster-ingress-operator#1354

Additionally, this should still run for OLM to OLM, or noOLM to noOLM (it's a generic z stream upgrade test):
This would be OLM to OLM:
/test e2e-gcp-ovn-upgrade

This would be noOLM to noOLM:
/testwith openshift/origin/main/e2e-gcp-ovn-upgrade openshift/cluster-ingress-operator#1354 openshift/api#2772

So there's our 3 cases:

  1. OLM to OLM
  2. OLM to noOLM (migration)
  3. noOLM to noOLM

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 18, 2026

@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.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/23e6af60-2307-11f1-992d-12ede9d2e079-0

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 18, 2026

@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.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/26a088fc-2307-11f1-9da4-6bca82f01e76-0

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

and the very interesting OLM to noOLM EUS 4.20 to 4.22 update:
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused openshift/api#2772

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 2, 2026

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

  • periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/254dfd70-2ec1-11f1-8462-20ffaf2d891d-0

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

/pipeline required

@openshift-ci-robot
Copy link
Copy Markdown

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/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-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn-upgrade-rollback

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

/test e2e-vsphere-static-ovn-techpreview

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

/test e2e-metal-ipi-ovn

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

Also, might be good to test the OLM to OLM EUS upgrade:

/payload-job periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 2, 2026

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

  • periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/7f689710-2ec2-11f1-8fa3-1296b4c037a3-0

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

Ohh there's a vsphere upgrade from stable job, let's test that from OLM to noOLM
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade openshift/api#2772

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 2, 2026

@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.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/215f4c30-2ec3-11f1-976f-5d98aff4f8c1-0

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

And vsphere OLM to OLM:
/payload-job periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 2, 2026

@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.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/2f110120-2ec3-11f1-8cc6-443614f15d29-0

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

The noOLM to noOLM zstream upgrade didn't start:
/testwith openshift/origin/main/e2e-gcp-ovn-upgrade openshift/api#2772

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

/testwith openshift/origin/main/e2e-gcp-ovn-upgrade openshift/api#2772

@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 2, 2026

@gcs278: This pull request references NE-2561 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:

Add upgrade test validating Gateway API migration from OLM-based Istio to CIO-managed Sail Library during 4.21 to 4.22 upgrades.

Setup creates Gateway/HTTPRoute with OLM provisioning and tests connectivity. Test validates migration: Gateway remains programmed, Istiod running, Istio CRDs stay OLM-managed, GatewayClass has CIO finalizer, Istio CR deleted, subscription persists. Teardown cleans up all resources.

Note: While this isn't strictly blocked on noOLM GA promotion (openshift/api#2772), if it merges before it, it will only test OLM --> OLM, and noOLM --> noOLM as TechPreview cannot be upgraded (upgrade CI jobs don't exist for TP).

Commands to Run Complete Test Set

GCP Tests

# Z-stream: NO-OLM → NO-OLM
/testwith openshift/origin/main/e2e-gcp-ovn-upgrade openshift/api#2772

# Z-stream: OLM → OLM (baseline)
/test e2e-gcp-ovn-upgrade

# Minor upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade openshift/api#2772

# Minor upgrade: OLM → OLM (baseline)
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade

AWS Tests

# EUS upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused openshift/api#2772

# EUS upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused

vSphere Tests

# Minor upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade openshift/api#2772

# Minor upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade

CC: @rhamini3

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
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

I had claude make a test matrix, because this is getting really confusing:

Platform Upgrade Path Type OLM → NO-OLM Migration NO-OLM → NO-OLM OLM → OLM (Baseline)
GCP 4.22.x → 4.22.y z-stream N/A (same minor version - both use same feature gate state) 🔄 Running (/testwith + api#2772) 🔄 Running (presubmit)
GCP 4.21 → 4.22 minor 🔄 Running (/payload-job-with-prs + api#2772) N/A (NO-OLM not in 4.21) N/A
AWS 4.20 → 4.22 EUS 🔄 Running (/payload-job-with-prs + api#2772) N/A (NO-OLM not in 4.20) 🔄 Running (/payload-job)
vSphere 4.21 → 4.22 minor 🔄 Running (/payload-job-with-prs + api#2772) N/A (NO-OLM not in 4.21) 🔄 Running (/payload-job)
BareMetal 4.21 → 4.22 minor 🔄 Running (/payload-job-with-prs + api#2772) N/A (NO-OLM not in 4.21) 🔄 Running (/payload-job)

Test Coverage Explanation

  • OLM → NO-OLM Migration: Tests with NE-2520: Promote GatewayAPIWithoutOLM to GA api#2772 that enables NO-OLM feature gate in 4.22
    • Minor/EUS upgrades: 4.21/4.20 (OLM only) → 4.22 (NO-OLM enabled by PR)
    • Z-stream: Not possible - both 4.22.x versions share the same feature gate state; can't mix OLM and NO-OLM
  • NO-OLM → NO-OLM: Z-stream upgrades with feature gate enabled via /testwith + api#2772
    • Both 4.22.x versions use NO-OLM
  • OLM → OLM (Baseline): Control tests without api#2772
    • Minor/EUS: Tests existing OLM path (4.21/4.20 → 4.22, all OLM)
    • Z-stream: Default presubmit path (4.22.x → 4.22.y, both OLM since feature gate not enabled)

Platform Coverage

  • ☁️ Cloud (GCP/AWS): Tests LoadBalancer + managed DNS code paths
  • 🖥️ vSphere: Tests non-LoadBalancer platform code paths (validates conditional logic)

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

/test e2e-aws-ovn-serial-1of2

@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Apr 2, 2026

@gcs278: This pull request references NE-2561 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:

Add upgrade test validating Gateway API migration from OLM-based Istio to CIO-managed Sail Library during 4.21 to 4.22 upgrades.

Setup creates Gateway/HTTPRoute with OLM provisioning and tests connectivity. Test validates migration: Gateway remains programmed, Istiod running, Istio CRDs stay OLM-managed, GatewayClass has CIO finalizer, Istio CR deleted, subscription persists. Teardown cleans up all resources.

Note: While this isn't strictly blocked on noOLM GA promotion (openshift/api#2772), if it merges before it, it will only test OLM --> OLM, and noOLM --> noOLM as TechPreview cannot be upgraded (upgrade CI jobs don't exist for TP).

Commands to Run Complete Test Set

GCP Tests

# Z-stream: NO-OLM → NO-OLM
/testwith openshift/origin/main/e2e-gcp-ovn-upgrade openshift/api#2772

# Z-stream: OLM → OLM (baseline)
/test e2e-gcp-ovn-upgrade

# Minor upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade openshift/api#2772

# Minor upgrade: OLM → OLM (baseline)
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade

AWS Tests

# EUS upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused openshift/api#2772

# EUS upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused

vSphere Tests

# Minor upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade openshift/api#2772

# Minor upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade

BareMetal Tests

# Minor upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade openshift/api#2772

# Minor upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade

CC: @rhamini3

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
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

BareMetal Tests

Minor upgrade: OLM → NO-OLM
/payload-job-with-prs periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade openshift/api#2772

Minor upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 2, 2026

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

  • periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade
  • periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/a0b13bf0-2ec9-11f1-9fc6-7f338c200f2a-0

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 2, 2026

opfh that didn't work correctly, it kicked off two of the same "with-prs" despite having two commands (that's probably a bug...):
Minor upgrade: OLM → OLM (baseline)
/payload-job periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 2, 2026

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

  • periodic-ci-openshift-release-main-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/d5e6e860-2ec9-11f1-969c-37555de4bfa0-0

@openshift-trt
Copy link
Copy Markdown

openshift-trt bot commented Apr 2, 2026

Job Failure Risk Analysis for sha: 9aea19b

Job Name Failure Risk
pull-ci-openshift-origin-main-e2e-aws-ovn-serial-1of2 IncompleteTests
Tests for this run (28) are below the historical average (2063): IncompleteTests (not enough tests ran to make a reasonable risk analysis; this could be due to infra, installation, or upgrade problems)

Risk analysis has seen new tests most likely introduced by this PR.
Please ensure that new tests meet guidelines for naming and stability.

New tests seen in this PR at sha: 9aea19b

  • "[sig-network-edge][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API functionality during upgrade" [Total: 2, Pass: 2, Fail: 0, Flake: 0]

@openshift-trt
Copy link
Copy Markdown

openshift-trt bot commented Apr 3, 2026

Job Failure Risk Analysis for sha: 9aea19b

Job Name Failure Risk
pull-ci-openshift-origin-main-e2e-aws-ovn-serial-1of2 IncompleteTests
Tests for this run (28) are below the historical average (2089): IncompleteTests (not enough tests ran to make a reasonable risk analysis; this could be due to infra, installation, or upgrade problems)

Risk analysis has seen new tests most likely introduced by this PR.
Please ensure that new tests meet guidelines for naming and stability.

New tests seen in this PR at sha: 9aea19b

  • "[sig-network-edge][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API functionality during upgrade" [Total: 2, Pass: 2, Fail: 0, Flake: 0]

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 3, 2026

@CodeRabbit review the links in the table in this comment #30897 (comment) and report back with another table that shows the pass/fail for the tests. Consider a failure that had no Gateway API tests failures introduced or modified in this job, a success for us (we can't fix other failures, but we don't want to introduce new ones).

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 3, 2026

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

Let me fetch the test result URLs from the table.


🏁 Script executed:

#!/bin/bash

# List of URLs to check
URLS=(
  "https://prow.ci.openshift.org/view/gs/test-platform-results/logs/multi-pr-openshift-origin-30897-openshift-api-2772-e2e-gcp-ovn-upgrade/2039782405924982784"
  "https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/30897/pull-ci-openshift-origin-main-e2e-gcp-ovn-upgrade/2039771586751369216"
  "https://pr-payload-tests.ci.openshift.org/runs/ci/a4e3ff40-2ec0-11f1-8605-18a4784240eb-0"
  "https://pr-payload-tests.ci.openshift.org/runs/ci/254dfd70-2ec1-11f1-8462-20ffaf2d891d-0"
  "https://pr-payload-tests.ci.openshift.org/runs/ci/7f689710-2ec2-11f1-8fa3-1296b4c037a3-0"
  "https://pr-payload-tests.ci.openshift.org/runs/ci/215f4c30-2ec3-11f1-976f-5d98aff4f8c1-0"
  "https://pr-payload-tests.ci.openshift.org/runs/ci/2f110120-2ec3-11f1-8cc6-443614f15d29-0"
  "https://pr-payload-tests.ci.openshift.org/runs/ci/a0b13bf0-2ec9-11f1-9fc6-7f338c200f2a-0"
  "https://pr-payload-tests.ci.openshift.org/runs/ci/d5e6e860-2ec9-11f1-969c-37555de4bfa0-0"
)

for url in "${URLS[@]}"; do
  echo "=== Checking: $url ==="
  curl -s -L --max-time 15 "$url" | grep -iE '(pass|fail|success|error|state|result|status|gateway|GatewayAPI|gatewayapi_upgrade)' | head -40
  echo ""
done

Length of output: 13816


Now let me fetch the actual prow job results for the payload-based runs.


🏁 Script executed:

#!/bin/bash

PROW_URLS=(
  "https://prow.ci.openshift.org/view/gs/test-platform-results/logs/openshift-api-2772-openshift-origin-30897-ci-4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade/2039770033474768896"
  "https://prow.ci.openshift.org/view/gs/test-platform-results/logs/openshift-api-2772-openshift-origin-30897-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused/2039770902526169088"
  "https://prow.ci.openshift.org/view/gs/test-platform-results/logs/openshift-origin-30897-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused/2039773334710784000"
  "https://prow.ci.openshift.org/view/gs/test-platform-results/logs/openshift-api-2772-openshift-origin-30897-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade/2039774477394382848"
  "https://prow.ci.openshift.org/view/gs/test-platform-results/logs/openshift-origin-30897-ci-4.22-upgrade-from-stable-4.21-e2e-vsphere-ovn-upgrade/2039774573129371648"
  "https://prow.ci.openshift.org/view/gs/test-platform-results/logs/openshift-api-2772-openshift-origin-30897-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade/2039786182526636032"
  "https://prow.ci.openshift.org/view/gs/test-platform-results/logs/openshift-origin-30897-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade/2039786553068228608"
)

for url in "${PROW_URLS[@]}"; do
  echo "=== Checking: $url ==="
  curl -s -L --max-time 20 "$url" | grep -iE '(prowJobState|gateway|GatewayAPI|gatewayapi_upgrade|junit_upgrade|junit_e2e)' | head -30
  echo ""
done

Length of output: 22752


Two AWS EUS runs failed and the BareMetal OLM→NO-OLM run looks suspicious. Let me check the JUnit XML files for Gateway API test results.


🏁 Script executed:

#!/bin/bash

# AWS EUS OLM->NO-OLM failure: check junit_upgrade for Gateway API failures
echo "=== AWS EUS OLM->NO-OLM junit_upgrade ==="
curl -s --max-time 20 "https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-api-2772-openshift-origin-30897-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused/2039770902526169088/artifacts/e2e-aws-ovn-upgrade-paused/openshift-e2e-test/artifacts/junit/junit_upgrade__20260402-205132.xml" | grep -iE '(gateway|GatewayAPI|failure|classname|testcase|testsuite)' | head -60

echo ""
echo "=== AWS EUS OLM->OLM (baseline) junit_upgrade ==="
curl -s --max-time 20 "https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-origin-30897-nightly-4.22-upgrade-from-stable-4.20-e2e-aws-ovn-upgrade-paused/2039773334710784000/artifacts/e2e-aws-ovn-upgrade-paused/openshift-e2e-test/artifacts/junit/junit_upgrade__20260402-211545.xml" | grep -iE '(gateway|GatewayAPI|failure|classname|testcase|testsuite)' | head -60

echo ""
echo "=== BareMetal OLM->NO-OLM: check ofcir-acquire junit to understand what happened ==="
curl -s --max-time 20 "https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-api-2772-openshift-origin-30897-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade/2039786182526636032/artifacts/e2e-metal-ipi-ovn-upgrade/ofcir-acquire/artifacts/junit_metal_setup.xml" | grep -iE '(failure|error|pass|success|skip|classname|testcase)' | head -30

echo ""
echo "=== BareMetal OLM->NO-OLM: check gather-extra junit analysis ==="
curl -s --max-time 20 "https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-api-2772-openshift-origin-30897-nightly-4.22-upgrade-from-stable-4.21-e2e-metal-ipi-ovn-upgrade/2039786182526636032/artifacts/e2e-metal-ipi-ovn-upgrade/gather-extra/artifacts/junit/junit_e2e_analysis__20260403-004130.xml" | grep -iE '(failure|error|skip|classname|testcase|gateway)' | head -30

Length of output: 15510


@gcs278 Here are the results. Both AWS EUS jobs show prowJobState = "failure" but I checked the junit_upgrade XML and both have failures="0" — the Gateway API test [sig-network-edge][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API functionality during upgrade is present and passed in both. The job-level failures were caused by something unrelated. The BareMetal OLM→NO-OLM run is flagged separately — it shows prowJobState = "success" but the e2e cluster was never provisioned (hardware acquisition passed but baremetalds-devscripts-setup and baremetalds-e2e-test never ran), so the Gateway API test did not execute.

Platform Type Upgrade Scenario Job State Gateway API Result Notes
GCP z-stream NO-OLM → NO-OLM ✅ success ✅ Pass
GCP z-stream OLM → OLM ✅ success ✅ Pass
GCP minor (4.21→4.22) OLM → NO-OLM ✅ success ✅ Pass
AWS EUS (4.20→4.22) OLM → NO-OLM ❌ job failure ✅ Pass Job failed for non-Gateway-API reasons; junit_upgrade has failures="0"
AWS EUS (4.20→4.22) OLM → OLM ❌ job failure ✅ Pass Job failed for non-Gateway-API reasons; junit_upgrade has failures="0"
vSphere minor (4.21→4.22) OLM → NO-OLM ✅ success ✅ Pass
vSphere minor (4.21→4.22) OLM → OLM ✅ success ✅ Pass
BareMetal minor (4.21→4.22) OLM → NO-OLM ✅ success ⚠️ Did not run Infra: cluster never provisioned, e2e tests skipped — needs re-run
BareMetal minor (4.21→4.22) OLM → OLM ✅ success ✅ Pass

Summary: 8 out of 9 runs have no Gateway API failures. The BareMetal OLM→NO-OLM run needs a re-run as the e2e tests never executed due to an infrastructure issue.

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 3, 2026

@lihongan @rhamini3 could I get another look? The tests are passing nicely for every variant I tried (including EUS 4.20-->4.22 test job). I'd like to get this merged and running in the nightly for our noOLM promotion.

Open to comments about how to handle teardown as well, or re-visit it later.

@gcs278
Copy link
Copy Markdown
Contributor Author

gcs278 commented Apr 3, 2026

other failures and infra issues:
/retest-required

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 3, 2026

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

Test name Commit Details Required Rerun command
ci/prow/e2e-metal-ipi-ovn-ipv6 161f8a3 link true /test e2e-metal-ipi-ovn-ipv6
ci/prow/e2e-vsphere-ovn-upi 161f8a3 link true /test e2e-vsphere-ovn-upi
ci/prow/e2e-aws-ovn-fips 9aea19b link true /test e2e-aws-ovn-fips

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-trt
Copy link
Copy Markdown

openshift-trt bot commented Apr 3, 2026

Risk analysis has seen new tests most likely introduced by this PR.
Please ensure that new tests meet guidelines for naming and stability.

New tests seen in this PR at sha: 9aea19b

  • "[sig-network-edge][Feature:Router][apigroup:gateway.networking.k8s.io] Verify Gateway API functionality during upgrade" [Total: 2, Pass: 2, Fail: 0, Flake: 0]

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

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants