Skip to content

OCPBUGS-98210: Use release payload image for OSImageStream rebuild detection - #6284

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
yuqi-zhang:fix-imagestream-detection
Jul 9, 2026
Merged

OCPBUGS-98210: Use release payload image for OSImageStream rebuild detection#6284
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
yuqi-zhang:fix-imagestream-detection

Conversation

@yuqi-zhang

@yuqi-zhang yuqi-zhang commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

The OSImageStream rebuild check compared the CR's annotation against version.Hash (the MCO binary's git commit hash). In CI upgrade jobs where only RHCOS/kubernetes images are rebuilt but the MCO binary is unchanged, this caused the OSImageStream to never be refreshed with the new payload's RHCOS image digests. Nodes would complete the upgrade without actually updating the OS image, leaving them on the old kubelet version.

Replace version.Hash with the release payload image digest (ClusterVersion.Status.Desired.Image) as the rebuild key. The release payload digest changes on every upgrade — including CI jobs where only a subset of payload images are rebuilt — so the OSImageStream is correctly re-inspected and updated with new RHCOS image references.

Will attach Jira once we validate this helps with openshift/kubernetes#2653

Summary by CodeRabbit

  • Bug Fixes
    • OS image stream rebuild decisions now rely on the currently active release payload image digest, ensuring streams rebuild when the installed release changes.
    • During OS image stream creation and updates, the release payload image annotation is set/used consistently, improving alignment between the running release and stored stream metadata.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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: LGTM mode

@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@yuqi-zhang: This pull request explicitly references no jira issue.

Details

In response to this:

The OSImageStream rebuild check compared the CR's annotation against version.Hash (the MCO binary's git commit hash). In CI upgrade jobs where only RHCOS/kubernetes images are rebuilt but the MCO binary is unchanged, this caused the OSImageStream to never be refreshed with the new payload's RHCOS image digests. Nodes would complete the upgrade without actually updating the OS image, leaving them on the old kubelet version.

Replace version.Hash with the release payload image digest (ClusterVersion.Status.Desired.Image) as the rebuild key. The release payload digest changes on every upgrade — including CI jobs where only a subset of payload images are rebuilt — so the OSImageStream is correctly re-inspected and updated with new RHCOS image references.

Will attach Jira once we validate this helps with openshift/kubernetes#2653

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

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 8, 2026
@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown

Walkthrough

The OSImageStream creation path now records the release payload image annotation, and the operator rebuild check now derives the current payload digest from ClusterVersion and compares it against that annotation instead of the MCO binary hash.

Changes

OSImageStream release payload annotation flow

Layer / File(s) Summary
Creation writes payload annotation
pkg/osimagestream/osimagestream.go, pkg/controller/common/constants.go
DefaultStreamSourceFactory.Create passes the resolved release image into newOSImageStream, which now writes ReleasePayloadImageAnnotationKey alongside ReleaseImageVersionAnnotationKey.
Rebuild compares payload digest
pkg/operator/osimagestream_ocp.go
buildOSImageStream logs the payload annotation transition, and isOSImageStreamBuildRequired fetches ClusterVersion, derives the release payload image digest, and compares it in osImageStreamRequiresRebuild.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested labels: lgtm

Suggested reviewers: HarshwardhanPatil07, proietfb


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error pkg/operator/osimagestream_ocp.go logs previous/new release image values at V(4), and those come from ClusterVersion.Status.Desired.Image, which can expose registry hostnames. Redact the image value or log only that the OSImageStream was updated/rebuilt; avoid printing ClusterVersion.Status.Desired.Image in logs.
✅ Passed checks (14 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed No Ginkgo tests were added or modified in this PR, so there are no test titles to evaluate for instability.
Test Structure And Quality ✅ Passed No Ginkgo test code was changed in this PR, so the test-structure review is not applicable.
Microshift Test Compatibility ✅ Passed The commit only changes non-test Go files; no new Ginkgo e2e tests or MicroShift-incompatible APIs/features were added.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo/e2e tests were added; the PR only changes implementation files, so there’s no new SNO-specific risk to flag.
Topology-Aware Scheduling Compatibility ✅ Passed Only OSImageStream rebuild/annotation logic changed; no replicas, affinities, node selectors, tolerations, or topology-dependent scheduling were introduced.
Ote Binary Stdout Contract ✅ Passed Touched files are library code only; no main/init/TestMain/suite setup changes or stdout writes were introduced.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the diff only changes production OSImageStream logic and adds a constant, with no IPv4 or external connectivity assumptions.
No-Weak-Crypto ✅ Passed Touched code only changes OSImageStream annotation keys and string equality on release image digests; no weak crypto or secret comparisons found.
Container-Privileges ✅ Passed Only Go source changed; no container/K8s manifests or privilege/securityContext fields were added or modified.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: OSImageStream rebuild detection now uses the release payload image.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

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

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 8, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-upgrade
/test e2e-gcp-op-ocl-part1
/test e2e-gcp-op-ocl-part2
/test e2e-gcp-op-part1
/test e2e-gcp-op-part2
/test e2e-gcp-op-single-node
/test e2e-hypershift

The OSImageStream rebuild check compared the CR's annotation against
version.Hash (the MCO binary's git commit hash). In CI upgrade jobs
where only RHCOS/kubernetes images are rebuilt but the MCO binary is
unchanged, this caused the OSImageStream to never be refreshed with
the new payload's RHCOS image digests. Nodes would complete the
upgrade without actually updating the OS image, leaving them on the
old kubelet version.

Replace version.Hash with the release payload image digest
(ClusterVersion.Status.Desired.Image) as the rebuild key. The release
payload digest changes on every upgrade — including CI jobs where
only a subset of payload images are rebuilt — so the OSImageStream
is correctly re-inspected and updated with new RHCOS image references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@yuqi-zhang
yuqi-zhang force-pushed the fix-imagestream-detection branch from a4143f1 to 0d62e45 Compare July 8, 2026 22:15
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jul 8, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/osimagestream/osimagestream.go`:
- Around line 99-100: The Create path in osimagestream.Create is passing
createOptions.ReleaseImage directly into newOSImageStream, which can leave
ReleasePayloadImageAnnotationKey empty when ReleaseImageStream is set and
ReleaseImage is unset. Resolve the release image from the stream before
constructing the OS image stream, and pass that resolved payload digest into
newOSImageStream so the annotation is populated correctly. Refer to Create and
newOSImageStream when updating the call site.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 79063fbc-92ca-4d6e-a015-a3f13d26474c

📥 Commits

Reviewing files that changed from the base of the PR and between f2f78c2 and 0d62e45.

📒 Files selected for processing (3)
  • pkg/controller/common/constants.go
  • pkg/operator/osimagestream_ocp.go
  • pkg/osimagestream/osimagestream.go

Comment on lines +99 to 100
return newOSImageStream(createOptions.ExistingOSImageStream, streams, defaultStream, createOptions.ReleaseImage), nil
}

@coderabbitai coderabbitai Bot Jul 8, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Find all callers of Create/CreateOptions to check if ReleaseImageStream path is used without ReleaseImage set
rg -n -B3 -A10 'ReleaseImageStream:' --type=go

Repository: openshift/machine-config-operator

Length of output: 171


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== pkg/osimagestream/osimagestream.go ==\n'
wc -l pkg/osimagestream/osimagestream.go
sed -n '1,220p' pkg/osimagestream/osimagestream.go

printf '\n== Search for CreateOptions and ReleaseImageStream usage ==\n'
rg -n -S 'type CreateOptions|ReleaseImageStream|ReleaseImage:' pkg . --type=go

printf '\n== Search for newOSImageStream and osImageStreamRequiresRebuild ==\n'
rg -n -S 'newOSImageStream|osImageStreamRequiresRebuild' pkg --type=go

Repository: openshift/machine-config-operator

Length of output: 15697


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== Candidate files referencing OSImageStream creation ==\n'
git ls-files 'pkg/**/*.go' | rg 'osimagestream|operator/osimagestream'

printf '\n== Search for ReleaseImageStream field and callers across the repo ==\n'
rg -n -S 'ReleaseImageStream|ReleaseImage:' . --type=go

printf '\n== Show the CreateOptions definition and Create implementation ==\n'
sed -n '1,220p' pkg/osimagestream/osimagestream.go

printf '\n== Show osImageStreamRequiresRebuild ==\n'
sed -n '1,220p' pkg/operator/osimagestream_ocp.go

Repository: openshift/machine-config-operator

Length of output: 21155


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== cmd/machine-config-osimagestream/helpers.go ==\n'
wc -l cmd/machine-config-osimagestream/helpers.go
sed -n '1,160p' cmd/machine-config-osimagestream/helpers.go

printf '\n== pkg/operator/osimagestream_ocp.go rebuild logic ==\n'
sed -n '300,380p' pkg/operator/osimagestream_ocp.go

printf '\n== osimagestream tests covering ReleaseImageStream ==\n'
sed -n '230,520p' pkg/osimagestream/osimagestream_test.go

Repository: openshift/machine-config-operator

Length of output: 17336


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Show the CLI helper that populates CreateOptions and the rebuild predicate.
sed -n '1,140p' cmd/machine-config-osimagestream/helpers.go
sed -n '315,360p' pkg/operator/osimagestream_ocp.go

# Find every Create(...) call site and whether ReleaseImage is passed alongside ReleaseImageStream.
rg -n -C 4 'Create\(' cmd pkg --type=go

Repository: openshift/machine-config-operator

Length of output: 50389


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== bootstrap CreateOptions around the call site ==\n'
sed -n '500,545p' pkg/controller/bootstrap/bootstrap.go

printf '\n== CLI option struct and flag wiring ==\n'
rg -n -C 4 'type getOpts|releaseImage|imageStreamPath|imageStream' cmd/machine-config-osimagestream --type=go

printf '\n== Any validation that requires releaseImage when imageStreamPath is used ==\n'
rg -n -C 4 'imageStreamPath|releaseImage' cmd/machine-config-osimagestream --type=go

Repository: openshift/machine-config-operator

Length of output: 14495


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== ReleasePayloadImageAnnotationKey usage ==\n'
rg -n -C 3 'ReleasePayloadImageAnnotationKey' . --type=go

printf '\n== Any tests asserting the annotation value on OSImageStream creation ==\n'
rg -n -C 3 'ReleasePayloadImageAnnotationKey|Release Image digest|release image annotation' pkg cmd --type=go

printf '\n== Any code paths that read the annotation outside osImageStreamRequiresRebuild ==\n'
rg -n -C 3 'ReleasePayloadImageAnnotationKey' pkg cmd --type=go

Repository: openshift/machine-config-operator

Length of output: 10810


Pass the resolved release image here

Create is reachable with ReleaseImageStream set and ReleaseImage empty, so this writes ReleasePayloadImageAnnotationKey: "". That makes osImageStreamRequiresRebuild treat the stream as stale on every reconcile; plumb the actual payload digest into the annotation instead.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/osimagestream/osimagestream.go` around lines 99 - 100, The Create path in
osimagestream.Create is passing createOptions.ReleaseImage directly into
newOSImageStream, which can leave ReleasePayloadImageAnnotationKey empty when
ReleaseImageStream is set and ReleaseImage is unset. Resolve the release image
from the stream before constructing the OS image stream, and pass that resolved
payload digest into newOSImageStream so the annotation is populated correctly.
Refer to Create and newOSImageStream when updating the call site.

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.

So it's not stale on every reconcile, just the first reconcile post-bootstrap I believe. The first reconcile should be writing the correct stream for future syncs

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Oops, something went wrong! Please try again later. 🐰 💔

@yuqi-zhang yuqi-zhang changed the title NO-JIRA: Use release payload image for OSImageStream rebuild detection MCO-2415: Use release payload image for OSImageStream rebuild detection Jul 9, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

@yuqi-zhang: This pull request references MCO-2415 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 "5.0.0" version, but no target version was set.

Details

In response to this:

The OSImageStream rebuild check compared the CR's annotation against version.Hash (the MCO binary's git commit hash). In CI upgrade jobs where only RHCOS/kubernetes images are rebuilt but the MCO binary is unchanged, this caused the OSImageStream to never be refreshed with the new payload's RHCOS image digests. Nodes would complete the upgrade without actually updating the OS image, leaving them on the old kubelet version.

Replace version.Hash with the release payload image digest (ClusterVersion.Status.Desired.Image) as the rebuild key. The release payload digest changes on every upgrade — including CI jobs where only a subset of payload images are rebuilt — so the OSImageStream is correctly re-inspected and updated with new RHCOS image references.

Will attach Jira once we validate this helps with openshift/kubernetes#2653

Summary by CodeRabbit

  • Bug Fixes
  • OS image stream rebuild decisions now rely on the currently active release payload image digest, ensuring streams rebuild when the installed release changes.
  • During OS image stream creation and updates, the release payload image annotation is set/used consistently, improving alignment between the running release and stored stream metadata.

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.

@bertinatto

Copy link
Copy Markdown
Member

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 9, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-upgrade
/test e2e-gcp-op-ocl-part1
/test e2e-gcp-op-ocl-part2
/test e2e-gcp-op-part1
/test e2e-gcp-op-part2
/test e2e-gcp-op-single-node
/test e2e-hypershift

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

Copy link
Copy Markdown
Contributor

@bertinatto: This PR has been marked as verified by https://prow.ci.openshift.org/view/gs/test-platform-results/logs/multi-pr-openshift-kubernetes-2653-openshift-machine-config-operator-6284-e2e-aws-ovn-upgrade/2074981146646548480.

Details

In response to this:

/verified by https://prow.ci.openshift.org/view/gs/test-platform-results/logs/multi-pr-openshift-kubernetes-2653-openshift-machine-config-operator-6284-e2e-aws-ovn-upgrade/2074981146646548480

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.

@yuqi-zhang yuqi-zhang changed the title MCO-2415: Use release payload image for OSImageStream rebuild detection OCPBUGS-98210: Use release payload image for OSImageStream rebuild detection Jul 9, 2026
@openshift-ci-robot openshift-ci-robot added jira/severity-moderate Referenced Jira bug's severity is moderate for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels Jul 9, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@yuqi-zhang: This pull request references Jira Issue OCPBUGS-98210, which is valid.

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

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

Details

In response to this:

The OSImageStream rebuild check compared the CR's annotation against version.Hash (the MCO binary's git commit hash). In CI upgrade jobs where only RHCOS/kubernetes images are rebuilt but the MCO binary is unchanged, this caused the OSImageStream to never be refreshed with the new payload's RHCOS image digests. Nodes would complete the upgrade without actually updating the OS image, leaving them on the old kubelet version.

Replace version.Hash with the release payload image digest (ClusterVersion.Status.Desired.Image) as the rebuild key. The release payload digest changes on every upgrade — including CI jobs where only a subset of payload images are rebuilt — so the OSImageStream is correctly re-inspected and updated with new RHCOS image references.

Will attach Jira once we validate this helps with openshift/kubernetes#2653

Summary by CodeRabbit

  • Bug Fixes
  • OS image stream rebuild decisions now rely on the currently active release payload image digest, ensuring streams rebuild when the installed release changes.
  • During OS image stream creation and updates, the release payload image annotation is set/used consistently, improving alignment between the running release and stored stream metadata.

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.


// Check if an update is needed
if !osImageStreamRequiresRebuild(existingOSImageStream) {
if !osImageStreamRequiresRebuild(existingOSImageStream, releaseImage) {

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.

One thing, should we store the digest part only? If the image is mirrored using oc-mirror or similar the digest in disconnected envs will be preserved and no matter where the image is stored we won't rebuild. Not a blocker.

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.

Thanks for the note - I think re-mirroring shouldn't be a constant operation, so we should be fine with a extra rebuild once every so often. I lean towards keeping the full hash for now as a extra redundancy.

Given that you plan on improving the general process, I would lean towards doing this as a followup or rework (so that we don't have to conditionally rebuild). WDYT?

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'm fine re-visting this later, let's go with the current state.

@openshift-ci

openshift-ci Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

@neisw: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 5 job(s) of type blocking for the ci release of OCP 5.0

  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-e2e-gcp-ovn-upgrade
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aks
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/f8c99e70-7ba1-11f1-8798-27164a784cfa-0

@openshift-ci

openshift-ci Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

@jubittajohn: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 14 job(s) of type blocking for the nightly release of OCP 5.0

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-upgrade-ovn-single-node
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-upgrade-fips
  • periodic-ci-openshift-release-main-ci-5.0-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-gcp-ovn-rt-upgrade
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-azure-aks-ovn-conformance
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn-conformance
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-serial-1of2
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-serial-2of2
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-1of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-2of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-3of3
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-ipv4
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-ipv6

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/702b7290-7ba2-11f1-8082-d0d0bb944598-0

@pablintino

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci

openshift-ci Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: bertinatto, pablintino, yuqi-zhang

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:
  • OWNERS [pablintino,yuqi-zhang]

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

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD b53e441 and 2 for PR HEAD 0d62e45 in total

@bertinatto

Copy link
Copy Markdown
Member

/retest-required

@openshift-ci

openshift-ci Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

@jubittajohn: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 14 job(s) of type blocking for the nightly release of OCP 5.0

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-upgrade-ovn-single-node
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-upgrade-fips
  • periodic-ci-openshift-release-main-ci-5.0-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-gcp-ovn-rt-upgrade
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-azure-aks-ovn-conformance
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn-conformance
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-serial-1of2
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-serial-2of2
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-1of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-2of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-3of3
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-ipv4
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-ipv6

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/9384b2b0-7bcf-11f1-913b-789f2c5fb949-0

@openshift-ci

openshift-ci Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

@jubittajohn: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 5 job(s) of type blocking for the ci release of OCP 5.0

  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-e2e-gcp-ovn-upgrade
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aks
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/975cbcc0-7bcf-11f1-825c-f79f64c57335-0

@openshift-ci

openshift-ci Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

@yuqi-zhang: 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 f6d6db3 into openshift:main Jul 9, 2026
17 checks passed
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@yuqi-zhang: Jira Issue Verification Checks: Jira Issue OCPBUGS-98210
✔️ 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-98210 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:

The OSImageStream rebuild check compared the CR's annotation against version.Hash (the MCO binary's git commit hash). In CI upgrade jobs where only RHCOS/kubernetes images are rebuilt but the MCO binary is unchanged, this caused the OSImageStream to never be refreshed with the new payload's RHCOS image digests. Nodes would complete the upgrade without actually updating the OS image, leaving them on the old kubelet version.

Replace version.Hash with the release payload image digest (ClusterVersion.Status.Desired.Image) as the rebuild key. The release payload digest changes on every upgrade — including CI jobs where only a subset of payload images are rebuilt — so the OSImageStream is correctly re-inspected and updated with new RHCOS image references.

Will attach Jira once we validate this helps with openshift/kubernetes#2653

Summary by CodeRabbit

  • Bug Fixes
  • OS image stream rebuild decisions now rely on the currently active release payload image digest, ensuring streams rebuild when the installed release changes.
  • During OS image stream creation and updates, the release payload image annotation is set/used consistently, improving alignment between the running release and stored stream metadata.

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 Jul 9, 2026

Copy link
Copy Markdown
Contributor

@jacobsee: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-upgrade-fips

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/47faa100-7be9-11f1-91a2-d8776496eeed-0

@openshift-ci

openshift-ci Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

@jacobsee: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 14 job(s) of type blocking for the nightly release of OCP 5.0

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-upgrade-ovn-single-node
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-upgrade-fips
  • periodic-ci-openshift-release-main-ci-5.0-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-gcp-ovn-rt-upgrade
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-azure-aks-ovn-conformance
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn-conformance
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-serial-1of2
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-serial-2of2
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-1of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-2of3
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-3of3
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-ipv4
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-ipv6

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/0682fe70-7bf8-11f1-80c5-f94a2b8c4115-0

@openshift-ci

openshift-ci Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

@jacobsee: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 5 job(s) of type blocking for the ci release of OCP 5.0

  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-e2e-gcp-ovn-upgrade
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aks
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/1bedc830-7bf8-11f1-897d-282127a80781-0

@openshift-ci

openshift-ci Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

@jubittajohn: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-gcp-ovn-rt-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/61f545c0-7c2e-11f1-9e2d-0fdc4266c21e-0

@openshift-ci

openshift-ci Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

@jubittajohn: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview-serial-3of3

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/a2ff82b0-7c2e-11f1-85f4-727d938ab794-0

@openshift-ci

openshift-ci Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

@jubittajohn: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/c3badfe0-7c2e-11f1-8822-0d29a23deec0-0

@openshift-ci

openshift-ci Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

@jubittajohn: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/d9f30bc0-7c2e-11f1-90c9-5bd68f48cc9a-0

@openshift-ci

openshift-ci Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

@jubittajohn: This PR was included in a payload test run from openshift/kubernetes#2653
trigger 67 job(s) of type informing for the nightly release of OCP 5.0

  • periodic-ci-openshift-release-main-nightly-5.0-console-aws
  • periodic-ci-openshift-cluster-control-plane-machine-set-operator-release-5.0-periodics-e2e-aws
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-csi
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-cgroupsv2
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-fips
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-single-node
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-single-node-csi
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-single-node-serial
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-single-node-techpreview
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-single-node-techpreview-serial
  • periodic-ci-openshift-release-main-nightly-5.0-upgrade-from-stable-4.22-e2e-aws-upgrade-ovn-single-node
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-upgrade-fips-no-nat-instance
  • periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-upgrade-out-of-change
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-upi
  • periodic-ci-openshift-cluster-control-plane-machine-set-operator-release-5.0-periodics-e2e-azure
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-azure-csi
  • periodic-ci-openshift-release-main-ci-5.0-e2e-azure-ovn
  • periodic-ci-openshift-release-main-ci-5.0-e2e-azure-ovn-serial
  • periodic-ci-openshift-release-main-ci-5.0-e2e-azure-ovn-techpreview
  • periodic-ci-openshift-release-main-ci-5.0-e2e-azure-ovn-techpreview-serial-1of2
  • periodic-ci-openshift-release-main-ci-5.0-e2e-azure-ovn-techpreview-serial-2of2
  • periodic-ci-openshift-release-main-ci-5.0-e2e-azure-ovn-upgrade-out-of-change
  • periodic-ci-openshift-release-main-cnv-nightly-5.0-deploy-azure-kubevirt-ovn
  • periodic-ci-openshift-cluster-control-plane-machine-set-operator-release-5.0-periodics-e2e-gcp
  • periodic-ci-openshift-release-main-ci-5.0-e2e-gcp-ovn
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-gcp-ovn-csi
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-gcp-ovn-rt
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-gcp-ovn-serial
  • periodic-ci-openshift-release-main-ci-5.0-e2e-gcp-ovn-techpreview
  • periodic-ci-openshift-release-main-ci-5.0-e2e-gcp-ovn-techpreview-serial-1of2
  • periodic-ci-openshift-release-main-ci-5.0-e2e-gcp-ovn-techpreview-serial-2of2
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-gcp-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-e2e-gcp-ovn-upgrade
  • periodic-ci-openshift-hypershift-release-5.0-periodics-e2e-azure-kubevirt-ovn
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-dualstack
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-dualstack-techpreview
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-ipv6-techpreview
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-serial-ipv4
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-serial-virtualmedia-1of2
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-serial-virtualmedia-2of2
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-techpreview
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-ovn-upgrade
  • periodic-ci-openshift-release-main-nightly-5.0-upgrade-from-stable-4.22-e2e-metal-ipi-ovn-upgrade
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-serial-ovn-ipv6
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-serial-ovn-dualstack
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ipi-upgrade-ovn-ipv6
  • periodic-ci-openshift-release-main-nightly-5.0-upgrade-from-stable-4.22-e2e-metal-ipi-upgrade-ovn-ipv6
  • periodic-ci-openshift-release-main-nightly-5.0-metal-ovn-single-node-recert-cluster-rename
  • periodic-ci-openshift-microshift-release-5.0-periodics-e2e-aws-ovn-ocp-conformance
  • periodic-ci-openshift-microshift-release-5.0-periodics-e2e-aws-ovn-ocp-conformance-serial
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-osd-ccs-gcp
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-proxy
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ovn-single-node-live-iso
  • periodic-ci-openshift-eng-ocp-qe-perfscale-ci-main-aws-5.0-nightly-x86-payload-control-plane-6nodes
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-telco5g
  • periodic-ci-openshift-release-main-nightly-5.0-tls-scan
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-vsphere-ovn
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-vsphere-ovn-csi
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-vsphere-ovn-serial
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-vsphere-ovn-techpreview
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-vsphere-ovn-techpreview-serial
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-vsphere-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-e2e-vsphere-ovn-upgrade
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-vsphere-ovn-upi
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-vsphere-ovn-upi-serial
  • periodic-ci-openshift-release-main-nightly-5.0-e2e-vsphere-static-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/4001cbd0-7c30-11f1-963a-0606db8acd44-0

@openshift-merge-robot

Copy link
Copy Markdown
Contributor

Fix included in release 5.0.0-0.nightly-2026-07-10-030545

@openshift-merge-robot

Copy link
Copy Markdown
Contributor

Fix included in release 5.0.0-0.nightly-2026-07-14-100335

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-moderate Referenced Jira bug's severity is moderate 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.

5 participants