Skip to content

OCPNODE-4518: Block runc on RHEL 10 via OSImageURL stream class inspection - #6238

Merged
openshift-merge-bot[bot] merged 8 commits into
openshift:mainfrom
bitoku:atokubi/runc-block-osimageurl
Jul 26, 2026
Merged

OCPNODE-4518: Block runc on RHEL 10 via OSImageURL stream class inspection#6238
openshift-merge-bot[bot] merged 8 commits into
openshift:mainfrom
bitoku:atokubi/runc-block-osimageurl

Conversation

@bitoku

@bitoku bitoku commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Assisted-by: Claude Code https://claude.com/claude-code

- What I did

When OSImageStream is not available, detect RHEL 10 by inspecting the container image's io.openshift.os.streamclass label from the OSImageURL. This complements the OSImageStream-based check (commit 50a5088) by covering the OSImageURL path.

- How to verify it

manual test and e2e test

- Description for the changelog

Added a block mechanism when OSImageURL is RHEL 10 based and runc is used.

Summary by CodeRabbit

  • New Features

    • Improved RHEL 10 validation when OS image URLs are overridden or unavailable through an image stream.
    • Added support for inspecting image stream classes using image mirror policies and related image data.
    • Added a shared annotation value for marking overridden OS image URLs.
  • Bug Fixes

    • Ensured validation uses the correct image source and waits for required image and secret data to become available.

@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

openshift-ci Bot commented Jun 26, 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

@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 Jun 26, 2026
@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

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

Changes

Bootstrap and render controllers now share image inspection dependencies, synchronize image-related informer caches, and select RHEL10 runc validation based on either OS image URLs or OS image streams. Constructors, command wiring, constants, tests, and bootstrap fixtures were updated accordingly.

OS image inspection and validation

Layer / File(s) Summary
Inspector dependency wiring
cmd/machine-config-controller/start.go, pkg/controller/bootstrap/bootstrap.go
Bootstrap retains an inspector factory and passes it through controller construction; render creation receives image and secret informer dependencies.
Render controller cache integration
pkg/controller/render/render_controller.go
The render controller initializes an image inspector and waits for secret, image, and mirror-policy informer caches when inspection is enabled.
RHEL10 validation paths
pkg/controller/render/render_controller.go, pkg/controller/common/constants.go
Validation uses OSImageURL inspection when the stream set is unavailable or overridden, and uses OSImageStream validation otherwise.
Call-site and test updates
cmd/machine-config-controller/bootstrap.go, pkg/controller/bootstrap/bootstrap_test.go, pkg/controller/render/render_controller_test.go, test/e2e-bootstrap/bootstrap_test.go
Constructor calls, fixtures, and tests supply the new arguments and validate the updated paths.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Bootstrap
  participant RenderController
  participant StreamClassInspector
  Bootstrap->>StreamClassInspector: create stream-class inspector
  Bootstrap->>RenderController: RunBootstrap with inspector
  RenderController->>StreamClassInspector: inspect OSImageURL when needed
  StreamClassInspector-->>RenderController: return stream class
  RenderController-->>Bootstrap: return validation result
Loading

Possibly related PRs

Suggested reviewers: dkhater-redhat, djoshy, pablintino

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 69.23% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the PR’s main change: blocking runc on RHEL 10 using OSImageURL stream class inspection.
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 titles or runtime-derived test names were introduced; the touched tests use fixed literals or table-driven static names.
Test Structure And Quality ✅ Passed Changed tests use table/unit style, cleanup is deferred in e2e harness, and waits already have explicit PollUntilContextTimeout in helpers.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the e2e file uses plain testing and existing APIs, so this MicroShift check is not triggered.
Single Node Openshift (Sno) Test Compatibility ✅ Passed Touched tests are plain testing.T suites; no new Ginkgo specs or multi-node/HA assumptions were added.
Topology-Aware Scheduling Compatibility ✅ Passed No new pod scheduling or topology assumptions were introduced; changes only plumb image-inspection and RHEL10 validation.
Ote Binary Stdout Contract ✅ Passed Touched entrypoints redirect klog to stderr before logging, and no new fmt.Print/Println or suite-level stdout writes were added.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PASS: The touched e2e bootstrap test uses only local testenv/cluster resources; no Ginkgo blocks, hardcoded IPv4s, or public internet hosts were found.
No-Weak-Crypto ✅ Passed Touched files add image-inspection/validation only; no MD5/SHA1/DES/RC4/etc or custom crypto, and no secret/token comparisons were introduced.
Container-Privileges ✅ Passed Touched files are controller logic/tests only; no added privileged, hostPID/Network/IPC, CAP_SYS_ADMIN, or allowPrivilegeEscalation settings were found.
No-Sensitive-Data-In-Logs ✅ Passed The PR adds no new logs containing secrets/PII; changed lines are error returns and comments only, and existing OSImageURL warning logs predated the commit.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@bitoku
bitoku force-pushed the atokubi/runc-block-osimageurl branch from 2338c29 to dc5c6d7 Compare June 29, 2026 09:42

@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/controller/bootstrap/bootstrap.go`:
- Around line 366-369: The base OS stream-class lookup in bootstrap is still
using the original pullSecret, which can miss the merged IRI credentials and
fail auth on no-registry/InternalReleaseImage installs. Update the call in Run
to pass the merged pull secret bytes used earlier after the IRI merge, and make
sure getBaseStreamClass (and any downstream inspection path it uses) receives
those newer credentials instead of the stale secret.
🪄 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: f54f4a98-8a95-4960-a70f-30f1425ce5b8

📥 Commits

Reviewing files that changed from the base of the PR and between 2338c29 and dc5c6d7.

📒 Files selected for processing (8)
  • cmd/machine-config-controller/start.go
  • pkg/controller/bootstrap/bootstrap.go
  • pkg/controller/common/constants.go
  • pkg/controller/common/images.go
  • pkg/controller/render/render_controller.go
  • pkg/controller/render/render_controller_test.go
  • pkg/osimagestream/inspector.go
  • test/e2e-bootstrap/bootstrap_test.go
✅ Files skipped from review due to trivial changes (2)
  • pkg/controller/common/images.go
  • pkg/controller/common/constants.go
🚧 Files skipped from review as they are similar to previous changes (5)
  • cmd/machine-config-controller/start.go
  • test/e2e-bootstrap/bootstrap_test.go
  • pkg/osimagestream/inspector.go
  • pkg/controller/render/render_controller_test.go
  • pkg/controller/render/render_controller.go

Comment thread pkg/controller/bootstrap/bootstrap.go Outdated
@bitoku
bitoku force-pushed the atokubi/runc-block-osimageurl branch from dc5c6d7 to f79c206 Compare June 29, 2026 10:56
@bitoku
bitoku marked this pull request as ready for review June 29, 2026 10:57
@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 29, 2026
@openshift-ci
openshift-ci Bot requested review from djoshy and dkhater-redhat June 29, 2026 10:57
@bitoku
bitoku force-pushed the atokubi/runc-block-osimageurl branch from f79c206 to 1a01a98 Compare June 29, 2026 11:01
@bitoku bitoku changed the title Block runc on RHEL 10 via OSImageURL stream class inspection OCPNODE-4518: Block runc on RHEL 10 via OSImageURL stream class inspection Jun 29, 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 29, 2026
@openshift-ci-robot

openshift-ci-robot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

@bitoku: This pull request references OCPNODE-4518 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:

Assisted-by: Claude Code https://claude.com/claude-code

- What I did

When OSImageStream is not available, detect RHEL 10 by inspecting the container image's io.openshift.os.streamclass label from the OSImageURL. This complements the OSImageStream-based check (commit 50a5088) by covering the OSImageURL path.

- How to verify it

manual test and e2e test

- Description for the changelog

Added a block mechanism when OSImageURL is RHEL 10 based and runc is used.

Summary by CodeRabbit

  • New Features

  • Added support for detecting OS image stream class from container images, including mirrored registries, so the system can make smarter runtime decisions.

  • Improved bootstrap handling to account for the selected base OS image when startup data is unavailable.

  • Bug Fixes

  • Strengthened validation to block incompatible runtime settings on certain OS image streams.

  • Cached image inspection results more reliably and invalidates them when the referenced image changes.

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.

@bitoku
bitoku force-pushed the atokubi/runc-block-osimageurl branch 2 times, most recently from a654f87 to 7b85ae2 Compare June 29, 2026 12:13

@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/controller/render/render_controller_test.go`:
- Around line 1481-1485: The fake lister helper newFakeMCLister currently
ignores the error from indexer.Add, which can silently skip malformed
MachineConfig fixtures and hide bad test state. Update the helper to handle the
Add failure explicitly by either returning an error from newFakeMCLister or
switching it to take testing.T and failing the test immediately, so cache-based
tests cannot proceed with incomplete fixtures.
🪄 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: 670ef7f7-6325-4548-9912-9fd6bd766880

