Skip to content

OCPBUGS-74528: upkeep: HighlyAvailableArbiter has been GA for 2 releases#2759

Open
eggfoobar wants to merge 1 commit intoopenshift:masterfrom
eggfoobar:upkeep-remove-arbiter-featuregate
Open

OCPBUGS-74528: upkeep: HighlyAvailableArbiter has been GA for 2 releases#2759
eggfoobar wants to merge 1 commit intoopenshift:masterfrom
eggfoobar:upkeep-remove-arbiter-featuregate

Conversation

@eggfoobar
Copy link
Contributor

removing the HighlyAvailableArbiter featureGate, the feature has been GA for 2 releases

removing the HighlyAvailableArbiter featureGate, the feature has been GA for 2 releases

Signed-off-by: ehila <ehila@redhat.com>
@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/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels Mar 10, 2026
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 10, 2026

Hello @eggfoobar! 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-robot
Copy link

@eggfoobar: This pull request references Jira Issue OCPBUGS-74528, 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 @jogeo

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

Details

In response to this:

removing the HighlyAvailableArbiter featureGate, the feature has been GA for 2 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.

@openshift-ci openshift-ci bot requested a review from jogeo March 10, 2026 21:12
@openshift-ci openshift-ci bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Mar 10, 2026
@coderabbitai
Copy link

coderabbitai bot commented Mar 10, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro

Run ID: 89a6dc72-296f-486d-b7f7-79360ead4ab0

📥 Commits

Reviewing files that changed from the base of the PR and between 1f950f7 and 405f89c.

⛔ Files ignored due to path filters (10)
  • config/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AAA_ungated.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DualReplica.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/HighlyAvailableArbiter+DualReplica.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/HighlyAvailableArbiter.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AAA_ungated.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DualReplica.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/HighlyAvailableArbiter+DualReplica.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
  • machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/HighlyAvailableArbiter.yaml is excluded by !**/zz_generated.featuregated-crd-manifests/**
📒 Files selected for processing (12)
  • config/v1/types_infrastructure.go
  • features.md
  • features/features.go
  • 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
  • tools/codegen/cmd/featuregate-test-analyzer.go
💤 Files with no reviewable changes (10)
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
  • features.md
  • tools/codegen/cmd/featuregate-test-analyzer.go
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml

📝 Walkthrough

Walkthrough

This pull request removes the HighlyAvailableArbiter feature gate across multiple components. Changes include removing the exported feature gate declaration, eliminating HighlyAvailableArbiter from all feature gate manifest files, updating the ControlPlaneTopology validation schema to allow HighlyAvailableArbiter without requiring the feature gate, removing documentation entries, and eliminating arbiter-specific logic from the test analyzer tool.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: removing the HighlyAvailableArbiter feature gate after it reached GA status, which aligns with the comprehensive removal across multiple files shown in the changeset.
Description check ✅ Passed The description directly states the purpose of the PR: removing the HighlyAvailableArbiter feature gate because the feature has been GA for two releases, which matches the actual changeset modifications.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Stable And Deterministic Test Names ✅ Passed This PR does not modify any Ginkgo test files. Changes are limited to API types, feature gate configs, manifests, and a feature gate analysis tool with no test constructs.
Test Structure And Quality ✅ Passed No test files were modified in this PR; the custom check for Ginkgo test code quality is not applicable.

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

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

openshift-ci bot commented Mar 10, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign everettraven for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

@qodo-code-review
Copy link

ⓘ You are approaching your monthly quota for Qodo. Upgrade your plan

Review Summary by Qodo

Remove HighlyAvailableArbiter feature gate - GA for 2 releases

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Remove HighlyAvailableArbiter feature gate after GA stabilization
• Make HighlyAvailableArbiter topology mode always available
• Update validation rules to allow arbiter mode unconditionally
• Fix code formatting and indentation in feature gate definitions
Diagram
flowchart LR
  A["HighlyAvailableArbiter<br/>Feature Gate"] -->|Remove| B["Always Available<br/>Topology Mode"]
  C["Feature Gate<br/>Validation Rules"] -->|Simplify| D["Unconditional<br/>Enum Values"]
  E["CRD Manifests"] -->|Update| F["Include Arbiter<br/>in All Profiles"]
Loading

Grey Divider

File Changes

1. features/features.go ✨ Enhancement +13/-21

Remove HighlyAvailableArbiter feature gate definition

features/features.go


2. config/v1/types_infrastructure.go ✨ Enhancement +2/-4

Simplify topology validation by removing feature gate checks

config/v1/types_infrastructure.go


3. config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AAA_ungated.yaml ⚙️ Configuration changes +1/-0

Add HighlyAvailableArbiter to ungated infrastructure enum

config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AAA_ungated.yaml


View more (19)
4. config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DualReplica.yaml ⚙️ Configuration changes +1/-0

Add HighlyAvailableArbiter to DualReplica profile enum

config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DualReplica.yaml


5. machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AAA_ungated.yaml ⚙️ Configuration changes +1/-0

Add HighlyAvailableArbiter to ungated controller config enum

machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AAA_ungated.yaml


6. machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DualReplica.yaml ⚙️ Configuration changes +1/-0

Add HighlyAvailableArbiter to DualReplica controller config enum

machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DualReplica.yaml


7. config/v1/zz_generated.featuregated-crd-manifests.yaml Additional files +0/-2

...

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


8. config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/HighlyAvailableArbiter+DualReplica.yaml Additional files +0/-2223

...

config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/HighlyAvailableArbiter+DualReplica.yaml


9. config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/HighlyAvailableArbiter.yaml Additional files +0/-2221

...

config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/HighlyAvailableArbiter.yaml


10. features.md Additional files +0/-1

...

features.md


11. machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml Additional files +0/-2

...

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


12. machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/HighlyAvailableArbiter+DualReplica.yaml Additional files +0/-2768

...

machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/HighlyAvailableArbiter+DualReplica.yaml


13. machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/HighlyAvailableArbiter.yaml Additional files +0/-2766

...

machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/HighlyAvailableArbiter.yaml


14. payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml Additional files +0/-3

...

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


15. payload-manifests/featuregates/featureGate-4-10-Hypershift-DevPreviewNoUpgrade.yaml Additional files +0/-3

...

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


16. payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml Additional files +0/-3

...

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


17. payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml Additional files +0/-3

...

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


18. payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml Additional files +0/-3

...

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


19. payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-DevPreviewNoUpgrade.yaml Additional files +0/-3

...

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


20. payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml Additional files +0/-3

...

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


21. payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml Additional files +0/-3

...

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


22. tools/codegen/cmd/featuregate-test-analyzer.go Additional files +0/-3

...

tools/codegen/cmd/featuregate-test-analyzer.go


Grey Divider

Qodo Logo

@qodo-code-review
Copy link

qodo-code-review bot commented Mar 10, 2026

Code Review by Qodo

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

Grey Divider


Action required

1. controlPlaneTopology enum undocumented 📘 Rule violation ✓ Correctness
Description
The controlPlaneTopology field comment does not document the HighlyAvailableArbiter and
DualReplica enum values that are now allowed by validation markers. This leaves API consumers
without an explanation of the behavior/meaning of these permitted values.
Code

config/v1/types_infrastructure.go[R106-107]

+	// +openshift:validation:FeatureGateAwareEnum:featureGate="",enum=HighlyAvailable;HighlyAvailableArbiter;SingleReplica;External
+	// +openshift:validation:FeatureGateAwareEnum:featureGate=DualReplica,enum=HighlyAvailable;HighlyAvailableArbiter;SingleReplica;DualReplica;External
Evidence
PR Compliance ID 5 requires enum constraints implied by validation markers to be documented in the
field comment. The updated FeatureGateAwareEnum markers allow HighlyAvailableArbiter (and
DualReplica when enabled), but the field comment only explains HighlyAvailable, SingleReplica,
and External.

AGENTS.md
config/v1/types_infrastructure.go[99-107]

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 `controlPlaneTopology` field&#x27;s validation markers allow additional enum values (`HighlyAvailableArbiter` and `DualReplica`), but the field comment does not explain those values.

## Issue Context
Compliance requires that enum constraints implied by validation markers be documented in the field comment so users understand the API contract.

## Fix Focus Areas
- config/v1/types_infrastructure.go[99-109]

ⓘ 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

Comment on lines +106 to +107
// +openshift:validation:FeatureGateAwareEnum:featureGate="",enum=HighlyAvailable;HighlyAvailableArbiter;SingleReplica;External
// +openshift:validation:FeatureGateAwareEnum:featureGate=DualReplica,enum=HighlyAvailable;HighlyAvailableArbiter;SingleReplica;DualReplica;External

Choose a reason for hiding this comment

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

Action required

1. controlplanetopology enum undocumented 📘 Rule violation ✓ Correctness

The controlPlaneTopology field comment does not document the HighlyAvailableArbiter and
DualReplica enum values that are now allowed by validation markers. This leaves API consumers
without an explanation of the behavior/meaning of these permitted values.
Agent Prompt
## Issue description
The `controlPlaneTopology` field's validation markers allow additional enum values (`HighlyAvailableArbiter` and `DualReplica`), but the field comment does not explain those values.

## Issue Context
Compliance requires that enum constraints implied by validation markers be documented in the field comment so users understand the API contract.

## Fix Focus Areas
- config/v1/types_infrastructure.go[99-109]

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

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 10, 2026

@eggfoobar: 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/integration 405f89c link true /test integration

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.

@JoelSpeed
Copy link
Contributor

Looks like the integration tests still reference the gate, that will need to be removed

What payload E2E can we run to check that this PR doesn't break any existing jobs? Is there a way to run an arbiter job?

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

Labels

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