Skip to content

MGMT-22939: Fix cache key to get mustgather image#9940

Open
pastequo wants to merge 1 commit intoopenshift:masterfrom
pastequo:fix/change-cache-key-for-must-gather-img
Open

MGMT-22939: Fix cache key to get mustgather image#9940
pastequo wants to merge 1 commit intoopenshift:masterfrom
pastequo:fix/change-cache-key-for-must-gather-img

Conversation

@pastequo
Copy link
Contributor

@pastequo pastequo commented Feb 25, 2026

If the cache was initially populated with 4.20.10, then following calls will use this must gather image even if it's not the same patch version

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • Does this change include unit-tests (note that code changes require unit-tests)

Reviewers Checklist

  • Are the title and description (in both PR and commit) meaningful and clear?
  • Is there a bug required (and linked) for this change?
  • Should this PR be backported?

Summary by CodeRabbit

  • Refactor

    • Must-gather cache now keys by the full OpenShift version plus CPU architecture for finer-grained lookups.
    • Validation webhooks updated to accept contextual parameters (updated call signatures).
  • New Features

    • Must-gather image records now include an optional CPU architecture field.
  • Tests / Chores

    • Added an isolated API unit-test target; webhook tests and test scaffolding simplified to match updated interfaces.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Feb 25, 2026
@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 25, 2026

@pastequo: This pull request references MGMT-22939 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 bug to target the "4.22.0" version, but no target version was set.

Details

In response to this:

If the cache was initially populated with 4.20.10, then following calls will use this must gather image even if it's not the same patch version

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • Does this change include unit-tests (note that code changes require unit-tests)

Reviewers Checklist

  • Are the title and description (in both PR and commit) meaningful and clear?
  • Is there a bug required (and linked) for this change?
  • Should this PR be backported?

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
Copy link

coderabbitai bot commented Feb 25, 2026

Walkthrough

Switches must-gather cache keys to use the full OpenShift version string, updates related tests, adds CPUArchitecture to MustGatherImage, changes several webhook validation signatures to accept context and old/new objects, simplifies webhook suite tests, adds a Makefile test target, and adjusts api module dependencies.

Changes

Cohort / File(s) Summary
Versions / MustGather cache
internal/versions/common.go, internal/versions/common_test.go
Cache key for must-gather lookups changed from majMinorVersion-cpuArchitecture to openshiftVersion-cpuArchitecture; tests updated to construct/look up keys using the full ocpVersion.
Webhook signature changes & tests
api/v1beta1/agent_webhook_test.go, api/v1beta1/agentclassification_webhook_test.go, api/v1beta1/infraenv_webhook_test.go
Validation method signatures updated to include context.Context and, for updates, both old and new resource params; tests updated to pass context.TODO() and the appropriate args.
API types
api/v1beta1/agentserviceconfig_types.go
Added optional CPUArchitecture string field to MustGatherImage with json tag cpuArchitecture.
Webhook suite tests simplified
api/v1beta1/webhook_suite_test.go
Removed comprehensive envtest/manager/webhook server bootstrap and teardown logic; retained minimal TestAPIs entry.
Makefile
Makefile
Added run-unit-test-api target that runs cd api/ && go test ./....
api module file
api/go.mod
Adjusted module requirements: moved k8s.io/client-go v0.29.2 to indirect and removed several indirect deps (github.com/go-logr/zapr, go.uber.org/multierr, go.uber.org/zap).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~40 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title directly references the main change: fixing the cache key used to retrieve must-gather images, which aligns with the code changes replacing major/minor version keys with full openshiftVersion strings.
Description check ✅ Passed The description provides a clear problem statement explaining the bug (cache returning wrong must-gather image for different patch versions), marks it as a bug fix, and indicates testing approach. However, it lacks detailed explanation of the fix mechanism and doesn't explicitly link to the MGMT-22939 issue despite title mentioning it.
Stable And Deterministic Test Names ✅ Passed Test files show no dynamic test names; changes are limited to method signatures and test data structures.
Test Structure And Quality ✅ Passed Test files maintain acceptable quality with focused unit tests for webhook validation and proper test function patterns for version cache behavior.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


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

@openshift-ci openshift-ci bot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Feb 25, 2026
@openshift-ci
Copy link

openshift-ci bot commented Feb 25, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: pastequo

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 the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Feb 25, 2026
@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 25, 2026

@pastequo: This pull request references MGMT-22939 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 bug to target the "4.22.0" version, but no target version was set.

Details

In response to this:

If the cache was initially populated with 4.20.10, then following calls will use this must gather image even if it's not the same patch version

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • Does this change include unit-tests (note that code changes require unit-tests)

Reviewers Checklist

  • Are the title and description (in both PR and commit) meaningful and clear?
  • Is there a bug required (and linked) for this change?
  • Should this PR be backported?

Summary by CodeRabbit

  • Refactor
  • Modified cache key generation for must-gather images to use complete OpenShift version identifiers instead of abbreviated version formats, enabling more granular cache management across different OpenShift releases.

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.

Copy link

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
internal/versions/common.go (1)

94-107: ⚠️ Potential issue | 🟠 Major

Fix cache key format mismatch between static config and runtime lookup.

The cache key change at line 94 from major.minor to full version introduces a silent data loss bug. Static configurations populate mustGatherVersions using major.minor keys via getVersionKey() (see agentserviceconfig_controller.go:2428, which returns fmt.Sprintf("%d.%d", v.Segments()[0], v.Segments()[1])), but the runtime lookup now uses the full version (e.g., "4.20-x86_64" vs "4.20.10-x86_64"). When the full-version key is not found, lines 99–101 silently create an empty MustGatherVersion instead of checking the pre-populated major.minor key, causing operator must-gather images (cnv, odf, lso) to vanish from responses without any error.

Either update getVersionKey() to return the full version, or add fallback logic in getMustGatherImages to check the major.minor key if the full-version key misses.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/versions/common.go` around lines 94 - 107, The cacheKey used in
getMustGatherImages now includes the full version (cacheKey :=
fmt.Sprintf("%s-%s", openshiftVersion, cpuArchitecture)) but static config is
populated with major.minor keys from getVersionKey(), causing silent misses and
overwriting pre-populated entries; update getMustGatherImages to, after
computing the full-version cacheKey and before creating an empty
MustGatherVersion, attempt a fallback lookup using the major.minor key returned
by getVersionKey() (compose fallbackKey := fmt.Sprintf("%s-%s",
getVersionKey(openshiftVersion), cpuArchitecture)) and use that entry if
present, otherwise create the new MustGatherVersion in mustGatherVersions;
reference mustGatherVersions, cacheKey, getVersionKey(), getMustGatherImages,
MustGatherVersions, and MustGatherVersion when making the change.
🧹 Nitpick comments (1)
internal/versions/common_test.go (1)

289-318: Consider adding a test case that directly validates the originally reported bug: two distinct patch versions must not collide in the cache.

The updated ocpVersion = "4.8.0-fc.1" exercises the full-version key format, but there is no test that calls getMustGatherImages with two different patch versions of the same minor (e.g., "4.8.5" then "4.8.10") and asserts each gets its own ocp must-gather image. Such a test would directly pin the regression described in the PR.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/versions/common_test.go` around lines 289 - 318, Add a new test
variant in the "caching" It block that calls getMustGatherImages twice with the
same minor but two different patch versions (for example set ocpVersion to
"4.8.5" for the first call and "4.8.10" for the second), mock the release
client's GetMustGatherImage expectation for each distinct full version
(mockRelease.EXPECT().GetMustGatherImage(..., "release_4.8.5", ...) and then for
"release_4.8.10"), and assert both calls return without error and that each
returned images.ocp must-gather entry is the expected, distinct value (using
verifyOcpVersion or direct assertions) to ensure cache keys in
getMustGatherImages do not collide across different patch versions.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@internal/versions/common.go`:
- Around line 94-107: The cacheKey used in getMustGatherImages now includes the
full version (cacheKey := fmt.Sprintf("%s-%s", openshiftVersion,
cpuArchitecture)) but static config is populated with major.minor keys from
getVersionKey(), causing silent misses and overwriting pre-populated entries;
update getMustGatherImages to, after computing the full-version cacheKey and
before creating an empty MustGatherVersion, attempt a fallback lookup using the
major.minor key returned by getVersionKey() (compose fallbackKey :=
fmt.Sprintf("%s-%s", getVersionKey(openshiftVersion), cpuArchitecture)) and use
that entry if present, otherwise create the new MustGatherVersion in
mustGatherVersions; reference mustGatherVersions, cacheKey, getVersionKey(),
getMustGatherImages, MustGatherVersions, and MustGatherVersion when making the
change.

---

Nitpick comments:
In `@internal/versions/common_test.go`:
- Around line 289-318: Add a new test variant in the "caching" It block that
calls getMustGatherImages twice with the same minor but two different patch
versions (for example set ocpVersion to "4.8.5" for the first call and "4.8.10"
for the second), mock the release client's GetMustGatherImage expectation for
each distinct full version (mockRelease.EXPECT().GetMustGatherImage(...,
"release_4.8.5", ...) and then for "release_4.8.10"), and assert both calls
return without error and that each returned images.ocp must-gather entry is the
expected, distinct value (using verifyOcpVersion or direct assertions) to ensure
cache keys in getMustGatherImages do not collide across different patch
versions.

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 7ca2b35 and 753ea6a.

📒 Files selected for processing (2)
  • internal/versions/common.go
  • internal/versions/common_test.go

@codecov
Copy link

codecov bot commented Feb 25, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 44.10%. Comparing base (31527fa) to head (52e58b8).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #9940      +/-   ##
==========================================
+ Coverage   44.06%   44.10%   +0.04%     
==========================================
  Files         414      415       +1     
  Lines       72210    72294      +84     
==========================================
+ Hits        31819    31888      +69     
- Misses      37513    37521       +8     
- Partials     2878     2885       +7     
Files with missing lines Coverage Δ
cmd/main.go 0.00% <ø> (ø)
...oller/controllers/agentserviceconfig_controller.go 83.84% <ø> (+0.15%) ⬆️
internal/versions/cache.go 79.48% <ø> (ø)
internal/versions/common.go 60.60% <ø> (-4.15%) ⬇️
internal/versions/kube_api_versions.go 67.60% <ø> (+0.47%) ⬆️
internal/versions/rest_api_versions.go 72.54% <ø> (+0.70%) ⬆️

... and 1 file with indirect coverage changes

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

@pastequo
Copy link
Contributor Author

pastequo commented Feb 25, 2026

̶I̶ ̶d̶o̶n̶'̶t̶ ̶t̶h̶i̶n̶k̶ ̶t̶h̶e̶ ̶c̶o̶d̶e̶r̶a̶b̶b̶i̶t̶ ̶c̶o̶m̶m̶e̶n̶t̶ ̶i̶s̶ ̶r̶e̶l̶e̶v̶a̶n̶t̶
edit: it is something to fix indeed, but I think it was already broken because the cpuArchitecture was missing

But I will have a problem with that https://gitlab.cee.redhat.com/service/app-interface/-/blob/master/data/services/assisted-installer/cicd/saas.yaml?ref_type=heads#L74

@pastequo pastequo marked this pull request as draft February 26, 2026 14:08
@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 Feb 26, 2026
@pastequo pastequo force-pushed the fix/change-cache-key-for-must-gather-img branch from 753ea6a to 8ccd34d Compare February 27, 2026 19:30
@openshift-ci openshift-ci bot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. and removed size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. labels Feb 27, 2026
@pastequo pastequo marked this pull request as ready for review February 27, 2026 19:30
@openshift-ci openshift-ci bot added api-review Categorizes an issue or PR as actively needing an API review. and removed do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels Feb 27, 2026
@openshift-ci openshift-ci bot requested review from danmanor and eranco74 February 27, 2026 19:32
// is to be associated with.
OpenshiftVersion string `json:"openshiftVersion"`
// CPUArchitecture is the CPU architecture of the image (x86_64/arm64/multi/etc).
// +optional
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I didn't make it required to be backward compatible, even if I'm not convinced it makes a lot of sense

run-unit-test:
SKIP_UT_DB=1 $(MAKE) _unit_test TIMEOUT=30m TEST="$(or $(TEST),$(shell go list ./... | grep -v subsystem))"

run-unit-test-api:
Copy link
Contributor Author

Choose a reason for hiding this comment

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

adding this, since run-unit-test is never replaying the tests in api/

@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 27, 2026

@pastequo: This pull request references MGMT-22939 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 bug to target the "4.22.0" version, but no target version was set.

Details

In response to this:

If the cache was initially populated with 4.20.10, then following calls will use this must gather image even if it's not the same patch version

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • Does this change include unit-tests (note that code changes require unit-tests)

Reviewers Checklist

  • Are the title and description (in both PR and commit) meaningful and clear?
  • Is there a bug required (and linked) for this change?
  • Should this PR be backported?

Summary by CodeRabbit

  • Refactor

  • Cache keys for must-gather images now use full OpenShift version strings plus CPU architecture for finer-grained lookups.

  • New Features

  • Must-gather image records include an optional CPU architecture field to distinguish images by architecture.

  • Tests / Chores

  • Added an isolated API unit-test target; several webhook tests and test scaffolding were simplified to match updated interfaces.

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.

Copy link

@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 (1)
Makefile (1)

560-562: Consider aligning test output format with other targets.

The new target uses plain go test while run-unit-test uses gotestsum with coverage and reporting flags. This works but produces different output formats. If CI relies on consistent coverage/junit artifacts, consider using similar flags:

♻️ Optional: Add coverage and reporting
 run-unit-test-api:
-	cd api/ && go test ./...
+	cd api/ && gotestsum --format=$(GO_TEST_FORMAT) -- -count=1 -cover ./...
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Makefile` around lines 560 - 562, The run-unit-test-api Makefile target
currently runs plain "go test" and should be changed to match the format and
artifacts produced by run-unit-test: replace the plain test invocation with
gotestsum and the same flags used by run-unit-test (e.g., --junitfile,
--raw-command or -- -coverprofile and -covermode as appropriate) so CI gets
consistent coverage and junit outputs; update the run-unit-test-api target to
call gotestsum for the api package and generate the same coverage and reporting
files as run-unit-test.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@Makefile`:
- Around line 560-562: The run-unit-test-api Makefile target currently runs
plain "go test" and should be changed to match the format and artifacts produced
by run-unit-test: replace the plain test invocation with gotestsum and the same
flags used by run-unit-test (e.g., --junitfile, --raw-command or --
-coverprofile and -covermode as appropriate) so CI gets consistent coverage and
junit outputs; update the run-unit-test-api target to call gotestsum for the api
package and generate the same coverage and reporting files as run-unit-test.

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 753ea6a and 8ccd34d.

⛔ Files ignored due to path filters (162)
  • api/vendor/github.com/go-logr/zapr/.gitignore is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/.golangci.yaml is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/slogzapr.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/zapr.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/zapr_noslog.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/zapr_slog.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/.codecov.yml is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/.gitignore is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/CHANGELOG.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/LICENSE.txt is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/Makefile is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/README.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/error.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/error_post_go120.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/error_pre_go120.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/.codecov.yml is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/.gitignore is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/.golangci.yml is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/.readme.tmpl is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/CHANGELOG.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/CONTRIBUTING.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/FAQ.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/LICENSE.txt is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/Makefile is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/README.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/array.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/buffer/buffer.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/buffer/pool.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/checklicense.sh is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/config.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/doc.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/error.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/field.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/flag.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/glide.yaml is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/global.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/http_handler.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/color/color.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/exit/exit.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/level_enabler.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/pool/pool.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/stacktrace/stack.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/level.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/logger.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/options.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/sink.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/sugar.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/time.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/writer.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/clock.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/console_encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/core.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/doc.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/entry.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/error.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/field.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/hook.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/increase_level.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/json_encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/lazy_with.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/level.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/level_strings.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/marshaler.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/memory_encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/reflected_encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/sampler.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/tee.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/write_syncer.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/.import-restrictions is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/conversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/deepcopy.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/defaults.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go is excluded by !**/*.pb.go, !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/register.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go is excluded by !**/vendor/**, !**/zz_generated*
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !**/zz_generated*
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.defaults.go is excluded by !**/vendor/**, !**/zz_generated*
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.prerelease-lifecycle.go is excluded by !**/vendor/**, !**/zz_generated*
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcecolumndefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourceconversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitioncondition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionnames.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionspec.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionstatus.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresources.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresourcescale.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcevalidation.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/externaldocumentation.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/jsonschemaprops.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/servicereference.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/validationrule.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookclientconfig.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookconversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcecolumndefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourceconversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitioncondition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionnames.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionspec.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionstatus.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresources.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresourcescale.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcevalidation.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/externaldocumentation.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/jsonschemaprops.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/servicereference.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/validationrule.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/webhookclientconfig.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/doc.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/register.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/apiextensions_client.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/customresourcedefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/doc.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/generated_expansion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/apiextensions_client.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/doc.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/generated_expansion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/client-go/util/retry/OWNERS is excluded by !**/vendor/**
  • api/vendor/k8s.io/client-go/util/retry/util.go is excluded by !**/vendor/**
  • api/vendor/modules.txt is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/crd.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/doc.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/helper.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/server.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/webhook.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/flock/doc.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/flock/errors.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/flock/flock_other.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/flock/flock_unix.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/addr/manager.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/certs/tinyca.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/apiserver.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/auth.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/etcd.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/kubectl.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/plane.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/arguments.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/bin_path_finder.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/procattr_other.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/procattr_unix.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/process.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/log/zap/flags.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/log/zap/kube_helpers.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/log/zap/zap.go is excluded by !**/vendor/**
  • vendor/github.com/openshift/assisted-service/api/v1beta1/agentserviceconfig_types.go is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (23)
  • Makefile
  • api/go.mod
  • api/v1beta1/agent_webhook_test.go
  • api/v1beta1/agentclassification_webhook_test.go
  • api/v1beta1/agentserviceconfig_types.go
  • api/v1beta1/infraenv_webhook_test.go
  • api/v1beta1/webhook_suite_test.go
  • cmd/main.go
  • config/crd/bases/agent-install.openshift.io_agentserviceconfigs.yaml
  • config/crd/bases/agent-install.openshift.io_hypershiftagentserviceconfigs.yaml
  • config/crd/resources.yaml
  • deploy/olm-catalog/manifests/agent-install.openshift.io_agentserviceconfigs.yaml
  • deploy/olm-catalog/manifests/agent-install.openshift.io_hypershiftagentserviceconfigs.yaml
  • internal/controller/controllers/agentserviceconfig_controller.go
  • internal/controller/controllers/agentserviceconfig_controller_test.go
  • internal/versions/api_test.go
  • internal/versions/cache.go
  • internal/versions/cache_test.go
  • internal/versions/common.go
  • internal/versions/common_test.go
  • internal/versions/kube_api_versions.go
  • internal/versions/rest_api_versions.go
  • internal/versions/rest_api_versions_test.go
💤 Files with no reviewable changes (1)
  • api/v1beta1/webhook_suite_test.go

}
}

func (c MustGatherVersionCache) GetMustGatherVersion(openshiftVersion, cpuArchitecture string) (MustGatherVersion, error) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

We talked about it with @CrystalChun and she made the very valid remark that with the current config that we have on saas, the error from the ticket can still happen for the version in the config. It's a bigger problem on saas where the user can't edit this config.

So maybe we should remove the fallback logic (and the configuration on saas), but then we will lose the capability to define 1 mustgather image for all patches of a minor.

}

// Return the merged result from cache (includes pre-populated entries like cnv, odf, lso)
ret, err = mustGatherVersionCache.GetMustGatherVersion(openshiftVersion, cpuArchitecture)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I changed a bit the behavior in this case, we used to return only the ocp version. But practically, on saas at least, we are not putting config except for 4.8, 4.9 and 4.10

@pastequo pastequo force-pushed the fix/change-cache-key-for-must-gather-img branch from 8ccd34d to 52e58b8 Compare March 2, 2026 10:26
@openshift-ci-robot
Copy link

openshift-ci-robot commented Mar 2, 2026

@pastequo: This pull request references MGMT-22939 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 bug to target the "4.22.0" version, but no target version was set.

Details

In response to this:

If the cache was initially populated with 4.20.10, then following calls will use this must gather image even if it's not the same patch version

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • Does this change include unit-tests (note that code changes require unit-tests)

Reviewers Checklist

  • Are the title and description (in both PR and commit) meaningful and clear?
  • Is there a bug required (and linked) for this change?
  • Should this PR be backported?

Summary by CodeRabbit

  • Refactor

  • Must-gather cache now keys by the full OpenShift version plus CPU architecture for finer-grained lookups.

  • Validation webhooks updated to accept contextual parameters (updated call signatures).

  • New Features

  • Must-gather image records now include an optional CPU architecture field.

  • Tests / Chores

  • Added an isolated API unit-test target; webhook tests and test scaffolding simplified to match updated interfaces.

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.

Copy link

@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 (1)
Makefile (1)

560-562: Consider wiring into CI and aligning with existing test infrastructure.

The new target works, but it differs from run-unit-test in several ways:

  • Uses raw go test instead of gotestsum (no standardized output format).
  • No coverage reporting (-coverprofile).
  • No JUnit XML generation for CI visibility.
  • Not called by ci-unit-test, so API tests may still be skipped in CI pipelines.

If API tests should run in CI, consider adding it to ci-unit-test:

 ci-unit-test:
 	./hack/start_db.sh
 	$(MAKE) run-unit-test
+	$(MAKE) run-unit-test-api

Also, adding .PHONY is conventional for targets without file outputs:

+.PHONY: run-unit-test-api
 run-unit-test-api:
 	cd api/ && go test ./...
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Makefile` around lines 560 - 562, The new Makefile target run-unit-test-api
should be aligned with existing test targets: change it to invoke gotestsum (as
run-unit-test does) so output is standardized, add coverage generation via
-coverprofile and produce JUnit XML for CI, mark run-unit-test-api as .PHONY,
and include/run it from the ci-unit-test target so API tests run in pipelines;
update references to run-unit-test (for behavior examples) and use gotestsum
flags consistent with other targets to match reporting and coverage conventions.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@Makefile`:
- Around line 560-562: The new Makefile target run-unit-test-api should be
aligned with existing test targets: change it to invoke gotestsum (as
run-unit-test does) so output is standardized, add coverage generation via
-coverprofile and produce JUnit XML for CI, mark run-unit-test-api as .PHONY,
and include/run it from the ci-unit-test target so API tests run in pipelines;
update references to run-unit-test (for behavior examples) and use gotestsum
flags consistent with other targets to match reporting and coverage conventions.

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 8ccd34d and 52e58b8.

⛔ Files ignored due to path filters (162)
  • api/vendor/github.com/go-logr/zapr/.gitignore is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/.golangci.yaml is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/slogzapr.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/zapr.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/zapr_noslog.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-logr/zapr/zapr_slog.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/.codecov.yml is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/.gitignore is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/CHANGELOG.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/LICENSE.txt is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/Makefile is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/README.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/error.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/error_post_go120.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/multierr/error_pre_go120.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/.codecov.yml is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/.gitignore is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/.golangci.yml is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/.readme.tmpl is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/CHANGELOG.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/CONTRIBUTING.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/FAQ.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/LICENSE.txt is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/Makefile is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/README.md is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/array.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/buffer/buffer.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/buffer/pool.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/checklicense.sh is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/config.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/doc.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/error.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/field.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/flag.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/glide.yaml is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/global.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/http_handler.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/color/color.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/exit/exit.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/level_enabler.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/pool/pool.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/internal/stacktrace/stack.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/level.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/logger.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/options.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/sink.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/sugar.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/time.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/writer.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/clock.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/console_encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/core.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/doc.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/entry.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/error.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/field.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/hook.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/increase_level.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/json_encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/lazy_with.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/level.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/level_strings.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/marshaler.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/memory_encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/reflected_encoder.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/sampler.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/tee.go is excluded by !**/vendor/**
  • api/vendor/go.uber.org/zap/zapcore/write_syncer.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/.import-restrictions is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/conversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/deepcopy.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/defaults.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go is excluded by !**/*.pb.go, !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/register.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go is excluded by !**/vendor/**, !**/zz_generated*
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !**/zz_generated*
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.defaults.go is excluded by !**/vendor/**, !**/zz_generated*
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.prerelease-lifecycle.go is excluded by !**/vendor/**, !**/zz_generated*
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcecolumndefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourceconversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitioncondition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionnames.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionspec.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionstatus.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcedefinitionversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresources.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcesubresourcescale.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/customresourcevalidation.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/externaldocumentation.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/jsonschemaprops.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/servicereference.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/validationrule.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookclientconfig.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1/webhookconversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcecolumndefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourceconversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitioncondition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionnames.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionspec.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionstatus.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcedefinitionversion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresources.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcesubresourcescale.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/customresourcevalidation.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/externaldocumentation.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/jsonschemaprops.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/servicereference.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/validationrule.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/applyconfiguration/apiextensions/v1beta1/webhookclientconfig.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/doc.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/register.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/apiextensions_client.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/customresourcedefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/doc.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1/generated_expansion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/apiextensions_client.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/doc.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/generated_expansion.go is excluded by !**/vendor/**
  • api/vendor/k8s.io/client-go/util/retry/OWNERS is excluded by !**/vendor/**
  • api/vendor/k8s.io/client-go/util/retry/util.go is excluded by !**/vendor/**
  • api/vendor/modules.txt is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/crd.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/doc.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/helper.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/server.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/envtest/webhook.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/flock/doc.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/flock/errors.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/flock/flock_other.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/flock/flock_unix.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/addr/manager.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/certs/tinyca.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/apiserver.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/auth.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/etcd.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/kubectl.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/controlplane/plane.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/arguments.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/bin_path_finder.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/procattr_other.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/procattr_unix.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/process/process.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/log/zap/flags.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/log/zap/kube_helpers.go is excluded by !**/vendor/**
  • api/vendor/sigs.k8s.io/controller-runtime/pkg/log/zap/zap.go is excluded by !**/vendor/**
  • vendor/github.com/openshift/assisted-service/api/v1beta1/agentserviceconfig_types.go is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (23)
  • Makefile
  • api/go.mod
  • api/v1beta1/agent_webhook_test.go
  • api/v1beta1/agentclassification_webhook_test.go
  • api/v1beta1/agentserviceconfig_types.go
  • api/v1beta1/infraenv_webhook_test.go
  • api/v1beta1/webhook_suite_test.go
  • cmd/main.go
  • config/crd/bases/agent-install.openshift.io_agentserviceconfigs.yaml
  • config/crd/bases/agent-install.openshift.io_hypershiftagentserviceconfigs.yaml
  • config/crd/resources.yaml
  • deploy/olm-catalog/manifests/agent-install.openshift.io_agentserviceconfigs.yaml
  • deploy/olm-catalog/manifests/agent-install.openshift.io_hypershiftagentserviceconfigs.yaml
  • internal/controller/controllers/agentserviceconfig_controller.go
  • internal/controller/controllers/agentserviceconfig_controller_test.go
  • internal/versions/api_test.go
  • internal/versions/cache.go
  • internal/versions/cache_test.go
  • internal/versions/common.go
  • internal/versions/common_test.go
  • internal/versions/kube_api_versions.go
  • internal/versions/rest_api_versions.go
  • internal/versions/rest_api_versions_test.go
💤 Files with no reviewable changes (1)
  • api/v1beta1/webhook_suite_test.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • api/go.mod
  • api/v1beta1/agentserviceconfig_types.go
  • api/v1beta1/agent_webhook_test.go

@openshift-ci
Copy link

openshift-ci bot commented Mar 2, 2026

@pastequo: 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.

@pastequo
Copy link
Contributor Author

pastequo commented Mar 4, 2026

/retest

// OpenshiftVersion is the Major.Minor version of OpenShift that this image
// is to be associated with.
OpenshiftVersion string `json:"openshiftVersion"`
// CPUArchitecture is the CPU architecture of the image (x86_64/arm64/multi/etc).
Copy link
Contributor

Choose a reason for hiding this comment

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

Would it make sense to have this field match the cpu_architecture field in the swagger.yaml

assisted-service/swagger.yaml

Lines 5845 to 5851 in 628d368

cpu_architecture:
type: string
x-nullable: false
default: 'x86_64'
# TODO: remove arm64 when AI moves to using aarch64
enum: ['x86_64', 'aarch64', 'arm64','ppc64le','s390x','multi']
description: The CPU architecture of the image (x86_64/arm64/etc).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I hesitated and decided to mimic the behavior of the CPUArchitecture in the other CR at the top of the file https://github.com/openshift/assisted-service/blob/v2.50.2/api/v1beta1/agentserviceconfig_types.go#L39-L41

I don't have a strong opinion on this, the enum make sense, being consistent also. As you prefer

Copy link
Contributor

Choose a reason for hiding this comment

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

Is the CPU Architecture normalized anywhere? Should it be normalized?

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

Labels

api-review Categorizes an issue or PR as actively needing an API review. 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. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants