Skip to content

CNTRLPLANE-3840: Remove ExternalTopologyMode guard from OSImageStream bootstrap - #6308

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
jparrill:CNTRLPLANE-3840
Jul 23, 2026
Merged

CNTRLPLANE-3840: Remove ExternalTopologyMode guard from OSImageStream bootstrap#6308
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
jparrill:CNTRLPLANE-3840

Conversation

@jparrill

@jparrill jparrill commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Remove the ExternalTopologyMode guard in pkg/controller/bootstrap/bootstrap.go that prevented HyperShift from consuming OSImageStream during node bootstrapping
  • Update TestBootstrapRunHypershift to table-driven format covering both feature gate enabled and disabled scenarios

Context

The guard was added by MCO-2146 (PR #5750) because HyperShift did not yet write stream selection into the synthetic MachineConfigPool. Now that HyperShift writes 99_osimagestream.yaml into the MCC template directory (openshift/hypershift#8792), the guard is no longer needed.

Note: The OSStreams feature gate is currently enabled for the Hypershift cluster profile only in TechPreviewNoUpgrade and DevPreviewNoUpgrade (openshift/api features.go:927). Enabling it in Default for Hypershift requires a separate change in openshift/api. This PR is a prerequisite — without it, the guard would block OSImageStream processing even after the feature gate is promoted.

Jira: https://redhat.atlassian.net/browse/CNTRLPLANE-3840

Test plan

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes
    • OS image streams are now enabled based solely on the OS image stream feature gate, removing the prior special-case restriction for deployments using external topology.
    • Machine configuration templates now correctly use the expected base OS image values when OS image streams are enabled.
  • Tests
    • Expanded and reorganized coverage with table-driven scenarios to verify OS image stream enablement and the resulting machine configuration output, including cases with feature-gate overrides.

@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 openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 15, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@jparrill: This pull request references CNTRLPLANE-3840 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:

Summary

  • Remove the ExternalTopologyMode guard in pkg/controller/bootstrap/bootstrap.go that prevented HyperShift from consuming OSImageStream during node bootstrapping
  • Update TestBootstrapRunHypershift to table-driven format covering both feature gate enabled and disabled scenarios

Context

The guard was added by MCO-2146 (PR #5750) because HyperShift did not yet write stream selection into the synthetic MachineConfigPool. Now that HyperShift writes 99_osimagestream.yaml into the MCC template directory (openshift/hypershift#8792), the guard is no longer needed.

Note: The OSStreams feature gate is currently enabled for the Hypershift cluster profile only in TechPreviewNoUpgrade and DevPreviewNoUpgrade (openshift/api features.go:927). Enabling it in Default for Hypershift requires a separate change in openshift/api. This PR is a prerequisite — without it, the guard would block OSImageStream processing even after the feature gate is promoted.

Jira: https://redhat.atlassian.net/browse/CNTRLPLANE-3840

Test plan

🤖 Generated with Claude Code

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

@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Walkthrough

Bootstrap now enables OSImageStreams solely from the feature gate and selects a ControllerConfig release image when no Release ImageStream is available. Table-driven HyperShift tests cover both paths.

Changes

OSImageStream bootstrap behavior

Layer / File(s) Summary
Feature-gated OSImageStream enablement
pkg/controller/bootstrap/bootstrap.go, pkg/controller/bootstrap/bootstrap_test.go
OSImageStreams are enabled whenever the feature gate is active, with test fixtures and factory-call tracking added for HyperShift scenarios.
Release image fallback validation
pkg/controller/bootstrap/bootstrap.go, pkg/controller/bootstrap/bootstrap_test.go
Creation uses ReleaseImageStream when supplied and otherwise uses ControllerConfig.Spec.ReleaseImage; tests verify the selected options and rendered controller fields.

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

Possibly related PRs

Suggested labels: verified

Suggested reviewers: proietfb, sergiordlr, pablintino

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 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 New subtest names are static strings; no generated IDs, timestamps, node/namespace/IP values, or other run-dependent data appear in titles.
Test Structure And Quality ✅ Passed The rewritten test is table-driven, uses t.TempDir cleanup, has no cluster waits/resources, and keeps assertions focused on OSStreams behavior.
Microshift Test Compatibility ✅ Passed PASS: The PR only changes plain Go unit tests in pkg/controller/bootstrap; no Ginkgo e2e specs or MicroShift-gated cluster tests were added.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the changes are unit tests in pkg/controller/bootstrap, so SNO-specific multi-node compatibility is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed Only bootstrap logic/tests changed; no node selectors, affinity, spread constraints, replicas, or PDBs were introduced, so no topology-specific scheduling risk.
Ote Binary Stdout Contract ✅ Passed Changed files add no main/init/TestMain/suite setup or stdout logging; bootstrap.go and bootstrap_test.go contain no process-level stdout writes.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PASS: The PR only changes Go unit tests/bootstrap logic; no new Ginkgo e2e tests or IPv4/external-network assumptions were introduced.
No-Weak-Crypto ✅ Passed The PR only changes OSImageStream bootstrap logic and tests; no MD5/SHA1/DES/RC4/3DES/Blowfish, ECB, custom crypto, or secret comparisons were added.
Container-Privileges ✅ Passed The PR only changes bootstrap OSImageStream logic and tests; the diff adds no privileged/hostNetwork/hostPID/hostIPC/SYS_ADMIN/allowPrivilegeEscalation settings.
No-Sensitive-Data-In-Logs ✅ Passed No new log statements were added or modified; the diff only changes bootstrap logic and test assertions, with no sensitive data emitted to logs.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change by removing the ExternalTopologyMode guard from OSImageStream bootstrap.
✨ 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 requested review from proietfb and sergiordlr July 15, 2026 10:09
@enxebre

enxebre commented Jul 15, 2026

Copy link
Copy Markdown
Member

/lgtm

@enxebre

enxebre commented Jul 15, 2026

Copy link
Copy Markdown
Member

ptal @pablintino @yuqi-zhang

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

@pablintino

Copy link
Copy Markdown
Contributor

/approve
/hold
Holding to make sure this one is coordinated with openshift/hypershift#8792

@openshift-ci openshift-ci Bot added do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Jul 15, 2026
@jparrill

Copy link
Copy Markdown
Contributor Author

/retest

@jparrill

Copy link
Copy Markdown
Contributor Author

/hold cancel
Hey @pablintino yes it is :). Thanks for keeping an eye on it 🙏

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 20, 2026
@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

Lookup failure:

ReconciliationError(critical error: failed to get controlPlaneOperatorImageLabels:
failed to look up image metadata for quay-proxy.ci.openshift.org/openshift/ci@sha256:1461d2da...:
manifest unknown: manifest unknown

@sdminonne

Copy link
Copy Markdown

/retest-required

@jparrill

Copy link
Copy Markdown
Contributor Author

e2e-hypershift failure is not caused by this PR. Evidence:

  1. Our code doesn't execute in this CI run. The OSStreams feature gate is not active — zero mentions of "OSStream" or "osimage" in the build log. The e2e-hypershift job uses the Default featureset, and OSStreams is only enabled for the Hypershift cluster profile in TechPreview/DevPreview (openshift/api features.go:927). Our change is inside if osimagestream.IsFeatureEnabled(fgHandler) which returns false — the modified code path is never reached.

  2. The other HC in the same run passed. TestUpgradeControlPlane uses the same MCO bootstrap with our change and passed all subtests (3006s). If our change broke bootstrap, both HCs would fail.

  3. The failure is TCP-level networking, not bootstrap. dial tcp 100.50.108.26:443: i/o timeout — the guest API server is unreachable. Bootstrap/MCO rendering issues would show as config errors, not TCP timeouts.

  4. Same BaseSHA passes on other PRs. PRs MCO-2424: Fix cert rotation timeout #6309 and OCPBUGS-98745: MCO-2424: add missing RBAC for pkis resource in MCC ClusterRole #6307 (same BaseSHA 9d62fc7) passed e2e-hypershift successfully.

/retest

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@enxebre

enxebre commented Jul 20, 2026

Copy link
Copy Markdown
Member

https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/pr-logs/pull/openshift_machine-config-operator/6308/pull-ci-openshift-machine-config-operator-main-e2e-hypershift/2079229957497688064/artifacts/e2e-hypershift/hypershift-aws-run-e2e-external/artifacts/TestCreateCluster/namespaces/e2e-clusters-6f5rx-create-cluster-6k6pw/core/pods/logs/ignition-server-579fbfdcd5-nqp5h-ignition-server.log

ShortCertRotation]\nF0720 18:10:03.479367     199 bootstrap.go:47] error running MCC[BOOTSTRAP]: error inspecting available OSImageStreams: one of ReleaseImageStream or ReleaseImage must be specified\n"}
{"level":"error","ts":"2026-07-20T18:10:03Z","msg":"Reconciler error","controller":"secret","controllerGroup":"","controllerKind":"Secret","Secret":{"name":"token-create-cluster-6k6pw-us-east-1a-bc4259e1","namespace":"e2e-clusters-6f5rx-create-cluster-6k6pw"},"namespace":"e2e-clusters-6f5rx-create-cluster-6k6pw","name":"token-create-cluster-6k6pw-us-east-1a-bc4259e1","reconcileID":"833e5217-0ad2-4660-a4df-f50d1033c657","error":"failed to generate payload: error getting ignition payload: failed to execute machine-config-controller: machine-config-controller process failed: exit status 255","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.

@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jul 21, 2026
@jparrill

Copy link
Copy Markdown
Contributor Author

/retest

@jparrill

Copy link
Copy Markdown
Contributor Author

/test e2e-hypershift

1 similar comment
@jparrill

Copy link
Copy Markdown
Contributor Author

/test e2e-hypershift

@jparrill

Copy link
Copy Markdown
Contributor Author

/label acknowledge-critical-fixes-only

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

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: enxebre, jparrill, 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

@jparrill

jparrill commented Jul 22, 2026

Copy link
Copy Markdown
Contributor Author

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

Copy link
Copy Markdown
Contributor

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

Details

In response to this:

/verified by e2e

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

@jparrill

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

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required
Infra issues again...

* Container test is not ready with reason ImagePullBackOff and message Back-off pulling image "quay-proxy.ci.openshift.org/openshift/ci@sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae": ErrImagePull: unable to pull image or OCI artifact: pull image err: initializing source docker://quay-proxy.ci.openshift.org/openshift/ci@sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae: (Mirrors also failed: [quay.io/openshift/ci@sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae: reading manifest sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae in quay.io/openshift/ci: manifest unknown]): quay-proxy.ci.openshift.org/openshift/ci@sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae: reading manifest sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae in quay-proxy.ci.openshift.org/openshift/ci: manifest unknown; artifact err: get manifest: build image source: (Mirrors also failed: [quay.io/openshift/ci@sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae: reading manifest sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae in quay.io/openshift/ci: manifest unknown]): quay-proxy.ci.openshift.org/openshift/ci@sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae: reading manifest sha256:525c0e3bfe9d311dab9c839397625ddb5bee0017f8e5b83ec6f8a80b633b93ae in quay-proxy.ci.openshift.org/openshift/ci: manifest unknown

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 067b924 and 2 for PR HEAD 9278288 in total

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

@jparrill: 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 2c2abc8 into openshift:main Jul 23, 2026
17 checks passed
jparrill added a commit to jparrill/hypershift that referenced this pull request Jul 24, 2026
…boot images

Replace hardcoded StreamRHEL9 with dynamic resolution via
getRHELStreamForBootImage across all platform controllers (AWS,
OpenStack, KubeVirt) and the central ConfigGenerator.

With MCO PR openshift/machine-config-operator#6308 merged and the
OSStreams feature gate promoted to Default for Hypershift
(openshift/api#2950), the MCO can now process OSImageStream during
bootstrap. NodePools can resolve the correct RHEL stream (9 or 10)
based on release version, explicit spec.osImageStream, and container
runtime configuration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
jparrill added a commit to jparrill/hypershift that referenced this pull request Jul 24, 2026
…boot images

Replace hardcoded StreamRHEL9 with dynamic resolution via
getRHELStreamForBootImage across all platform controllers (AWS,
OpenStack, KubeVirt) and the central ConfigGenerator.

With MCO PR openshift/machine-config-operator#6308 merged and the
OSStreams feature gate promoted to Default for Hypershift
(openshift/api#2950), the MCO can now process OSImageStream during
bootstrap. NodePools can resolve the correct RHEL stream (9 or 10)
based on release version, explicit spec.osImageStream, and container
runtime configuration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
jparrill added a commit to jparrill/hypershift that referenced this pull request Jul 28, 2026
…boot images

Replace hardcoded StreamRHEL9 with dynamic resolution via
getRHELStreamForBootImage across all platform controllers (AWS,
OpenStack, KubeVirt) and the central ConfigGenerator.

With MCO PR openshift/machine-config-operator#6308 merged and the
OSStreams feature gate promoted to Default for Hypershift
(openshift/api#2950), the MCO can now process OSImageStream during
bootstrap. NodePools can resolve the correct RHEL stream (9 or 10)
based on release version, explicit spec.osImageStream, and container
runtime configuration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
jparrill added a commit to jparrill/hypershift that referenced this pull request Jul 29, 2026
…boot images

Replace hardcoded StreamRHEL9 with dynamic resolution via
getRHELStreamForBootImage across all platform controllers (AWS,
OpenStack, KubeVirt) and the central ConfigGenerator.

With MCO PR openshift/machine-config-operator#6308 merged and the
OSStreams feature gate promoted to Default for Hypershift
(openshift/api#2950), the MCO can now process OSImageStream during
bootstrap. NodePools can resolve the correct RHEL stream (9 or 10)
based on release version, explicit spec.osImageStream, and container
runtime configuration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
sdodson pushed a commit to jparrill/openshift-api that referenced this pull request Aug 12, 2026
…Hypershift

With the MCO ExternalTopologyMode guard removed
(openshift/machine-config-operator#6308), HyperShift clusters can now
process OSImageStream during bootstrap. This graduates the OSStreams
feature gate from TechPreviewNoUpgrade to Default for the Hypershift
cluster profile, enabling RHEL 9/10 dual-stream support for hosted
control planes by default.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
sdodson pushed a commit to jparrill/openshift-api that referenced this pull request Aug 12, 2026
…Hypershift

With the MCO ExternalTopologyMode guard removed
(openshift/machine-config-operator#6308), HyperShift clusters can now
process OSImageStream during bootstrap. This graduates the OSStreams
feature gate from TechPreviewNoUpgrade to Default for the Hypershift
cluster profile, enabling RHEL 9/10 dual-stream support for hosted
control planes by default.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED
jparrill added a commit to jparrill/openshift-api that referenced this pull request Aug 13, 2026
…Hypershift

With the MCO ExternalTopologyMode guard removed
(openshift/machine-config-operator#6308), HyperShift clusters can now
process OSImageStream during bootstrap. This graduates the OSStreams
feature gate from TechPreviewNoUpgrade to Default for the Hypershift
cluster profile, enabling RHEL 9/10 dual-stream support for hosted
control planes by default.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED

Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
sdodson pushed a commit to openshift/api that referenced this pull request Aug 17, 2026
…Hypershift

With the MCO ExternalTopologyMode guard removed
(openshift/machine-config-operator#6308), HyperShift clusters can now
process OSImageStream during bootstrap. This graduates the OSStreams
feature gate from TechPreviewNoUpgrade to Default for the Hypershift
cluster profile, enabling RHEL 9/10 dual-stream support for hosted
control planes by default.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED

Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
sdodson pushed a commit to openshift/api that referenced this pull request Aug 20, 2026
…Hypershift

With the MCO ExternalTopologyMode guard removed
(openshift/machine-config-operator#6308), HyperShift clusters can now
process OSImageStream during bootstrap. This graduates the OSStreams
feature gate from TechPreviewNoUpgrade to Default for the Hypershift
cluster profile, enabling RHEL 9/10 dual-stream support for hosted
control planes by default.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED

Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
openshift-merge-bot Bot pushed a commit to openshift/api that referenced this pull request Aug 21, 2026
…Hypershift

With the MCO ExternalTopologyMode guard removed
(openshift/machine-config-operator#6308), HyperShift clusters can now
process OSImageStream during bootstrap. This graduates the OSStreams
feature gate from TechPreviewNoUpgrade to Default for the Hypershift
cluster profile, enabling RHEL 9/10 dual-stream support for hosted
control planes by default.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>

rh-pre-commit.version: 2.4.0
rh-pre-commit.check-secrets: ENABLED

Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
vsolanki12 pushed a commit to vsolanki12/hypershift that referenced this pull request Aug 25, 2026
…boot images

Replace hardcoded StreamRHEL9 with dynamic resolution via
getRHELStreamForBootImage across all platform controllers (AWS,
OpenStack, KubeVirt) and the central ConfigGenerator.

With MCO PR openshift/machine-config-operator#6308 merged and the
OSStreams feature gate promoted to Default for Hypershift
(openshift/api#2950), the MCO can now process OSImageStream during
bootstrap. NodePools can resolve the correct RHEL stream (9 or 10)
based on release version, explicit spec.osImageStream, and container
runtime configuration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
rutvik23 pushed a commit to rutvik23/hypershift that referenced this pull request Aug 26, 2026
…boot images

Replace hardcoded StreamRHEL9 with dynamic resolution via
getRHELStreamForBootImage across all platform controllers (AWS,
OpenStack, KubeVirt) and the central ConfigGenerator.

With MCO PR openshift/machine-config-operator#6308 merged and the
OSStreams feature gate promoted to Default for Hypershift
(openshift/api#2950), the MCO can now process OSImageStream during
bootstrap. NodePools can resolve the correct RHEL stream (9 or 10)
based on release version, explicit spec.osImageStream, and container
runtime configuration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

acknowledge-critical-fixes-only Indicates if the issuer of the label is OK with the policy. 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.

6 participants