📥 Commits

Reviewing files that changed from the base of the PR and between a654f87 and 7b85ae2.

📒 Files selected for processing (7)
  • cmd/machine-config-controller/start.go
  • pkg/controller/bootstrap/bootstrap.go
  • pkg/controller/common/constants.go
  • pkg/controller/render/render_controller.go
  • pkg/controller/render/render_controller_test.go
  • pkg/osimagestream/inspector.go
  • test/e2e-bootstrap/bootstrap_test.go
🚧 Files skipped from review as they are similar to previous changes (6)
  • pkg/controller/common/constants.go
  • cmd/machine-config-controller/start.go
  • test/e2e-bootstrap/bootstrap_test.go
  • pkg/osimagestream/inspector.go
  • pkg/controller/bootstrap/bootstrap.go
  • pkg/controller/render/render_controller.go

Comment thread pkg/controller/render/render_controller_test.go Outdated
@bitoku

bitoku commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

/pipeline required

@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

@bitoku
bitoku force-pushed the atokubi/runc-block-osimageurl branch from 7b85ae2 to e9b2c17 Compare June 29, 2026 15:00
Comment thread pkg/controller/bootstrap/bootstrap.go Outdated
// decide whether runc should be blocked on RHEL 10.
// TODO(OCP 5.3): remove this once runc is removed.
var baseStreamClass string
if osImageStream == nil && cconfig.Spec.BaseOSContainerImage != "" {

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.

The FG is now GAed and this condition triggers only in Hypershift, that's a complete separate topic (they have their own implementation). Given that for standalone the osImageStream variable will be always populated, isn't it simpler to trust it exists?

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, this is my mistake. Thank you!

I wanted to check the stream class only when the OSImageURL overrides OSImageStream.

@bitoku
bitoku force-pushed the atokubi/runc-block-osimageurl branch 3 times, most recently from 634b255 to c00ffd9 Compare July 3, 2026 16:28
@bitoku

bitoku commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

/pipeline required

@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

@bitoku

bitoku commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

@pablintino Can you take another look?

@pablintino pablintino left a comment

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.

This change is to me a bit concerning. Despite the idea/strategy, in general, is IMHO good, the implementation has some details that are worth to consider, and at least, ack it has downsides and/or shadows:

  • This change introduces a new function to parse the streams of a dedicated function in the osimagestream package that creates a new parsing path. That's fine, but the function has zero tests. The API stile and the nature of the functions make them look like a kludge.
  • This change makes the MCC now perform OS Image Stream related parsing (clearly showed by the need to add all of those new listers). We have thought of moving the OS Image Stream logic to the controller a few times (there's a stale Jira card) for other reasons and maybe this is another one, or the one we need to do it. It would significantly simplify this change.
  • The caching mechanism is clumsy. I would prefer to avoid exposing internal details (like a variable that acts as a barrier to run a piece of logic like both constants do). We have been recently talkinga about cahing for OS Image Streams discovery if we end up integrating it with PIS. This change will benefit from something like that too without the need of using an annotation for such of an internal thing.

// - The OSImageURL was overridden (the override may target a different
// stream than the pool's default, so the stream-based check was skipped
// in generateRenderedMachineConfig).
// TODO(OCP 5.3): Remove when runc is removed.

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.

These TODOs are worth a Jira card to make sure we don't loose track of this removal.

@bitoku

bitoku commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Thank you @pablintino for the review.

This change introduces a new function to parse the streams of a dedicated function in the osimagestream package that creates a new parsing path. That's fine, but the function has zero tests. The API stile and the nature of the functions make them look like a kludge.

I'll implement them for sure.

This change makes the MCC now perform OS Image Stream related parsing (clearly showed by the need to add all of those new listers). We have thought of moving the OS Image Stream logic to the controller a few times (there's a stale Jira card) for other reasons and maybe this is another one, or the one we need to do it. It would significantly simplify this change.

The caching mechanism is clumsy. I would prefer to avoid exposing internal details (like a variable that acts as a barrier to run a piece of logic like both constants do). We have been recently talkinga about cahing for OS Image Streams discovery if we end up integrating it with PIS. This change will benefit from something like that too without the need of using an annotation for such of an internal thing.

Do we have any idea how to do them? I'm happy to discuss them if that helps.

Meanwhile I'll try implementing new codes based on your feed back, on top of the current commit. I hope it helps us understand the best way to implement this.

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

Copy link
Copy Markdown
Contributor

Tests from second stage were triggered manually. Pipeline can be controlled only manually, until HEAD changes. Use command to trigger second stage.

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

bitoku commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

Thank you! @asahay19 is a QE for this feature. She'll be working on the manual testing and e2e.

@asahay19

Copy link
Copy Markdown

Thank you! @asahay19 is a QE for this feature. She'll be working on the manual testing and e2e.

I am working on testing this PR. Will update the results soon on this PR. Thanks !

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 24, 2026
pablintino and others added 8 commits July 24, 2026 11:30
Signed-off-by: Pablo Rodriguez Nava <git@amail.pablintino.eu>
Rename validateNoRuncOnRHEL10 to validateNoRuncOnRHEL10FromOSImageStream
and validateNoRuncFromOSImageURL to validateNoRuncOnRHEL10FromOSImageURL
to distinguish the two validation paths more clearly.

Assisted-by: Claude Code <https://claude.com/claude-code>
Convert from a *Controller method to a standalone function that accepts
an osimagestream.StreamClassInspector parameter, making it testable
without a full controller instance.

Assisted-by: Claude Code <https://claude.com/claude-code>
…achineConfig

The stream-based runc check was embedded inside generateRenderedMachineConfig,
while the URL-based check lived in the callers. Move the stream check to
syncGeneratedMachineConfig and RunBootstrap so both runc validations are
colocated at the same level.

Assisted-by: Claude Code <https://claude.com/claude-code>
The helper added indirection without reducing duplication — each
call site now carries the detection + error inline, and
validateNoRuncOnRHEL10FromOSImageURL documents why it checks runc
before inspecting the image (no network access needed).

Assisted-by: Claude Code <https://claude.com/claude-code>
Only call validateNoRuncOnRHEL10FromOSImageURL when OSImageURL is
overridden; skip both checks when neither override nor stream exists.

Assisted-by: Claude Code <https://claude.com/claude-code>
Derive a context.Context from the controller's stopCh and thread it
through to StreamClassInspector.InspectStreamClass so the 30-second
image-inspection timeout is cancelled immediately on shutdown instead
of blocking the sync loop.

Assisted-by: Claude Code <https://claude.com/claude-code>
Storing a context in a struct is a Go antipattern — thread it as a
parameter through the sync call chain instead.

Assisted-by: Claude Code <https://claude.com/claude-code>
@bitoku
bitoku force-pushed the atokubi/runc-block-osimageurl branch from c8424d1 to 08f5b4e Compare July 24, 2026 12:15
@openshift-ci openshift-ci Bot removed lgtm Indicates that a PR is ready to be merged. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Jul 24, 2026
@asahay19

asahay19 commented Jul 25, 2026

Copy link
Copy Markdown

/verified by @asahay19

I have verified that via OSImageURL stream , gurad is getting triggered and upgrade is blocked when default container runtime is runc.

➜  origin git:(4623) ✗ oc get mcp
NAME                     CONFIG                                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
master                   rendered-master-3044146bb48372a0caa7e14dcec0e5b4                   True      False      False      3              3                   3                     0                      2d17h
runc-rhcos10-url-guard   rendered-runc-rhcos10-url-guard-f5fda4af0f20a4b3730f310ab6872455   True      False      True       1              1                   1                     0                      13m
worker                   rendered-worker-d9ebef8334286167793a17b434063a31                   True      False      False      2              2                   2                     0                      2d17h
➜  origin git:(4623) ✗ oc get mcp runc-rhcos10-url-guard -o jsonpath='RenderDegraded={.status.conditions[?(@.type=="RenderDegraded")].status}{"\n"}message={.status.conditions[?(@.type=="RenderDegraded")].message}{"\n"}'

RenderDegraded=True
message=Failed to render configuration for pool runc-rhcos10-url-guard: MachineConfigPool runc-rhcos10-url-guard targets a RHEL 10 OS image where runc is not available. To unblock, migrate to crun by removing any ContainerRuntimeConfig that sets defaultRuntime to runc, and removing any MachineConfig that sets default_runtime = "runc" in CRI-O configuration under /etc/crio/crio.conf.d/

 ✗ oc get osimagestream cluster -o jsonpath='{.status.availableStreams[?(@.name=="rhel-10")].osImage}'
quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:39d4d454b533dce8f48303dc13e8a9a5fc08c7729dc8a7bcb84f505b13da052c%

Full test logs has been documented here: https://redhat.atlassian.net/browse/OCPNODE-4614

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

Copy link
Copy Markdown
Contributor

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

Details

In response to this:

/verified by @asahay19

I have verified that via OSImageURL stream , gurad is getting triggered and upgrade is blocked when default container runtime is runc.

✗ oc get mcp runc-osimageurl-guard
NAME                    CONFIG                                                            UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
runc-osimageurl-guard   rendered-runc-osimageurl-guard-ff0ca83d3065a61b546b169ccfbdb651   True      False      True       1              1                   1                     0                      16m

✗ oc get mcp runc-osimageurl-guard -o jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.message}{"\n"}{end}'
PinnedImageSetsDegraded	False
NodeDegraded	False
Updated	True	All nodes are updated with MachineConfig rendered-runc-osimageurl-guard-ff0ca83d3065a61b546b169ccfbdb651
Updating	False
RenderDegraded	True	Failed to render configuration for pool runc-osimageurl-guard: could not generate rendered MachineConfig: cannot override MachineConfig osImageURL and set MachineConfigPool spec.osImageStream.name simultaneously
Degraded	True

Full test logs has been documented here: https://redhat.atlassian.net/browse/OCPNODE-4614

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.

@asahay19

Copy link
Copy Markdown

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 25, 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

openshift-ci Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: asahay19, bitoku, pablintino

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-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD a610b27 and 2 for PR HEAD 08f5b4e in total

@asahay19

Copy link
Copy Markdown

/retest-required

@asahay19

Copy link
Copy Markdown

/test bootstrap-unit

@openshift-ci

openshift-ci Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

@bitoku: 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 3b4a5c7 into openshift:main Jul 26, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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