From 580187baeb9115fdb05d67a44176dd5c1c211b94 Mon Sep 17 00:00:00 2001 From: ehila Date: Tue, 17 Mar 2026 15:11:44 -0400 Subject: [PATCH] upkeep: remove tna feature gate TNA (two node arbiter) has been GA for the past couple of releases, this is no longer needed as it is supported as part of the platform by default, and the feature gate will be removed from the API entirely. Signed-off-by: ehila --- pkg/asset/agent/installconfig.go | 13 +------------ pkg/types/validation/installconfig.go | 7 +------ 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/pkg/asset/agent/installconfig.go b/pkg/asset/agent/installconfig.go index 2bff2e3ed01..893dc47d78c 100644 --- a/pkg/asset/agent/installconfig.go +++ b/pkg/asset/agent/installconfig.go @@ -256,14 +256,6 @@ func (a *OptionalInstallConfig) validateTNAConfiguration(installConfig *types.In allErrs = append(allErrs, field.Invalid(fieldPath, installConfig.Arbiter.Replicas, "TNA (Two Node with Arbiter) configuration requires exactly 1 arbiter replica")) } - // At this point we know: 2 replicas + arbiter configured - // Check if TNA feature gate is enabled - if !installConfig.Enabled(features.FeatureGateHighlyAvailableArbiter) { - fieldPath := field.NewPath("arbiter") - allErrs = append(allErrs, field.Invalid(fieldPath, "configured", - "arbiter configuration requires FeatureGateHighlyAvailableArbiter to be enabled")) - } - return allErrs } @@ -302,10 +294,7 @@ func (a *OptionalInstallConfig) validateControlPlaneConfiguration(installConfig // Basic boundary check for control plane replicas if *installConfig.ControlPlane.Replicas < 1 || *installConfig.ControlPlane.Replicas > 5 { fieldPath = field.NewPath("controlPlane", "replicas") - supportedControlPlaneRange := []string{"3", "1", "4", "5"} - if installConfig.Enabled(features.FeatureGateHighlyAvailableArbiter) { - supportedControlPlaneRange = append(supportedControlPlaneRange, "2 (with arbiter)") - } + supportedControlPlaneRange := []string{"3", "1", "4", "5", "2 (with arbiter)"} if installConfig.Enabled(features.FeatureGateDualReplica) { supportedControlPlaneRange = append(supportedControlPlaneRange, "2 (with fencing)") } diff --git a/pkg/types/validation/installconfig.go b/pkg/types/validation/installconfig.go index ea947434ee3..d34bda45fee 100644 --- a/pkg/types/validation/installconfig.go +++ b/pkg/types/validation/installconfig.go @@ -22,7 +22,6 @@ import ( utilsnet "k8s.io/utils/net" configv1 "github.com/openshift/api/config/v1" - "github.com/openshift/api/features" operv1 "github.com/openshift/api/operator/v1" "github.com/openshift/installer/pkg/hostcrypt" "github.com/openshift/installer/pkg/ipnet" @@ -150,11 +149,7 @@ func ValidateInstallConfig(c *types.InstallConfig, usingAgentMethod bool) field. } if c.Arbiter != nil { - if c.Enabled(features.FeatureGateHighlyAvailableArbiter) { - allErrs = append(allErrs, validateArbiter(&c.Platform, c.Arbiter, c.ControlPlane, field.NewPath("arbiter"))...) - } else { - allErrs = append(allErrs, field.Forbidden(field.NewPath("arbiter"), fmt.Sprintf("%s feature must be enabled in order to use arbiter cluster deployment", features.FeatureGateHighlyAvailableArbiter))) - } + allErrs = append(allErrs, validateArbiter(&c.Platform, c.Arbiter, c.ControlPlane, field.NewPath("arbiter"))...) } allErrs = append(allErrs, validateCompute(&c.Platform, c.ControlPlane, c.Compute, field.NewPath("compute"))...)