Skip to content

OCPBUGS-74514: OCPBUGS-74515: OCPBUGS-74516: OCPBUGS-74517: remove bootimage update feature gates#2733

Open
djoshy wants to merge 1 commit intoopenshift:masterfrom
djoshy:remove-boot-image-fg
Open

OCPBUGS-74514: OCPBUGS-74515: OCPBUGS-74516: OCPBUGS-74517: remove bootimage update feature gates#2733
djoshy wants to merge 1 commit intoopenshift:masterfrom
djoshy:remove-boot-image-fg

Conversation

@djoshy
Copy link
Contributor

@djoshy djoshy commented Mar 2, 2026

This removes references to remove all boot image update feature gates:

Feature Gate GAed in...
ManagedBootImages 4.17
ManagedBootImagesAWS 4.18
ManagedBootImagesAzure 4.21
ManagedBootImagesvSphere 4.21

The MCO has removed all references to them in openshift/machine-config-operator#5718

@openshift-ci-robot
Copy link

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 jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Mar 2, 2026
@openshift-ci-robot
Copy link

@djoshy: This pull request references Jira Issue OCPBUGS-74514, which is invalid:

  • expected the bug to be in one of the following states: NEW, ASSIGNED, POST, but it is ON_QA instead

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

This removes references to remove all boot image update feature gates:

Feature Gate GAed in...
ManagedBootImages 4.17
ManagedBootImagesAWS 4.18
ManagedBootImagesAzure 4.21
ManagedBootImagesvSphere 4.21

The MCO has removed all references to them in openshift/machine-config-operator#5718

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

openshift-ci bot commented Mar 2, 2026

Hello @djoshy! Some important instructions when contributing to openshift/api:
API design plays an important part in the user experience of OpenShift and as such API PRs are subject to a high level of scrutiny to ensure they follow our best practices. If you haven't already done so, please review the OpenShift API Conventions and ensure that your proposed changes are compliant. Following these conventions will help expedite the api review process for your PR.

@openshift-ci openshift-ci bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Mar 2, 2026
@coderabbitai
Copy link

coderabbitai bot commented Mar 2, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

Configuration used: Path: .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 304a865 and 1af9b9a.

⛔ Files ignored due to path filters (5)
  • operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/BootImageSkewEnforcement.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/IrreconcilableMachineConfig.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
📒 Files selected for processing (14)
  • features.md
  • features/features.go
  • operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml
  • operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml
  • operator/v1/types_machineconfiguration.go
  • operator/v1/zz_generated.featuregated-crd-manifests.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
💤 Files with no reviewable changes (12)
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
  • operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
  • features/features.go
  • features.md
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
  • operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • operator/v1/zz_generated.featuregated-crd-manifests.yaml

📝 Walkthrough

Walkthrough

This pull request removes the ManagedBootImages feature gate and its cloud-specific variants (ManagedBootImagesAWS, ManagedBootImagesAzure, ManagedBootImagesvSphere) from the codebase. Changes include deleting feature gate definitions from the feature registry, removing related documentation entries, updating CRD annotations and validation tags, and removing these gates from multiple feature gate configuration manifests across different cluster profiles. The ManagedBootImagesCPMS feature gate is retained as the primary gate for related functionality. The net effect is streamlining feature gate definitions by consolidating to the CPMS variant.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: removal of four boot image update feature gates across multiple versions.
Description check ✅ Passed The description is directly related to the changeset, providing context about which feature gates are being removed and referencing the related MCO changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ 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

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.5.0)

Error: build linters: unable to load custom analyzer "kubeapilinter": tools/_output/bin/kube-api-linter.so, plugin: not implemented
The command is terminated due to an error: build linters: unable to load custom analyzer "kubeapilinter": tools/_output/bin/kube-api-linter.so, plugin: not implemented


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

@openshift-ci openshift-ci bot requested review from JoelSpeed and everettraven March 2, 2026 18:02
@djoshy
Copy link
Contributor Author

djoshy commented Mar 2, 2026

/jira refresh

@qodo-code-review
Copy link

Review Summary by Qodo

Remove deprecated boot image feature gates and consolidate to ManagedBootImagesCPMS

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Remove four deprecated boot image feature gates
  - ManagedBootImages, ManagedBootImagesAWS, ManagedBootImagesAzure, ManagedBootImagesvSphere
• Update validation rules to only require ManagedBootImagesCPMS
• Move managedBootImages fields to ungated CRD manifests
• Delete ManagedBootImages-specific CRD manifest file
Diagram
flowchart LR
  A["Four Boot Image FGs<br/>ManagedBootImages<br/>ManagedBootImagesAWS<br/>ManagedBootImagesAzure<br/>ManagedBootImagesvSphere"] -->|Remove| B["Feature Gate Definitions"]
  A -->|Remove| C["Feature Gate Annotations"]
  A -->|Remove| D["Payload Manifests"]
  B -->|Update| E["ManagedBootImagesCPMS Only"]
  C -->|Move to Ungated| F["CRD Manifests"]
  D -->|Simplify| G["Feature Gate Lists"]
Loading

Grey Divider

File Changes

1. features/features.go ✨ Enhancement +0/-32

Remove four boot image feature gate definitions

features/features.go


2. operator/v1/types_machineconfiguration.go ✨ Enhancement +3/-5

Remove feature gate annotations from API types

operator/v1/types_machineconfiguration.go


3. features.md 📝 Documentation +0/-4

Remove deprecated feature gates from documentation

features.md


View more (16)
4. operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml 🧪 Tests +0/-1

Remove ManagedBootImages from test feature gates

operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml


5. operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml 🧪 Tests +0/-2

Remove feature gate requirement from test

operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml


6. operator/v1/zz_generated.featuregated-crd-manifests.yaml ✨ Enhancement +1/-2

Update CRD feature gate list to remove deprecated gates

operator/v1/zz_generated.featuregated-crd-manifests.yaml


7. operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml ✨ Enhancement +257/-0

Add managedBootImages fields to ungated CRD

operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml


8. operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/BootImageSkewEnforcement.yaml ✨ Enhancement +257/-0

Add managedBootImages fields to BootImageSkewEnforcement CRD

operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/BootImageSkewEnforcement.yaml


9. operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/IrreconcilableMachineConfig.yaml ✨ Enhancement +257/-0

Add managedBootImages fields to IrreconcilableMachineConfig CRD

operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/IrreconcilableMachineConfig.yaml


10. operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml ✨ Enhancement +0/-1253

Delete ManagedBootImages-gated CRD manifest file

operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImages.yaml


11. operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml ✨ Enhancement +0/-1

Remove ManagedBootImages feature gate annotation

operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml


12. payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml ⚙️ Configuration changes +0/-12

Remove deprecated boot image gates from manifest

payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml


13. payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml ⚙️ Configuration changes +0/-12

Remove deprecated boot image gates from manifest

payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml


14. payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml ⚙️ Configuration changes +0/-12

Remove deprecated boot image gates from manifest

payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml


15. payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml ⚙️ Configuration changes +0/-12

Remove deprecated boot image gates from manifest

payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml


16. payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml ⚙️ Configuration changes +0/-12

Remove deprecated boot image gates from manifest

payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml


17. payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml ⚙️ Configuration changes +0/-12

Remove deprecated boot image gates from manifest

payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml


18. payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml ⚙️ Configuration changes +0/-12

Remove deprecated boot image gates from manifest

payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml


19. payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml ⚙️ Configuration changes +0/-12

Remove deprecated boot image gates from manifest

payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml


Grey Divider

Qodo Logo

@qodo-code-review
Copy link

qodo-code-review bot commented Mar 2, 2026

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (2) 📎 Requirement gaps (0)

Grey Divider


Action required

1. managedBootImagesStatus omits optional behavior 📘 Rule violation ✓ Correctness
Description
The new CRD schema description for managedBootImagesStatus does not document what it means when
the optional field is omitted. This violates the requirement to document optional/omitted semantics
for fields using kubebuilder optionality.
Code

operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml[R714-718]

+              managedBootImagesStatus:
+                description: |-
+                  managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is
+                  and will be used by Machine Config Controller while performing boot image updates.
+                properties:
Evidence
PR Compliance ID 5 requires optional fields to explicitly describe behavior when omitted.
ManagedBootImagesStatus is marked +optional, but the generated CRD description for
managedBootImagesStatus does not explain omitted behavior.

AGENTS.md
operator/v1/types_machineconfiguration.go[288-292]
operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml[714-717]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`ManagedBootImagesStatus` is optional but its documentation does not explain the meaning/behavior when the field is omitted.

## Issue Context
The generated CRD schema descriptions are derived from the Go type comments. Compliance requires optional fields to document omitted behavior.

## Fix Focus Areas
- operator/v1/types_machineconfiguration.go[288-301]
- operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml[714-718]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. resource enum contradicts docs 📘 Rule violation ✓ Correctness
Description
The resource field documentation says controlplanemachinesets is valid, but the ungated enum
only allows machinesets. This creates a documentation/validation mismatch for API consumers.
Code

operator/v1/types_machineconfiguration.go[R430-434]

// MachineManagerManagedResourceType is a string enum used in the MachineManager type to describe the resource
// type to be registered.
-// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImages,enum=machinesets
-// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImages;ManagedBootImagesCPMS,enum=machinesets;controlplanemachinesets
+// +kubebuilder:validation:Enum:="machinesets"
+// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImagesCPMS,enum=machinesets;controlplanemachinesets
type MachineManagerMachineSetsResourceType string
Evidence
PR Compliance ID 6 requires documented constraints/values to be enforced by validation. The new
+kubebuilder:validation:Enum:="machinesets" restricts values to only machinesets in the ungated
schema, while the documentation (and generated CRD description) still claims both machinesets and
controlplanemachinesets are valid.

AGENTS.md
operator/v1/types_machineconfiguration.go[430-434]
operator/v1/types_machineconfiguration.go[369-376]
operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml[736-744]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The `resource` field claims `controlplanemachinesets` is a valid value, but the ungated validation enum only permits `machinesets`, creating a contract mismatch.

## Issue Context
This PR introduces `+kubebuilder:validation:Enum:=&quot;machinesets&quot;` while retaining documentation (and generated CRD description) that lists both `machinesets` and `controlplanemachinesets`. If `controlplanemachinesets` is intended to be feature-gated by `ManagedBootImagesCPMS`, the documentation needs to explicitly state that; otherwise, the validation needs to allow it.

## Fix Focus Areas
- operator/v1/types_machineconfiguration.go[369-386]
- operator/v1/types_machineconfiguration.go[430-441]
- operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml[736-744]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

3. Stale legacy gate allowlists 🐞 Bug ⛯ Reliability
Description
ManagedBootImages/ManagedBootImagesAWS feature gates were removed from the canonical feature-gate
registry, but their names still exist in legacy allowlists used to bypass enhancement-PR
requirements. This contradicts the PR goal (“remove all references”) and could allow reintroducing
these removed gates without the expected enhancement governance checks.
Code

features/features.go[L315-345]

-	FeatureGateManagedBootImages = newFeatureGate("ManagedBootImages").
-					reportProblemsToJiraComponent("MachineConfigOperator").
-					contactPerson("djoshy").
-					productScope(ocpSpecific).
-					enhancementPR(legacyFeatureGateWithoutEnhancement).
-					enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
-					mustRegister()
-
-	FeatureGateManagedBootImagesAWS = newFeatureGate("ManagedBootImagesAWS").
-					reportProblemsToJiraComponent("MachineConfigOperator").
-					contactPerson("djoshy").
-					productScope(ocpSpecific).
-					enhancementPR(legacyFeatureGateWithoutEnhancement).
-					enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
-					mustRegister()
-
-	FeatureGateManagedBootImagesvSphere = newFeatureGate("ManagedBootImagesvSphere").
-						reportProblemsToJiraComponent("MachineConfigOperator").
-						contactPerson("rsaini").
-						productScope(ocpSpecific).
-						enhancementPR("https://github.com/openshift/enhancements/pull/1496").
-						enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
-						mustRegister()
-
-	FeatureGateManagedBootImagesAzure = newFeatureGate("ManagedBootImagesAzure").
-						reportProblemsToJiraComponent("MachineConfigOperator").
-						contactPerson("djoshy").
-						productScope(ocpSpecific).
-						enhancementPR("https://github.com/openshift/enhancements/pull/1761").
-						enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
-						mustRegister()
Evidence
The feature gates are removed from the main feature gate registry (diff hunk), but both legacy
allowlists still include the removed names; these allowlists are explicitly consulted when allowing
a feature gate to use the legacy no-enhancement marker.

features/legacyfeaturegates.go[56-68]
payload-command/render/legacyfeaturegates.go[58-70]
features/util.go[205-210]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`ManagedBootImages` and `ManagedBootImagesAWS` feature gates were removed from the canonical feature-gate registry, but they still exist in two legacy allowlists. These allowlists are used to permit the `legacyFeatureGateWithoutEnhancement` path, so leaving removed gates here undermines the PR intent (“remove references”) and weakens future guardrails.

### Issue Context
Even though the gates are no longer registered, the strings remain and could allow reintroduction of those gates without an enhancement PR.

### Fix Focus Areas
- features/legacyfeaturegates.go[56-68]
- payload-command/render/legacyfeaturegates.go[58-70]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Advisory comments

4. Misleading test suite filename 🐞 Bug ✧ Quality
Description
The CRD-schema test suite file name still implies it requires both ManagedBootImages and
ManagedBootImagesCPMS, but the suite now only enables ManagedBootImagesCPMS. This mismatch is
confusing and increases the chance of incorrect future edits.
Code

operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml[R4-6]

featureGates:
-- ManagedBootImages
- ManagedBootImagesCPMS
tests:
Evidence
The suite’s declared feature gates now only include ManagedBootImagesCPMS, but the filename still
contains ManagedBootImages+..., which no longer matches the suite’s intent/requirements.

operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml[1-6]
tests/crd_filter.go[24-52]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
A test suite filename still includes `ManagedBootImages+...` even though the suite now only enables `ManagedBootImagesCPMS`. This is misleading for maintainers.

### Issue Context
The test harness uses the `featureGates:` field in the suite spec; the filename is primarily for human readability, so this is a clarity/maintenance fix.

### Fix Focus Areas
- operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImages+ManagedBootImagesCPMS.yaml[1-6]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Mar 2, 2026
@openshift-ci-robot
Copy link

@djoshy: This pull request references Jira Issue OCPBUGS-74514, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.22.0) matches configured target version for branch (4.22.0)
  • bug is in the state New, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @sergiordlr

Details

In response to this:

/jira refresh

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 requested a review from sergiordlr March 2, 2026 18:02
Comment on lines +714 to +718
managedBootImagesStatus:
description: |-
managedBootImagesStatus reflects what the latest cluster-validated boot image configuration is
and will be used by Machine Config Controller while performing boot image updates.
properties:

Choose a reason for hiding this comment

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

Action required

1. managedbootimagesstatus omits optional behavior 📘 Rule violation ✓ Correctness

The new CRD schema description for managedBootImagesStatus does not document what it means when
the optional field is omitted. This violates the requirement to document optional/omitted semantics
for fields using kubebuilder optionality.
Agent Prompt
## Issue description
`ManagedBootImagesStatus` is optional but its documentation does not explain the meaning/behavior when the field is omitted.

## Issue Context
The generated CRD schema descriptions are derived from the Go type comments. Compliance requires optional fields to document omitted behavior.

## Fix Focus Areas
- operator/v1/types_machineconfiguration.go[288-301]
- operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml[714-718]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines 430 to 434
// MachineManagerManagedResourceType is a string enum used in the MachineManager type to describe the resource
// type to be registered.
// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImages,enum=machinesets
// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImages;ManagedBootImagesCPMS,enum=machinesets;controlplanemachinesets
// +kubebuilder:validation:Enum:="machinesets"
// +openshift:validation:FeatureGateAwareEnum:requiredFeatureGate=ManagedBootImagesCPMS,enum=machinesets;controlplanemachinesets
type MachineManagerMachineSetsResourceType string

Choose a reason for hiding this comment

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

Action required

2. resource enum contradicts docs 📘 Rule violation ✓ Correctness

The resource field documentation says controlplanemachinesets is valid, but the ungated enum
only allows machinesets. This creates a documentation/validation mismatch for API consumers.
Agent Prompt
## Issue description
The `resource` field claims `controlplanemachinesets` is a valid value, but the ungated validation enum only permits `machinesets`, creating a contract mismatch.

## Issue Context
This PR introduces `+kubebuilder:validation:Enum:="machinesets"` while retaining documentation (and generated CRD description) that lists both `machinesets` and `controlplanemachinesets`. If `controlplanemachinesets` is intended to be feature-gated by `ManagedBootImagesCPMS`, the documentation needs to explicitly state that; otherwise, the validation needs to allow it.

## Fix Focus Areas
- operator/v1/types_machineconfiguration.go[369-386]
- operator/v1/types_machineconfiguration.go[430-441]
- operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/AAA_ungated.yaml[736-744]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@JoelSpeed
Copy link
Contributor

/test integration

@qodo-code-review
Copy link

qodo-code-review bot commented Mar 2, 2026

PR-Agent: could not fine a component named integration in a supported language in this PR.

@JoelSpeed
Copy link
Contributor

/lgtm

Assuming the integration failure was a flake

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Mar 2, 2026
@openshift-ci-robot
Copy link

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aws-ovn
/test e2e-aws-ovn-hypershift
/test e2e-aws-ovn-hypershift-conformance
/test e2e-aws-ovn-techpreview
/test e2e-aws-serial-1of2
/test e2e-aws-serial-2of2
/test e2e-aws-serial-techpreview-1of2
/test e2e-aws-serial-techpreview-2of2
/test e2e-azure
/test e2e-gcp
/test e2e-upgrade
/test e2e-upgrade-out-of-change
/test minor-e2e-upgrade-minor

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 2, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: JoelSpeed

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 Mar 2, 2026
@djoshy
Copy link
Contributor Author

djoshy commented Mar 2, 2026

/test verify-client-go

This one failed too, hmm

@qodo-code-review
Copy link

qodo-code-review bot commented Mar 2, 2026

PR-Agent: could not fine a component named verify-client-go in a supported language in this PR.

@djoshy
Copy link
Contributor Author

djoshy commented Mar 2, 2026

+ echo 'No test suite file found for CRD /go/src/github.com/openshift/api/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml, expected /go/src/github.com/openshift/api/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml'
No test suite file found for CRD /go/src/github.com/openshift/api/operator/v1/zz_generated.featuregated-crd-manifests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml, expected /go/src/github.com/openshift/api/operator/v1/tests/machineconfigurations.operator.openshift.io/ManagedBootImagesCPMS.yaml

Looks like this needs a change as well, this used to be a "double" feature gate test file, will rename and push shortly

@djoshy djoshy force-pushed the remove-boot-image-fg branch from 304a865 to 1af9b9a Compare March 2, 2026 18:44
@openshift-ci openshift-ci bot removed the lgtm Indicates that a PR is ready to be merged. label Mar 2, 2026
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 2, 2026

New changes are detected. LGTM label has been removed.

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. 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