Skip to content

Conversation

@patrickdillon
Copy link
Contributor

@patrickdillon patrickdillon commented Jan 22, 2026

User description

Adds separate featuregates for:

  • Install with CAPI control-plane management
  • Install with CAPI compute management

cc @damdo


PR Type

Enhancement


Description

  • Add two new feature gates for Cluster API installer support

  • ClusterAPIControlPlaneInstall for control-plane management

  • ClusterAPIComputeInstall for compute node management

  • Register gates in DevPreviewNoUpgrade and TechPreviewNoUpgrade modes

  • Update all feature gate manifest files with new gates


Diagram Walkthrough

flowchart LR
  A["Feature Gate Definitions"] -->|"Add ClusterAPIControlPlaneInstall"| B["Control-Plane Management"]
  A -->|"Add ClusterAPIComputeInstall"| C["Compute Management"]
  B --> D["Update Manifest Files"]
  C --> D
  D --> E["8 Hypershift & SelfManagedHA Configs"]
Loading

File Walkthrough

Relevant files
Enhancement
1 files
features.go
Add two new Cluster API feature gates                                       
+22/-6   
Documentation
1 files
features.md
Document new Cluster API feature gates                                     
+2/-0     
Configuration changes
8 files
featureGate-Hypershift-Default.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-Hypershift-DevPreviewNoUpgrade.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-Hypershift-OKD.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-Hypershift-TechPreviewNoUpgrade.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-SelfManagedHA-Default.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-SelfManagedHA-OKD.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     

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

openshift-ci-robot commented Jan 22, 2026

@patrickdillon: This pull request references CORS-4295 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Adds separate featuregates for:

  • Install with CAPI control-plane management
  • Install with CAPI compute management

cc @damdo

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 Jan 22, 2026

Hello @patrickdillon! 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/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Jan 22, 2026
@coderabbitai
Copy link

coderabbitai bot commented Jan 22, 2026

📝 Walkthrough

Walkthrough

Two new feature gates, ClusterAPIComputeInstall and ClusterAPIControlPlaneInstall, were added in code and documentation. They were declared in features/features.go with product scope ocpSpecific, contact person patrickdillon, and enhancement PR openshift/enhancements#1465; both are enabled in DevPreviewNoUpgrade. The features.md table gained two rows. Corresponding FeatureGate YAMLs were updated: enabled in DevPreviewNoUpgrade manifests and added as disabled entries in Default, OKD, and TechPreviewNoUpgrade manifests.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: adding feature gates for Cluster API-based machine management (control-plane and compute installs).
Description check ✅ Passed The description is directly related to the changeset, clearly explaining the addition of two new feature gates and the updates to manifest files.
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 docstrings

Warning

Tools execution failed with the following error:

Failed to run tools: 13 INTERNAL: Received RST_STREAM with code 2 (Internal server error)


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

@openshift-ci-robot
Copy link

openshift-ci-robot commented Jan 22, 2026

@patrickdillon: This pull request references CORS-4295 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

User description

Adds separate featuregates for:

  • Install with CAPI control-plane management
  • Install with CAPI compute management

cc @damdo


PR Type

Enhancement


Description

  • Add two new feature gates for Cluster API installer support

  • ClusterAPIControlPlaneInstall for control-plane management

  • ClusterAPIComputeInstall for compute node management

  • Register gates in DevPreviewNoUpgrade and TechPreviewNoUpgrade modes

  • Update all feature gate manifest files with new gates


Diagram Walkthrough

flowchart LR
 A["Feature Gate Definitions"] -->|"Add ClusterAPIControlPlaneInstall"| B["Control-Plane Management"]
 A -->|"Add ClusterAPIComputeInstall"| C["Compute Management"]
 B --> D["Update Manifest Files"]
 C --> D
 D --> E["8 Hypershift & SelfManagedHA Configs"]
Loading

File Walkthrough

Relevant files
Enhancement
1 files
features.go
Add two new Cluster API feature gates                                       
+22/-6   
Documentation
1 files
features.md
Document new Cluster API feature gates                                     
+2/-0     
Configuration changes
8 files
featureGate-Hypershift-Default.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-Hypershift-DevPreviewNoUpgrade.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-Hypershift-OKD.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-Hypershift-TechPreviewNoUpgrade.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-SelfManagedHA-Default.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-SelfManagedHA-OKD.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     
featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml
Add Cluster API compute and control-plane gates                   
+6/-0     

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.

@qodo-code-review
Copy link

qodo-code-review bot commented Jan 22, 2026

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@qodo-code-review
Copy link

qodo-code-review bot commented Jan 22, 2026

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Restrict feature gates to specific cluster profile

Restrict the new CAPI feature gates to the SelfManagedHA cluster profile by
using enableInClusterProfile instead of the general enableIn to prevent enabling
them on Hypershift clusters.

features/features.go [973-987]

 	FeatureGateClusterAPIControlPlaneInstall = newFeatureGate("ClusterAPIControlPlaneInstall").
 							reportProblemsToJiraComponent("Installer / openshift-installer").
 							contactPerson("patrickdillon").
 							productScope(ocpSpecific).
 							enhancementPR("https://github.com/openshift/enhancements/pull/1465").
-							enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+							enableInClusterProfile(SelfManagedHA, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
 							mustRegister()
 
 	FeatureGateClusterAPIComputeInstall = newFeatureGate("ClusterAPIComputeInstall").
 						reportProblemsToJiraComponent("Installer / openshift-installer").
 						contactPerson("patrickdillon").
 						productScope(ocpSpecific).
 						enhancementPR("https://github.com/openshift/enhancements/pull/1465").
-						enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+						enableInClusterProfile(SelfManagedHA, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
 						mustRegister()
  • Apply / Chat
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies a potential logical error where features intended for SelfManagedHA are also being enabled for Hypershift, which could cause unexpected behavior.

High
General
Alphabetically reorder declarations

Reorder the new feature gate declarations alphabetically, placing
ClusterAPIComputeInstall before ClusterAPIControlPlaneInstall.

features/features.go [973-987]

+FeatureGateClusterAPIComputeInstall = newFeatureGate("ClusterAPIComputeInstall").
+    ...
 FeatureGateClusterAPIControlPlaneInstall = newFeatureGate("ClusterAPIControlPlaneInstall").
     ...
-FeatureGateClusterAPIComputeInstall = newFeatureGate("ClusterAPIComputeInstall").
-    ...

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 2

__

Why: This is a minor stylistic suggestion to maintain alphabetical ordering of feature gate declarations, which improves code readability and consistency.

Low
  • Update

enhancementPR("https://github.com/openshift/enhancements/pull/1862").
enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
reportProblemsToJiraComponent("Networking/ovn-kubernetes").
Copy link
Contributor Author

Choose a reason for hiding this comment

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

this snuck in, but is a result of gofmt -w features/features.go

contactPerson("patrickdillon").
productScope(ocpSpecific).
enhancementPR("https://github.com/openshift/enhancements/pull/1465").
enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
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 went ahead and stuck this in techpreview, but I'm happy to get any guidance if we should downgrade until we have an implementation to graduate

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thinking this through more, I realize we may want to use this featuregate to change the default for installs from MAPI->CAPI, so we will want the soft landing of DevPreview. I went ahead and removed it from TechPreview in b358db8

@patrickdillon
Copy link
Contributor Author

/label tide/merge-method-squash

@openshift-ci openshift-ci bot added the tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges. label Jan 22, 2026
@JoelSpeed
Copy link
Contributor

@patrickdillon Could you please squash this manually, to my knowledge we aren't supposed to use the tide squash method on payload contributing repos

Otherwise LGTM

Copy link
Member

@damdo damdo left a comment

Choose a reason for hiding this comment

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

Looks reasonable to me, thanks @patrickdillon

/lgtm

/hold

To sort the squashing

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jan 23, 2026
@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Jan 23, 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

@JoelSpeed
Copy link
Contributor

/override ci/prow/e2e-aws-serial-techpreview
/override ci/prow/e2e-aws-serial

Known issue with the pipeline controller, these don't exist here

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jan 23, 2026

@JoelSpeed: Overrode contexts on behalf of JoelSpeed: ci/prow/e2e-aws-serial, ci/prow/e2e-aws-serial-techpreview

Details

In response to this:

/override ci/prow/e2e-aws-serial-techpreview
/override ci/prow/e2e-aws-serial

Known issue with the pipeline controller, these don't exist here

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.

Adds separate featuregates for:
- Install with CAPI control-plane management
- Install with CAPI compute management
@openshift-ci openshift-ci bot removed the lgtm Indicates that a PR is ready to be merged. label Jan 23, 2026
@patrickdillon
Copy link
Contributor Author

/hold cancel

squashed!

@openshift-ci openshift-ci bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jan 23, 2026
@JoelSpeed
Copy link
Contributor

/lgtm

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

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jan 23, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: damdo, 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 Jan 23, 2026
@JoelSpeed
Copy link
Contributor

/override ci/prow/e2e-aws-serial-techpreview
/override ci/prow/e2e-aws-serial

Pipeline controller issue, these don't exist here

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jan 23, 2026

@JoelSpeed: Overrode contexts on behalf of JoelSpeed: ci/prow/e2e-aws-serial, ci/prow/e2e-aws-serial-techpreview

Details

In response to this:

/override ci/prow/e2e-aws-serial-techpreview
/override ci/prow/e2e-aws-serial

Pipeline controller issue, these don't exist here

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.

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jan 23, 2026

@patrickdillon: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-aws-ovn-hypershift 7666419 link true /test e2e-aws-ovn-hypershift

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.

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-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. Review effort 2/5 size/M Denotes a PR that changes 30-99 lines, ignoring generated files. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants