Skip to content

CNTRLPLANE-3552: Multi-stream CoreOS metadata parsing and stream resolution#8669

Draft
jparrill wants to merge 2 commits into
openshift:mainfrom
jparrill:CNTRLPLANE-3552
Draft

CNTRLPLANE-3552: Multi-stream CoreOS metadata parsing and stream resolution#8669
jparrill wants to merge 2 commits into
openshift:mainfrom
jparrill:CNTRLPLANE-3552

Conversation

@jparrill
Copy link
Copy Markdown
Contributor

@jparrill jparrill commented Jun 4, 2026

What this PR does / why we need it:

Add multi-stream CoreOS boot image parsing and RHEL stream resolution logic for the dual-stream RHEL 9/10 NodePool feature (Phase 1 of CNTRLPLANE-3018).

  • Update DeserializeImageMetadata to parse both the legacy stream key (OCP < 5.0) and the new streams key (OCP >= 5.0) from the boot image ConfigMap
  • Add OSStreams field to ReleaseImage and StreamForName() method for stream-specific boot image lookup
  • Add GetRHELStream() pure function implementing the stream resolution table from the dual-stream RHEL enhancement
  • Add 5.0 boot image fixture extracted from 5.0.0-ec.2 release payload
  • Integration test validating end-to-end flow: parse payload → resolve stream → look up boot images

This is preparatory code — not reachable in production until Phase 2 connects GetRHELStream into the NodePool controller (NewToken(), validMachineConfigCondition). The multi-stream parsing only activates when a >= 5.0 payload carries the streams ConfigMap key.

Stream Resolution Table

explicit stream release runc result
unset 4.x - "" (legacy)
unset 5.x false rhel-10
unset 5.x true rhel-9 (fallback)
rhel-9 any - rhel-9
rhel-10 <5.0 - error
rhel-10 >=5.0 false rhel-10
rhel-10 >=5.0 true error

Which issue(s) this PR fixes:

Special notes for your reviewer:

  • Fixture data comes from a real 5.0.0-ec.2 payload (not synthetic)
  • GetRHELStream is exported for integration tests and future Phase 2 consumers
  • The OSStreams field lives on ReleaseImage (not CoreOSStreamMetadata) to keep the JSON-deserialized struct clean

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Test plan

Unit tests — parsing and stream resolution:

go test ./support/releaseinfo/... -v -count=1
go test -run TestGetRHELStream ./hypershift-operator/controllers/nodepool/ -v -count=1

Integration tests — end-to-end flow with real 5.0 EC payload:

go test -tags integration ./test/integration/osstreams/... -v -count=1

Note: requires -tags integration build tag. No cluster needed.

Verification:

make lint-fix  # 0 issues
make verify    # passes

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added multi-stream RHEL CoreOS support with explicit stream selection and sensible defaults based on OpenShift version and runtime.
    • Release images now include per-stream metadata so the system can resolve rhel-9/rhel-10 artifacts.
  • Behavior / Validation

    • Enforced RHEL 10 requires OpenShift 5.0+ and is incompatible with runc; unknown streams produce clear errors.
    • Preserved backward compatibility for legacy single-stream payloads.
  • Tests

    • Added comprehensive unit and integration tests covering multi-stream parsing, resolution, and error cases.

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

openshift-ci-robot commented Jun 4, 2026

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

Fixes

Summary

  • Add multi-stream boot image ConfigMap parsing to DeserializeImageMetadata — supports both the legacy stream key (OCP < 5.0) and the new streams key (OCP >= 5.0)
  • Add OSStreams field to ReleaseImage and StreamForName() method for stream-specific boot image lookup
  • Add GetRHELStream() pure function implementing the stream resolution table from the dual-stream RHEL enhancement
  • Add 5.0 boot image fixture extracted from 5.0.0-ec.2 release payload
  • Integration test validating end-to-end flow: parse payload → resolve stream → look up boot images

Phase 1 of CNTRLPLANE-3018 (epic). No API changes, no platform wiring — parsing and resolution logic only. This code is not reachable in production until Phase 2 connects GetRHELStream into the NodePool controller (NewToken(), validMachineConfigCondition). The multi-stream parsing only activates when a >= 5.0 payload carries the streams ConfigMap key.

Stream Resolution Table

explicit stream release runc result
unset 4.x - "" (legacy)
unset 5.x false rhel-10
unset 5.x true rhel-9 (fallback)
rhel-9 any - rhel-9
rhel-10 <5.0 - error
rhel-10 >=5.0 false rhel-10
rhel-10 >=5.0 true error

Test plan

  • Unit tests — parsing and stream resolution:
go test ./support/releaseinfo/... -v -count=1
go test -run TestGetRHELStream ./hypershift-operator/controllers/nodepool/ -v -count=1
  • Integration tests — end-to-end flow with real 5.0 EC payload:
go test -tags integration ./test/integration/osstreams/... -v -count=1

Note: requires -tags integration build tag. No cluster needed.

  • make lint-fix — 0 issues
  • make verify — passes

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

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

openshift-ci Bot commented Jun 4, 2026

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 4, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 88e4b275-7bdd-40e8-ac68-750cfce16f36

📥 Commits

Reviewing files that changed from the base of the PR and between 6651f3c and 3121c68.

📒 Files selected for processing (11)
  • hypershift-operator/controllers/nodepool/stream.go
  • hypershift-operator/controllers/nodepool/stream_test.go
  • support/releaseinfo/deserialize.go
  • support/releaseinfo/deserialize_test.go
  • support/releaseinfo/fixtures/5.0-installer-coreos-bootimages.yaml
  • support/releaseinfo/fixtures/fixtures.go
  • support/releaseinfo/registry_mirror_provider.go
  • support/releaseinfo/registryclient_provider.go
  • support/releaseinfo/releaseinfo.go
  • support/releaseinfo/releaseinfo_test.go
  • test/integration/osstreams/osstreams_test.go
🚧 Files skipped from review as they are similar to previous changes (9)
  • support/releaseinfo/registry_mirror_provider.go
  • hypershift-operator/controllers/nodepool/stream_test.go
  • hypershift-operator/controllers/nodepool/stream.go
  • support/releaseinfo/fixtures/fixtures.go
  • support/releaseinfo/releaseinfo.go
  • support/releaseinfo/deserialize.go
  • support/releaseinfo/releaseinfo_test.go
  • support/releaseinfo/deserialize_test.go
  • test/integration/osstreams/osstreams_test.go

📝 Walkthrough

Walkthrough

This PR adds multi-stream CoreOS metadata support: DeserializeImageMetadata returns single-stream and OSStreams maps; ReleaseImage gains OSStreams and StreamForName for per-stream lookup; registry providers populate OSStreams. GetRHELStream chooses rhel-9/rhel-10 (validating OCP major and runc compatibility). A new 5.0 fixture and expanded unit and integration tests exercise parsing, stream resolution, and legacy single-stream backward compatibility.

sequenceDiagram
  participant NodePool
  participant GetRHELStream
  participant ReleaseImage
  participant DeserializeImageMetadata
  participant ConfigMap
  NodePool->>GetRHELStream: request(explicitStream, releaseVersion, usesRunc)
  GetRHELStream->>ReleaseImage: StreamForName(streamName)
  ReleaseImage->>DeserializeImageMetadata: need StreamMetadata/OSStreams
  DeserializeImageMetadata->>ConfigMap: parse data.stream / data.streams
  DeserializeImageMetadata-->>ReleaseImage: StreamMetadata + OSStreams
  ReleaseImage-->>GetRHELStream: resolved stream metadata or error
  GetRHELStream-->>NodePool: stream name or error
Loading
🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically summarizes the main change: adding multi-stream CoreOS metadata parsing and stream resolution logic, which is the primary focus of the PR.
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 All test names in the PR use static, descriptive strings with no dynamic information (no generated suffixes, timestamps, UUIDs, or values that change between runs).
Test Structure And Quality ✅ Passed PR does not contain Ginkgo tests; all new tests use standard Go testing with table-driven patterns. Check requirements for Ginkgo test structure (It blocks, BeforeEach/AfterEach) are not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed PR adds no deployment manifests or scheduling constraints (affinity, replicas, nodeSelectors, PDBs). Only pure functions, data structures, and test fixtures for multi-stream CoreOS metadata.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR does not add Ginkgo e2e tests (It/Describe/Context/When patterns). All added tests use standard Go testing.T patterns and are not subject to this check.
No-Weak-Crypto ✅ Passed No weak cryptography usage found. PR adds stream resolution and metadata deserialization logic with no MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB, custom crypto, or non-constant-time token comparisons.
Container-Privileges ✅ Passed PR contains no container/Kubernetes workload manifests. Changes include Go utility code, tests, and a ConfigMap fixture with boot image metadata only—no privileged settings present.
No-Sensitive-Data-In-Logs ✅ Passed PR contains no sensitive data in logs. Error messages only log boot image metadata (public AMI IDs, GCP names, version strings). pullSecret credential never logged.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Jun 4, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: 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-ci openshift-ci Bot added area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release 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/testing Indicates the PR includes changes for e2e testing and removed do-not-merge/needs-area labels Jun 4, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

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 `@support/releaseinfo/deserialize.go`:
- Around line 41-48: The code currently initializes a zero-value
CoreOSStreamMetadata and returns its address even when the "stream" key is
absent; update the logic in the json unmarshal block and final return so that
when hasStreamData is false the function returns (nil, osStreams, nil) instead
of &coreOSMeta. Concretely, only allocate or populate coreOSMeta when
hasStreamData and json.Unmarshal succeeds (inside the if hasStreamData { ... }
block using json.Unmarshal into a local variable), and change the final return
to return the pointer to that populated struct or nil when hasStreamData was
false (i.e., return nil, osStreams, nil).
🪄 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: 39f31f55-c3e5-4714-a09f-53a65264d50e

📥 Commits

Reviewing files that changed from the base of the PR and between e25a87a and e3e1dce.

📒 Files selected for processing (11)
  • hypershift-operator/controllers/nodepool/stream.go
  • hypershift-operator/controllers/nodepool/stream_test.go
  • support/releaseinfo/deserialize.go
  • support/releaseinfo/deserialize_test.go
  • support/releaseinfo/fixtures/5.0-installer-coreos-bootimages.yaml
  • support/releaseinfo/fixtures/fixtures.go
  • support/releaseinfo/registry_mirror_provider.go
  • support/releaseinfo/registryclient_provider.go
  • support/releaseinfo/releaseinfo.go
  • support/releaseinfo/releaseinfo_test.go
  • test/integration/osstreams/osstreams_test.go

Comment thread support/releaseinfo/deserialize.go Outdated
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 4, 2026

Codecov Report

❌ Patch coverage is 96.92308% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 41.47%. Comparing base (25817d4) to head (3121c68).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
support/releaseinfo/registryclient_provider.go 0.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8669      +/-   ##
==========================================
+ Coverage   41.43%   41.47%   +0.04%     
==========================================
  Files         756      757       +1     
  Lines       93658    93713      +55     
==========================================
+ Hits        38807    38870      +63     
+ Misses      52128    52123       -5     
+ Partials     2723     2720       -3     
Files with missing lines Coverage Δ
hypershift-operator/controllers/nodepool/stream.go 100.00% <100.00%> (ø)
support/releaseinfo/deserialize.go 90.00% <100.00%> (+50.00%) ⬆️
support/releaseinfo/registry_mirror_provider.go 45.83% <100.00%> (+2.35%) ⬆️
support/releaseinfo/releaseinfo.go 51.00% <100.00%> (+5.14%) ⬆️
support/releaseinfo/registryclient_provider.go 0.00% <0.00%> (ø)
Flag Coverage Δ
cmd-support 34.97% <95.12%> (+0.09%) ⬆️
cpo-hostedcontrolplane 43.50% <ø> (ø)
cpo-other 42.74% <ø> (ø)
hypershift-operator 51.61% <100.00%> (+0.04%) ⬆️
other 31.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.

jparrill and others added 2 commits June 4, 2026 17:42
…m resolution

Add support for parsing the new multi-stream boot image ConfigMap format
introduced in OCP 5.0 payloads. The ConfigMap now carries a "streams" key
alongside the legacy "stream" key, mapping stream names (rhel-9, rhel-10)
to per-architecture boot image metadata.

- Update DeserializeImageMetadata to parse both "streams" and "stream"
  keys, returning the parsed OSStreams map alongside the default metadata
- Add OSStreams field to ReleaseImage for holding per-stream metadata
- Add StreamForName convenience method on ReleaseImage for stream lookup
- Add GetRHELStream pure function implementing the stream resolution
  table from the dual-stream RHEL enhancement
- Add 5.0 boot image fixture extracted from 5.0.0-ec.2 release payload

Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Juan Manuel Parrilla Madrid <jparrill@redhat.com>
Integration test that validates the complete flow from real 5.0 EC
payload parsing through stream resolution to boot image lookup:
- Parse multi-stream ConfigMap from 5.0.0-ec.2 payload fixture
- Resolve RHEL stream via GetRHELStream for each scenario
- Look up stream-specific boot images via StreamForName
- Verify correct AWS AMI, GCP image, aarch64 AMI, and KubeVirt
  digest-ref for the resolved stream

Covers realistic 5.0+ scenarios only (implicit default, explicit
rhel-9/rhel-10, runc fallback, error cases) plus legacy 4.10
backward compatibility with real fixture data.

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

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (3)
support/releaseinfo/deserialize_test.go (2)

20-26: ⚡ Quick win

Mark test helper as a helper for cleaner failure locations.

testConfigMap is a helper but does not mark itself with t.Helper(), which makes failures point to the helper body instead of the calling test.

Suggested change
-func testConfigMap(dataFields map[string]string) []byte {
+func testConfigMap(t *testing.T, dataFields map[string]string) []byte {
+	t.Helper()
 	cm := "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: test\ndata:\n"
 	for k, v := range dataFields {
 		cm += fmt.Sprintf("  %s: %s\n", k, v)
 	}
 	return []byte(cm)
}
// Update call sites in this file:
data: testConfigMap(t, map[string]string{ ... })

As per coding guidelines, "Use t.Helper() in Go helper functions to improve error tracebacks".

🤖 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 `@support/releaseinfo/deserialize_test.go` around lines 20 - 26, testConfigMap
is a test helper but doesn't call t.Helper() or accept *testing.T, so failures
point into the helper; change the signature of testConfigMap to accept t
*testing.T (e.g., testConfigMap(t *testing.T, dataFields map[string]string)),
call t.Helper() at the top of that function, and update all call sites in this
file (places that call testConfigMap(...)) to pass the test variable (e.g.,
testConfigMap(t, map[string]string{...})).

28-123: ⚡ Quick win

Run these unit tests in parallel.

Both test functions and their subtests can run independently; adding t.Parallel() aligns with repository test guidance and reduces suite runtime.

Suggested change
func TestDeserializeImageMetadata(t *testing.T) {
+	t.Parallel()
 	tests := []struct {
 		...
 	}

 	for _, tt := range tests {
+		tt := tt
 		t.Run(tt.name, func(t *testing.T) {
+			t.Parallel()
 			g := NewWithT(t)
 			...
 		})
 	}
}

func TestDeserializeImageMetadataMultiStreamContent(t *testing.T) {
+	t.Parallel()
 	defaultStream, osStreams, err := DeserializeImageMetadata(fixtures.CoreOSBootImagesYAML_5_0)
 	...

 	for _, tt := range tests {
+		tt := tt
 		t.Run(tt.name, func(t *testing.T) {
+			t.Parallel()
 			tt.assert(NewWithT(t))
 		})
 	}
}

As per coding guidelines, "Unit tests should use race detection and parallel execution".

Also applies to: 125-229

🤖 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 `@support/releaseinfo/deserialize_test.go` around lines 28 - 123, Add parallel
execution to the tests: call t.Parallel() at the start of the top-level
TestDeserializeImageMetadata function and also inside each subtest goroutine
(the func passed to t.Run) so subtests run in parallel; do the same for the
other test function referenced (the one around lines 125-229). Locate the test
functions by name (TestDeserializeImageMetadata and the other test function in
the same file) and add t.Parallel() both at the top of each test and at the
start of each t.Run subtest closure, ensuring no shared mutable state is
assumed.
hypershift-operator/controllers/nodepool/stream_test.go (1)

11-171: ⚡ Quick win

Enable parallel execution for this table-driven test.

This suite is a good candidate for t.Parallel() at both parent and subtest level.

Suggested change
func TestGetRHELStream(t *testing.T) {
+	t.Parallel()
 	tests := []struct {
 		...
 	}

 	for _, tt := range tests {
+		tt := tt
 		t.Run(tt.name, func(t *testing.T) {
+			t.Parallel()
 			g := NewWithT(t)

 			result, err := GetRHELStream(tt.explicitStream, tt.releaseVersion, tt.usesRunc)
 			...
 		})
 	}
}

As per coding guidelines, "Unit tests should use race detection and parallel execution".

🤖 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/stream_test.go` around lines 11 -
171, The test TestGetRHELStream should enable parallel execution to follow
guidelines; add t.Parallel() as the first statement in TestGetRHELStream and
also call t.Parallel() at the start of each subtest inside the t.Run closure so
each case runs concurrently; locate TestGetRHELStream and the anonymous func
passed to t.Run around the table loop and insert the t.Parallel() calls while
ensuring no shared mutable state is accessed when invoking GetRHELStream.
🤖 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.

Nitpick comments:
In `@hypershift-operator/controllers/nodepool/stream_test.go`:
- Around line 11-171: The test TestGetRHELStream should enable parallel
execution to follow guidelines; add t.Parallel() as the first statement in
TestGetRHELStream and also call t.Parallel() at the start of each subtest inside
the t.Run closure so each case runs concurrently; locate TestGetRHELStream and
the anonymous func passed to t.Run around the table loop and insert the
t.Parallel() calls while ensuring no shared mutable state is accessed when
invoking GetRHELStream.

In `@support/releaseinfo/deserialize_test.go`:
- Around line 20-26: testConfigMap is a test helper but doesn't call t.Helper()
or accept *testing.T, so failures point into the helper; change the signature of
testConfigMap to accept t *testing.T (e.g., testConfigMap(t *testing.T,
dataFields map[string]string)), call t.Helper() at the top of that function, and
update all call sites in this file (places that call testConfigMap(...)) to pass
the test variable (e.g., testConfigMap(t, map[string]string{...})).
- Around line 28-123: Add parallel execution to the tests: call t.Parallel() at
the start of the top-level TestDeserializeImageMetadata function and also inside
each subtest goroutine (the func passed to t.Run) so subtests run in parallel;
do the same for the other test function referenced (the one around lines
125-229). Locate the test functions by name (TestDeserializeImageMetadata and
the other test function in the same file) and add t.Parallel() both at the top
of each test and at the start of each t.Run subtest closure, ensuring no shared
mutable state is assumed.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: c73114df-faea-4ddf-bd9d-f0e03b64c080

📥 Commits

Reviewing files that changed from the base of the PR and between e3e1dce and 6651f3c.

📒 Files selected for processing (11)
  • hypershift-operator/controllers/nodepool/stream.go
  • hypershift-operator/controllers/nodepool/stream_test.go
  • support/releaseinfo/deserialize.go
  • support/releaseinfo/deserialize_test.go
  • support/releaseinfo/fixtures/5.0-installer-coreos-bootimages.yaml
  • support/releaseinfo/fixtures/fixtures.go
  • support/releaseinfo/registry_mirror_provider.go
  • support/releaseinfo/registryclient_provider.go
  • support/releaseinfo/releaseinfo.go
  • support/releaseinfo/releaseinfo_test.go
  • test/integration/osstreams/osstreams_test.go
🚧 Files skipped from review as they are similar to previous changes (9)
  • support/releaseinfo/fixtures/fixtures.go
  • support/releaseinfo/releaseinfo_test.go
  • support/releaseinfo/releaseinfo.go
  • support/releaseinfo/registryclient_provider.go
  • support/releaseinfo/registry_mirror_provider.go
  • hypershift-operator/controllers/nodepool/stream.go
  • support/releaseinfo/deserialize.go
  • support/releaseinfo/fixtures/5.0-installer-coreos-bootimages.yaml
  • test/integration/osstreams/osstreams_test.go

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. area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/testing Indicates the PR includes changes for e2e testing do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants