Skip to content

OCPEDGE-2197: Promote TNF (Dual Replica) to default#2490

Open
fonta-rh wants to merge 3 commits intoopenshift:masterfrom
fonta-rh:OCPEDGE-2070-promote-TNF-to-GA
Open

OCPEDGE-2197: Promote TNF (Dual Replica) to default#2490
fonta-rh wants to merge 3 commits intoopenshift:masterfrom
fonta-rh:OCPEDGE-2070-promote-TNF-to-GA

Conversation

@fonta-rh
Copy link
Copy Markdown

Promote DualReplica to default.

Two nodes with Fencing (DualReplica) allows deploying of a two-node OpenShift cluster with the necessary fencing tooling to prevent split-brain.

Enhancement Proposal: openshift/enhancements#1675

@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 Sep 19, 2025
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Sep 19, 2025

Hello @fonta-rh! 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
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Sep 19, 2025

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

@openshift-ci openshift-ci bot added the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Sep 19, 2025
@JoelSpeed
Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

1 similar comment
@fonta-rh
Copy link
Copy Markdown
Author

fonta-rh commented Oct 9, 2025

/test verify-feature-promotion

@fonta-rh fonta-rh marked this pull request as ready for review October 13, 2025 14:46
@openshift-ci openshift-ci bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Oct 13, 2025
@everettraven
Copy link
Copy Markdown
Contributor

/assign

@everettraven
Copy link
Copy Markdown
Contributor

@fonta-rh Let me know when you believe this is ready for a review. I took a quick look at the promotion verification job and it looks like there is some more runs to be gathered.

@fonta-rh
Copy link
Copy Markdown
Author

Hello @everettraven ! Yeah, we're still missing runs and % of success. I removed the draft as I don't expect any more changes on our side and wanted to make sure the rest of the CI was not hiding some trouble. We'll keep looking at this and contact you when it's passing verify-feature-promotion. Thanks!

@fonta-rh
Copy link
Copy Markdown
Author

/test verify-feature-promotion

4 similar comments
@eggfoobar
Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@eggfoobar
Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@eggfoobar
Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@eggfoobar
Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review bot commented Jan 26, 2026

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

@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jan 26, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jan 26, 2026

📝 Walkthrough

Walkthrough

The change reintroduces and repositions the DualReplica feature row in features.md, expands the FeatureGateDualReplica enablement to include inDefault() and inOKD() in features/features.go, adds DualReplica as an allowed controlPlaneTopology enum value in multiple CRDs (infrastructures and controllerconfigs for Default and OKD), moves DualReplica from disabled to enabled in several FeatureGate payloads, and removes a release.openshift.io/feature-set annotation from the pacemakerclusters CRD.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: promoting the DualReplica feature from development/preview to default, which aligns with the changeset's modifications to feature gates and CRD configurations.
Description check ✅ Passed The description is directly related to the changeset, explaining the business purpose of promoting DualReplica to default and referencing the corresponding enhancement proposal.
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

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.11.4)

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.

@fonta-rh
Copy link
Copy Markdown
Author

fonta-rh commented Feb 2, 2026

/test verify-feature-promotion

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review bot commented Feb 2, 2026

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

@fonta-rh fonta-rh force-pushed the OCPEDGE-2070-promote-TNF-to-GA branch from 9b5881e to 3837789 Compare February 2, 2026 13:40
@openshift-merge-robot openshift-merge-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Feb 2, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Feb 2, 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 ask for approval from everettraven. 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

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@features.md`:
- Line 81: The DualReplica table row in features.md violates MD060 (inconsistent
table pipe spacing) — fix the "DualReplica" row by normalizing pipe spacing so
each cell has a single space after the opening pipe and a single space before
the closing pipe, remove any stray/empty pipes so the row has the same number of
columns as the header, and ensure each cell content (e.g., "Enabled") matches
the surrounding spacing convention used by the other rows.

@eggfoobar
Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review bot commented Feb 4, 2026

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

@eggfoobar
Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review bot commented Feb 15, 2026

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

@eggfoobar
Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@qodo-code-review
Copy link
Copy Markdown

ⓘ Your monthly quota for Qodo has expired. Upgrade your plan
ⓘ Paying users. Check that your Qodo account is linked with this Git user account

@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Feb 24, 2026
@openshift-merge-robot
Copy link
Copy Markdown
Contributor

PR needs rebase.

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.

@eggfoobar
Copy link
Copy Markdown
Contributor

/test verify-feature-promotion

@qodo-code-review
Copy link
Copy Markdown

ⓘ Your monthly quota for Qodo has expired. Upgrade your plan
ⓘ Paying users. Check that your Qodo account is linked with this Git user account

@fonta-rh fonta-rh force-pushed the OCPEDGE-2070-promote-TNF-to-GA branch from 103fd50 to c835c7f Compare March 24, 2026 09:16
@openshift-ci openshift-ci bot removed needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Mar 24, 2026
@fonta-rh fonta-rh marked this pull request as ready for review March 24, 2026 09:16
@openshift-ci openshift-ci bot added size/S Denotes a PR that changes 10-29 lines, ignoring generated files. and removed do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels Mar 24, 2026
@openshift-ci openshift-ci bot requested a review from JoelSpeed March 24, 2026 09:17
@fonta-rh fonta-rh changed the title Promote TNF (Dual Replica) to default OCPEDGE-2197: Promote TNF (Dual Replica) to default Mar 24, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Mar 24, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Mar 24, 2026

@fonta-rh: This pull request references OCPEDGE-2197 which is a valid jira issue.

Details

In response to this:

Promote DualReplica to default.

Two nodes with Fencing (DualReplica) allows deploying of a two-node OpenShift cluster with the necessary fencing tooling to prevent split-brain.

Enhancement Proposal: openshift/enhancements#1675

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.

fonta-rh and others added 2 commits March 31, 2026 11:45
All features enabled in Default must also be enabled in OKD to maintain
feature parity with the community distribution. This fixes the failing
TestOKDHasAllDefaultFeatureGates unit test.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@fonta-rh
Copy link
Copy Markdown
Author

/retest-required

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@fonta-rh fonta-rh force-pushed the OCPEDGE-2070-promote-TNF-to-GA branch from c835c7f to b6febf6 Compare March 31, 2026 14:11
@openshift-ci openshift-ci bot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Mar 31, 2026
api.openshift.io/merged-by-featuregates: "true"
include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/feature-set: CustomNoUpgrade,DevPreviewNoUpgrade,TechPreviewNoUpgrade
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

How did this change?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nvm, it's tied to the featuregate, we should be good

Copy link
Copy Markdown

@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)
payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml (1)

1355-1362: Document DualReplica in the controlPlaneTopology description

The enum now includes DualReplica, but the description block does not explain it. Please add a short description so generated API docs stay accurate.

Proposed patch
                           The 'HighlyAvailableArbiter' mode indicates that the control plane will consist of 2 control-plane nodes
                           that run conventional services and 1 smaller sized arbiter node that runs a bare minimum of services to maintain quorum.
+                          The 'DualReplica' mode indicates that the control plane consists of two control-plane nodes
+                          and relies on fencing to avoid split-brain in two-node deployments.
                         enum:
                         - HighlyAvailable
                         - HighlyAvailableArbiter
                         - SingleReplica
                         - DualReplica

As per coding guidelines, "Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity."

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

In
`@payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml`
around lines 1355 - 1362, The controlPlaneTopology description is missing an
entry for the new enum value DualReplica; update the description block that
explains controlPlaneTopology (the prose above the enum containing
HighlyAvailable, HighlyAvailableArbiter, SingleReplica, DualReplica, External)
to include a short sentence describing DualReplica — e.g., "DualReplica
indicates the control plane consists of two full-sized control-plane replicas
(two control-plane nodes providing replicated control-plane services) without an
arbiter" — so the generated API docs accurately document the new enum value.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml`:
- Around line 1355-1362: The controlPlaneTopology description is missing an
entry for the new enum value DualReplica; update the description block that
explains controlPlaneTopology (the prose above the enum containing
HighlyAvailable, HighlyAvailableArbiter, SingleReplica, DualReplica, External)
to include a short sentence describing DualReplica — e.g., "DualReplica
indicates the control plane consists of two full-sized control-plane replicas
(two control-plane nodes providing replicated control-plane services) without an
arbiter" — so the generated API docs accurately document the new enum value.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 9ecc2581-dcbc-4f5c-9775-6a9d5d327c9b

📥 Commits

Reviewing files that changed from the base of the PR and between c835c7f and b6febf6.

⛔ Files ignored due to path filters (5)
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-OKD.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • etcd/v1alpha1/zz_generated.crd-manifests/0000_25_etcd_01_pacemakerclusters.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
  • machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml is excluded by !**/zz_generated.crd-manifests/*
📒 Files selected for processing (11)
  • features.md
  • features/features.go
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml
  • payload-manifests/crds/0000_10_config-operator_01_infrastructures-OKD.crd.yaml
  • payload-manifests/crds/0000_25_etcd_01_pacemakerclusters.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml
  • payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
  • payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
💤 Files with no reviewable changes (1)
  • payload-manifests/crds/0000_25_etcd_01_pacemakerclusters.crd.yaml
✅ Files skipped from review due to trivial changes (1)
  • features.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • features/features.go

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 31, 2026

@fonta-rh: 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/verify-feature-promotion b6febf6 link true /test verify-feature-promotion

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

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants