Skip to content

CNTRLPLANE-3871: resolve RHEL stream dynamically for boot images#9099

Open
jparrill wants to merge 3 commits into
openshift:mainfrom
jparrill:CNTRLPLANE-3871
Open

CNTRLPLANE-3871: resolve RHEL stream dynamically for boot images#9099
jparrill wants to merge 3 commits into
openshift:mainfrom
jparrill:CNTRLPLANE-3871

Conversation

@jparrill

@jparrill jparrill commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Replace hardcoded StreamRHEL9 with dynamic resolution via GetRHELStreamForBootImage across all platform controllers (AWS, OpenStack, KubeVirt, PowerVS) and the central ConfigGenerator
  • Move RHEL stream resolution inside NewConfigGenerator, eliminating redundant calls from token(), secretJanitor, conditions, and karpenter
  • Export GetRHELStreamForBootImage for cross-package use (karpenter-operator)
  • Set NodePoolValidPlatformImageType=False on stream resolution errors to prevent stale conditions
  • Consolidate all osImageStream E2E tests under nodepool-osimagestream label with lifecycle so they only run in the dedicated e2e-v2-aws-techpreview-osimagestream job (TODO: remove after FG graduation)
  • Move osImageStream post-upgrade verification from upgrade tests into nodepool_osimagestream_test.go
  • Fix NodePoolOSImageStreamExplicitDefaultNoRolloutTest: create dedicated NodePool instead of mutating default (osImageStream is immutable once set — CEL prevents removal)
  • Add unit tests for setPlatformConditions, setOpenStackConditions, setPowerVSconditions, setKubevirtConditions, and validMachineConfigCondition
  • Remove all TODO([CNTRLPLANE-3553](https://redhat.atlassian.net/browse/CNTRLPLANE-3553)) and TODO([CNTRLPLANE-3032](https://redhat.atlassian.net/browse/CNTRLPLANE-3032)) comments

Dependency chain

  1. openshift/release#82438 → registers e2e-v2-aws-techpreview-osimagestream job (must merge first)
  2. This PR → removes hardcode + consolidates osImageStream tests under dedicated job
  3. openshift/api#2950 → graduates OSStreams FG to Default for Hypershift
  4. After Future Release Branches Frozen For Merging | branch:release-4.8 branch:release-4.7 #3 merges → remove lifecycle label, temporary CI job, and move tests back to e2e-v2-aws

Already merged

Fixes

🤖 Generated with Claude Code

@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 24, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 24, 2026

Copy link
Copy Markdown

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

  • Replace hardcoded StreamRHEL9 with dynamic resolution via getRHELStreamForBootImage across all platform controllers (AWS, OpenStack, KubeVirt) and the central ConfigGenerator
  • Remove TODO([CNTRLPLANE-3553](https://redhat.atlassian.net/browse/CNTRLPLANE-3553)) comments — the MCO guard removal (openshift/machine-config-operator#6308) and OSStreams feature gate promotion (openshift/api#2950) make dynamic resolution safe
  • NodePools now resolve the correct RHEL stream (9 or 10) based on release version, explicit spec.osImageStream, and container runtime configuration

Fixes

🤖 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 24, 2026

Copy link
Copy Markdown
Contributor

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

Walkthrough

NodePool reconciliation now resolves the RHEL stream for the boot image and passes it to platform condition handling, configuration generation, token creation, and secret janitor reconciliation. AWS, KubeVirt, PowerVS, and OpenStack image selection use the resolved stream instead of hardcoded RHEL 9. Resolution failures return wrapped errors, and tests cover stream resolution and invalid OS image stream validation.

Sequence Diagram(s)

sequenceDiagram
  participant NodePoolReconciler
  participant GetRHELStreamForBootImage
  participant PlatformImageDiscovery
  participant NewConfigGenerator
  NodePoolReconciler->>GetRHELStreamForBootImage: resolve boot-image RHEL stream
  GetRHELStreamForBootImage-->>NodePoolReconciler: resolved stream or error
  NodePoolReconciler->>PlatformImageDiscovery: select image with resolved stream
  NodePoolReconciler->>NewConfigGenerator: generate config with resolved stream
Loading

Suggested reviewers: muraee, sdminonne

🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
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 The changed test files use static t.Run names; no It/Describe/When titles with dynamic or generated values were added.
Test Structure And Quality ✅ Passed Changed tests are table-driven unit tests using fake clients; no Ginkgo blocks, waits, or resource cleanup issues were introduced, and patterns match the repo.
Topology-Aware Scheduling Compatibility ✅ Passed The PR only changes RHEL-stream resolution and config generation; no new pod scheduling constraints, replica logic, or topology assumptions were introduced.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e specs were added; the changed files are controller/unit tests only and show no IPv4-only or external connectivity assumptions.
No-Weak-Crypto ✅ Passed PR only adds RHEL-stream plumbing; scans found no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB or secret/token comparisons, and HashSimple is FNV-1a naming hash.
Container-Privileges ✅ Passed PR only changes Go controller logic; no manifest/securityContext diffs or privilege-related settings were introduced.
No-Sensitive-Data-In-Logs ✅ Passed No added logs expose passwords, tokens, PII, or customer data; new stream-resolution errors only mention versions/config-map names.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: dynamic RHEL stream resolution for boot images.
✨ 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 approved Indicates a PR has been approved by an approver from all required OWNERS files. area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform and removed do-not-merge/needs-area labels Jul 24, 2026
@jparrill

Copy link
Copy Markdown
Contributor Author

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

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 2

🧹 Nitpick comments (1)
hypershift-operator/controllers/nodepool/openstack.go (1)

53-56: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Avoid introducing an outer err that downstream code shadows.

Use a name such as resolveErr for this lookup. The new function-scope err makes the existing short declarations inside the conditional shadow error variables, contrary to the Go shadowing guideline.

🤖 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 `@hypershift-operator/controllers/nodepool/openstack.go` around lines 53 - 56,
Rename the error variable returned by getRHELStreamForBootImage in the
surrounding function from err to resolveErr, and update the immediately
following error check to use resolveErr. Leave downstream err declarations and
handling unchanged.

Source: Coding guidelines

🤖 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 `@hypershift-operator/controllers/nodepool/aws.go`:
- Around line 364-367: Set the NodePoolValidPlatformImageType condition to false
before returning the stream-resolution error in the resolver error branches of
hypershift-operator/controllers/nodepool/aws.go:364-367,
hypershift-operator/controllers/nodepool/kubevirt.go:68-71, and
hypershift-operator/controllers/nodepool/openstack.go:53-56. Preserve the
existing wrapped error returns and match the adjacent image-discovery failure
handling.

In `@hypershift-operator/controllers/nodepool/openstack.go`:
- Around line 53-56: Update the error path after getRHELStreamForBootImage in
the OpenStack reconciliation flow to preserve the invalid-image status update,
setting NodePoolValidPlatformImageType=False before returning the wrapped error.
Keep the existing error context and ensure status-update failures are handled
consistently with the surrounding reconciliation logic.

---

Nitpick comments:
In `@hypershift-operator/controllers/nodepool/openstack.go`:
- Around line 53-56: Rename the error variable returned by
getRHELStreamForBootImage in the surrounding function from err to resolveErr,
and update the immediately following error check to use resolveErr. Leave
downstream err declarations and handling unchanged.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: c8cbd061-1f36-4461-824a-b23dd16eb83b

📥 Commits

Reviewing files that changed from the base of the PR and between 144cca9 and 76adca8.

📒 Files selected for processing (4)
  • hypershift-operator/controllers/nodepool/aws.go
  • hypershift-operator/controllers/nodepool/config.go
  • hypershift-operator/controllers/nodepool/kubevirt.go
  • hypershift-operator/controllers/nodepool/openstack.go

Comment thread hypershift-operator/controllers/nodepool/aws.go Outdated
Comment thread hypershift-operator/controllers/nodepool/openstack.go Outdated
@codecov

codecov Bot commented Jul 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 56.75676% with 16 lines in your changes missing coverage. Please review.
✅ Project coverage is 44.59%. Comparing base (144cca9) to head (344c616).
⚠️ Report is 5 commits behind head on main.

Files with missing lines Patch % Lines
...erator/controllers/nodepool/nodepool_controller.go 0.00% 12 Missing ⚠️
hypershift-operator/controllers/nodepool/config.go 66.66% 2 Missing and 1 partial ⚠️
...ershift-operator/controllers/nodepool/openstack.go 66.66% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #9099      +/-   ##
==========================================
+ Coverage   44.51%   44.59%   +0.07%     
==========================================
  Files         774      774              
  Lines       96997    96997              
==========================================
+ Hits        43179    43256      +77     
+ Misses      50830    50746      -84     
- Partials     2988     2995       +7     
Files with missing lines Coverage Δ
hypershift-operator/controllers/nodepool/aws.go 80.11% <100.00%> (-0.12%) ⬇️
...rshift-operator/controllers/nodepool/conditions.go 58.59% <100.00%> (+3.04%) ⬆️
...pershift-operator/controllers/nodepool/kubevirt.go 12.41% <100.00%> (+12.41%) ⬆️
...pershift-operator/controllers/nodepool/osstream.go 82.69% <100.00%> (ø)
...ypershift-operator/controllers/nodepool/powervs.go 22.43% <100.00%> (+11.11%) ⬆️
hypershift-operator/controllers/nodepool/token.go 82.04% <ø> (-0.12%) ⬇️
...ershift-operator/controllers/nodepool/openstack.go 22.54% <66.66%> (+22.54%) ⬆️
hypershift-operator/controllers/nodepool/config.go 83.07% <66.66%> (-1.22%) ⬇️
...erator/controllers/nodepool/nodepool_controller.go 43.91% <0.00%> (-0.53%) ⬇️
Flag Coverage Δ
cmd-support 38.39% <ø> (ø)
cpo-hostedcontrolplane 47.22% <ø> (ø)
cpo-other 45.25% <ø> (ø)
hypershift-operator 54.75% <56.75%> (+0.30%) ⬆️
other 32.64% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sdminonne

Copy link
Copy Markdown
Contributor

@sdminonne sdminonne 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.

Duplicate getRHELStreamForBootImage call per reconcile

This PR introduces two calls to getRHELStreamForBootImage in the same reconcile loop:

  1. setPlatformConditions → e.g. setAWSConditionsgetRHELStreamForBootImage (nodepool_controller.go:367)
  2. NewConfigGeneratorgetRHELStreamForBootImage (nodepool_controller.go:380)

Before this PR there was no duplication — both sites used the hardcoded StreamRHEL9 constant. Now each call parses the release version, does client.Get for every ConfigMap in nodePool.Spec.Config to detect runc, then calls GetRHELStream.

It's not expensive per se, but it's unnecessary redundancy. Consider computing the resolved stream once and threading it through (e.g. passing it to NewConfigGenerator or storing it on the reconciler context), or at minimum noting it as a follow-up.

…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>

@coderabbitai coderabbitai Bot 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.

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 `@hypershift-operator/controllers/nodepool/aws_test.go`:
- Around line 1167-1184: Update the invalid osImageStream test case to set
expectedCondType and the corresponding expected condition reason/message for
ValidPlatformImage, so it verifies the image-invalid condition rather than only
expectError. Adjust setAWSConditions to emit that condition consistently when
the release image is incompatible with the requested stream.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 34a9184f-0551-44d1-97ff-8d43f2385eec

📥 Commits

Reviewing files that changed from the base of the PR and between 76adca8 and ef073d3.

📒 Files selected for processing (5)
  • hypershift-operator/controllers/nodepool/aws.go
  • hypershift-operator/controllers/nodepool/aws_test.go
  • hypershift-operator/controllers/nodepool/config.go
  • hypershift-operator/controllers/nodepool/kubevirt.go
  • hypershift-operator/controllers/nodepool/openstack.go
🚧 Files skipped from review as they are similar to previous changes (4)
  • hypershift-operator/controllers/nodepool/openstack.go
  • hypershift-operator/controllers/nodepool/kubevirt.go
  • hypershift-operator/controllers/nodepool/aws.go
  • hypershift-operator/controllers/nodepool/config.go

Comment thread hypershift-operator/controllers/nodepool/aws_test.go

@coderabbitai coderabbitai Bot 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.

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 `@hypershift-operator/controllers/nodepool/kubevirt.go`:
- Around line 68-79: The KubeVirt reconciliation path currently resolves the
RHEL stream before determining whether it is needed. Update the flow around
getRHELStreamForBootImage and kubevirt.GetImage to skip stream resolution for
explicit KubeVirt container images, while preserving resolution for the
default-image path; ensure valid explicit images are not marked invalid when
resolution would fail. Add a regression test covering an explicit image with a
resolver failure.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 93871049-168c-4cff-8b28-fa26190818c6

📥 Commits

Reviewing files that changed from the base of the PR and between ef073d3 and 3409314.

📒 Files selected for processing (5)
  • hypershift-operator/controllers/nodepool/aws.go
  • hypershift-operator/controllers/nodepool/aws_test.go
  • hypershift-operator/controllers/nodepool/config.go
  • hypershift-operator/controllers/nodepool/kubevirt.go
  • hypershift-operator/controllers/nodepool/openstack.go
🚧 Files skipped from review as they are similar to previous changes (4)
  • hypershift-operator/controllers/nodepool/openstack.go
  • hypershift-operator/controllers/nodepool/aws_test.go
  • hypershift-operator/controllers/nodepool/config.go
  • hypershift-operator/controllers/nodepool/aws.go

Comment thread hypershift-operator/controllers/nodepool/kubevirt.go Outdated
@openshift-ci openshift-ci Bot added the area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform label Jul 24, 2026

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 2

🤖 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 `@hypershift-operator/controllers/nodepool/conditions.go`:
- Around line 387-390: When getRHELStreamForBootImage returns an error in the
condition-building flow, set NodePoolValidPlatformImageType to False before
returning the wrapped error so any previous True condition is cleared; add a
regression test covering this failure path and asserting the condition state.

In `@hypershift-operator/controllers/nodepool/config_test.go`:
- Around line 466-474: Update the successful test cases in the config generator
test around NewConfigGenerator to assert that cg.resolvedRHELStreamForBootImage
equals the resolvedStream value passed to the generator. Keep the assertion
focused on propagation and retain the existing hash-based checks.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 16dd596c-4fdc-4043-90e3-91b5faf68222

📥 Commits

Reviewing files that changed from the base of the PR and between 3409314 and c898dcb.

📒 Files selected for processing (10)
  • hypershift-operator/controllers/nodepool/aws.go
  • hypershift-operator/controllers/nodepool/aws_test.go
  • hypershift-operator/controllers/nodepool/conditions.go
  • hypershift-operator/controllers/nodepool/config.go
  • hypershift-operator/controllers/nodepool/config_test.go
  • hypershift-operator/controllers/nodepool/kubevirt.go
  • hypershift-operator/controllers/nodepool/nodepool_controller.go
  • hypershift-operator/controllers/nodepool/openstack.go
  • hypershift-operator/controllers/nodepool/powervs.go
  • hypershift-operator/controllers/nodepool/secret_janitor.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • hypershift-operator/controllers/nodepool/aws_test.go

Comment thread hypershift-operator/controllers/nodepool/conditions.go Outdated
Comment thread hypershift-operator/controllers/nodepool/config_test.go Outdated
@openshift-ci openshift-ci Bot added the area/karpenter-operator Indicates the PR includes changes related to the Karpenter operator label Jul 24, 2026

@coderabbitai coderabbitai Bot 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.

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 `@hypershift-operator/controllers/nodepool/nodepool_controller.go`:
- Around line 367-372: Update the reconciliation flow around
GetRHELStreamForBootImage and setPlatformConditions so stream-resolution
failures still invoke setPlatformConditions and preserve the
NodePoolValidPlatformImageType=False status update. Retain the resolution error
for the final reconciliation result while ensuring successful resolution
continues passing resolvedRHELStream to downstream generation.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 3f8809ff-f5b9-4c35-bcaf-e9b5e6f7e947

📥 Commits

Reviewing files that changed from the base of the PR and between c898dcb and fa81589.

📒 Files selected for processing (13)
  • hypershift-operator/controllers/nodepool/aws.go
  • hypershift-operator/controllers/nodepool/aws_test.go
  • hypershift-operator/controllers/nodepool/conditions.go
  • hypershift-operator/controllers/nodepool/config.go
  • hypershift-operator/controllers/nodepool/config_test.go
  • hypershift-operator/controllers/nodepool/kubevirt.go
  • hypershift-operator/controllers/nodepool/nodepool_controller.go
  • hypershift-operator/controllers/nodepool/openstack.go
  • hypershift-operator/controllers/nodepool/osstream.go
  • hypershift-operator/controllers/nodepool/osstream_test.go
  • hypershift-operator/controllers/nodepool/powervs.go
  • hypershift-operator/controllers/nodepool/secret_janitor.go
  • karpenter-operator/controllers/karpenterignition/karpenterignition_controller.go
🚧 Files skipped from review as they are similar to previous changes (8)
  • hypershift-operator/controllers/nodepool/kubevirt.go
  • hypershift-operator/controllers/nodepool/powervs.go
  • hypershift-operator/controllers/nodepool/secret_janitor.go
  • hypershift-operator/controllers/nodepool/aws.go
  • hypershift-operator/controllers/nodepool/conditions.go
  • hypershift-operator/controllers/nodepool/config_test.go
  • hypershift-operator/controllers/nodepool/aws_test.go
  • hypershift-operator/controllers/nodepool/config.go

Comment thread hypershift-operator/controllers/nodepool/nodepool_controller.go
@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.

@bryan-cox

Copy link
Copy Markdown
Member

/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-aks-4-22
/test e2e-aws-4-22
/test e2e-aks
/test e2e-aws
/test e2e-aws-upgrade-hypershift-operator
/test e2e-azure-v2-self-managed
/test e2e-kubevirt-aws-ovn-reduced
/test e2e-v2-aws
/test e2e-v2-gke
/test unit
/test verify

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@cwbotbot

cwbotbot commented Jul 24, 2026

Copy link
Copy Markdown

Test Results

e2e-aws

Failed Tests

Total failed tests: 5

  • TestCreateCluster
  • TestCreateCluster/Main
  • TestCreateCluster/Main/EnsureGlobalPullSecret
  • TestCreateCluster/Main/EnsureGlobalPullSecret/Check_if_the_on-disk_kubelet_config.json_matches_the_cluster_pull_secret
  • TestCreateCluster/Main/EnsureGlobalPullSecret/Wait_for_critical_DaemonSets_to_be_ready_-_first_check

e2e-aks

@bryan-cox

Copy link
Copy Markdown
Member

/retest

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 144cca9 and 2 for PR HEAD b7a1ff3 in total

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

1 similar comment
@bryan-cox

Copy link
Copy Markdown
Member

/retest-required

@bryan-cox

Copy link
Copy Markdown
Member

/retest

@jparrill

Copy link
Copy Markdown
Contributor Author

/retest-required

@openshift-ci-robot openshift-ci-robot removed the verified Signifies that the PR passed pre-merge verification criteria label Jul 25, 2026
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jul 25, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 25, 2026

Copy link
Copy Markdown

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

  • Replace hardcoded StreamRHEL9 with dynamic resolution via GetRHELStreamForBootImage across all platform controllers (AWS, OpenStack, KubeVirt, PowerVS) and the central ConfigGenerator
  • Move RHEL stream resolution inside NewConfigGenerator, eliminating redundant calls from token(), secretJanitor, conditions, and karpenter
  • Export GetRHELStreamForBootImage for cross-package use (karpenter-operator)
  • Set NodePoolValidPlatformImageType=False on stream resolution errors to prevent stale conditions
  • Update E2E tests to use version-aware stream expectations (rhel-9 for OCP < 5.0, rhel-10 for OCP >= 5.0)
  • Add lifecycle label to osimagestream Status tests so they only run in the dedicated e2e-v2-aws-techpreview-osimagestream job (TODO: remove after FG graduation)
  • Add unit tests for setPlatformConditions, setOpenStackConditions, setPowerVSconditions, setKubevirtConditions, and validMachineConfigCondition
  • Remove all TODO([CNTRLPLANE-3553](https://redhat.atlassian.net/browse/CNTRLPLANE-3553)) and TODO([CNTRLPLANE-3032](https://redhat.atlassian.net/browse/CNTRLPLANE-3032)) comments

Dependencies

Fixes

🤖 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.

…icated TechPreview job

- Add `lifecycle` label to osImageStream Status tests so they only run
  in the dedicated e2e-v2-aws-techpreview-osimagestream job where the
  hosted cluster has TechPreview (TODO: remove after FG graduation)
- Move osImageStream post-upgrade verification from nodepool_lifecycle_test.go
  into nodepool_osimagestream_test.go as a dedicated upgrade test
- Fix NodePoolOSImageStreamExplicitDefaultNoRolloutTest: create a dedicated
  NodePool instead of mutating the default one (osImageStream is immutable
  once set — CEL validation prevents removal)
- Use version-aware stream expectations (rhel-9 for OCP < 5.0, rhel-10
  for OCP >= 5.0)
- Remove all TODO(CNTRLPLANE-3553) and TODO(CNTRLPLANE-3032) comments

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

openshift-ci Bot commented Jul 27, 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-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 27, 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-aks-4-22
/test e2e-aws-4-22
/test e2e-aks
/test e2e-aws
/test e2e-aws-upgrade-hypershift-operator
/test e2e-azure-v2-self-managed
/test e2e-kubevirt-aws-ovn-reduced
/test e2e-v2-aws
/test e2e-v2-gke
/test unit
/test verify

@bryan-cox

Copy link
Copy Markdown
Member

/pipeline required

@openshift-ci

openshift-ci Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: bryan-cox, jparrill

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

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aks-4-22
/test e2e-aws-4-22
/test e2e-aks
/test e2e-aws
/test e2e-aws-upgrade-hypershift-operator
/test e2e-azure-v2-self-managed
/test e2e-kubevirt-aws-ovn-reduced
/test e2e-v2-aws
/test e2e-v2-gke
/test unit
/test verify

@bryan-cox

Copy link
Copy Markdown
Member

/verified by e2e passing

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

Copy link
Copy Markdown

@bryan-cox: This PR has been marked as verified by e2e passing.

Details

In response to this:

/verified by e2e passing

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

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

Labels

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. area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/karpenter-operator Indicates the PR includes changes related to the Karpenter operator area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform area/testing Indicates the PR includes changes for e2e testing 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