diff --git a/features.md b/features.md
index 0ce2d90fdec..44f316e46dc 100644
--- a/features.md
+++ b/features.md
@@ -9,7 +9,6 @@
| GatewayAPI| | | Enabled | Enabled | | |
| NewOLM| | Enabled | | Enabled | | Enabled |
| AWSClusterHostedDNS| | | Enabled | Enabled | Enabled | Enabled |
-| AdditionalRoutingCapabilities| | | Enabled | Enabled | Enabled | Enabled |
| AutomatedEtcdBackup| | | Enabled | Enabled | Enabled | Enabled |
| BootcNodeManagement| | | Enabled | Enabled | Enabled | Enabled |
| CSIDriverSharedResource| | | Enabled | Enabled | Enabled | Enabled |
@@ -56,6 +55,7 @@
| VolumeGroupSnapshot| | | Enabled | Enabled | Enabled | Enabled |
| ExternalOIDC| Enabled | | Enabled | Enabled | Enabled | Enabled |
| AWSEFSDriverVolumeMetrics| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
+| AdditionalRoutingCapabilities| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| AdminNetworkPolicy| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| AlibabaPlatform| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| AzureWorkloadIdentity| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
diff --git a/features/features.go b/features/features.go
index 0c48c08f3a9..7f052d1198a 100644
--- a/features/features.go
+++ b/features/features.go
@@ -248,7 +248,7 @@ var (
contactPerson("jcaamano").
productScope(ocpSpecific).
enhancementPR(legacyFeatureGateWithoutEnhancement).
- enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ enableIn(configv1.Default, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
FeatureGateRouteAdvertisements = newFeatureGate("RouteAdvertisements").
diff --git a/operator/v1/types_network.go b/operator/v1/types_network.go
index 9b1588bc25a..71664072f37 100644
--- a/operator/v1/types_network.go
+++ b/operator/v1/types_network.go
@@ -54,7 +54,7 @@ type NetworkList struct {
// NetworkSpec is the top-level network configuration object.
// +kubebuilder:validation:XValidation:rule="!has(self.defaultNetwork) || !has(self.defaultNetwork.ovnKubernetesConfig) || !has(self.defaultNetwork.ovnKubernetesConfig.gatewayConfig) || !has(self.defaultNetwork.ovnKubernetesConfig.gatewayConfig.ipForwarding) || self.defaultNetwork.ovnKubernetesConfig.gatewayConfig.ipForwarding == oldSelf.defaultNetwork.ovnKubernetesConfig.gatewayConfig.ipForwarding || self.defaultNetwork.ovnKubernetesConfig.gatewayConfig.ipForwarding == 'Restricted' || self.defaultNetwork.ovnKubernetesConfig.gatewayConfig.ipForwarding == 'Global'",message="invalid value for IPForwarding, valid values are 'Restricted' or 'Global'"
-// +openshift:validation:FeatureGateAwareXValidation:featureGate=AdditionalRoutingCapabilities,rule="(has(self.additionalRoutingCapabilities) && ('FRR' in self.additionalRoutingCapabilities.providers)) || !has(self.defaultNetwork) || !has(self.defaultNetwork.ovnKubernetesConfig) || !has(self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements) || self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements != 'Enabled'",message="Route advertisements cannot be Enabled if 'FRR' routing capability provider is not available"
+// +openshift:validation:FeatureGateAwareXValidation:featureGate=RouteAdvertisements,rule="(has(self.additionalRoutingCapabilities) && ('FRR' in self.additionalRoutingCapabilities.providers)) || !has(self.defaultNetwork) || !has(self.defaultNetwork.ovnKubernetesConfig) || !has(self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements) || self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements != 'Enabled'",message="Route advertisements cannot be Enabled if 'FRR' routing capability provider is not available"
type NetworkSpec struct {
OperatorSpec `json:",inline"`
diff --git a/operator/v1/zz_generated.crd-manifests/0000_70_network_01_networks-Default.crd.yaml b/operator/v1/zz_generated.crd-manifests/0000_70_network_01_networks-Default.crd.yaml
index 3f150defe73..2d297c209f5 100644
--- a/operator/v1/zz_generated.crd-manifests/0000_70_network_01_networks-Default.crd.yaml
+++ b/operator/v1/zz_generated.crd-manifests/0000_70_network_01_networks-Default.crd.yaml
@@ -178,6 +178,39 @@ spec:
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
+ additionalRoutingCapabilities:
+ description: |-
+ additionalRoutingCapabilities describes components and relevant
+ configuration providing additional routing capabilities. When set, it
+ enables such components and the usage of the routing capabilities they
+ provide for the machine network. Upstream operators, like MetalLB
+ operator, requiring these capabilities may rely on, or automatically set
+ this attribute. Network plugins may leverage advanced routing
+ capabilities acquired through the enablement of these components but may
+ require specific configuration on their side to do so; refer to their
+ respective documentation and configuration options.
+ properties:
+ providers:
+ description: |-
+ providers is a set of enabled components that provide additional routing
+ capabilities. Entries on this list must be unique. The only valid value
+ is currrently "FRR" which provides FRR routing capabilities through the
+ deployment of FRR.
+ items:
+ description: RoutingCapabilitiesProvider is a component providing
+ routing capabilities.
+ enum:
+ - FRR
+ type: string
+ maxItems: 1
+ minItems: 1
+ type: array
+ x-kubernetes-list-type: atomic
+ x-kubernetes-validations:
+ - rule: self.all(x, self.exists_one(y, x == y))
+ required:
+ - providers
+ type: object
clusterNetwork:
description: |-
clusterNetwork is the IP address pool to use for pod IPs.
diff --git a/operator/v1/zz_generated.featuregated-crd-manifests/networks.operator.openshift.io/AdditionalRoutingCapabilities.yaml b/operator/v1/zz_generated.featuregated-crd-manifests/networks.operator.openshift.io/AdditionalRoutingCapabilities.yaml
index 6e14ebb2eae..e36d97b607e 100644
--- a/operator/v1/zz_generated.featuregated-crd-manifests/networks.operator.openshift.io/AdditionalRoutingCapabilities.yaml
+++ b/operator/v1/zz_generated.featuregated-crd-manifests/networks.operator.openshift.io/AdditionalRoutingCapabilities.yaml
@@ -874,13 +874,6 @@ spec:
type: boolean
type: object
x-kubernetes-validations:
- - message: Route advertisements cannot be Enabled if 'FRR' routing capability
- provider is not available
- rule: (has(self.additionalRoutingCapabilities) && ('FRR' in self.additionalRoutingCapabilities.providers))
- || !has(self.defaultNetwork) || !has(self.defaultNetwork.ovnKubernetesConfig)
- || !has(self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements)
- || self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements !=
- 'Enabled'
- message: invalid value for IPForwarding, valid values are 'Restricted'
or 'Global'
rule: '!has(self.defaultNetwork) || !has(self.defaultNetwork.ovnKubernetesConfig)
diff --git a/operator/v1/zz_generated.featuregated-crd-manifests/networks.operator.openshift.io/RouteAdvertisements.yaml b/operator/v1/zz_generated.featuregated-crd-manifests/networks.operator.openshift.io/RouteAdvertisements.yaml
index e4caccb1e07..029d513b5c7 100644
--- a/operator/v1/zz_generated.featuregated-crd-manifests/networks.operator.openshift.io/RouteAdvertisements.yaml
+++ b/operator/v1/zz_generated.featuregated-crd-manifests/networks.operator.openshift.io/RouteAdvertisements.yaml
@@ -857,6 +857,13 @@ spec:
type: boolean
type: object
x-kubernetes-validations:
+ - message: Route advertisements cannot be Enabled if 'FRR' routing capability
+ provider is not available
+ rule: (has(self.additionalRoutingCapabilities) && ('FRR' in self.additionalRoutingCapabilities.providers))
+ || !has(self.defaultNetwork) || !has(self.defaultNetwork.ovnKubernetesConfig)
+ || !has(self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements)
+ || self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements !=
+ 'Enabled'
- message: invalid value for IPForwarding, valid values are 'Restricted'
or 'Global'
rule: '!has(self.defaultNetwork) || !has(self.defaultNetwork.ovnKubernetesConfig)
diff --git a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
index 4a294f35c95..abf42bfdc73 100644
--- a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
@@ -16,9 +16,6 @@
{
"name": "AWSClusterHostedDNS"
},
- {
- "name": "AdditionalRoutingCapabilities"
- },
{
"name": "AutomatedEtcdBackup"
},
@@ -180,6 +177,9 @@
{
"name": "AWSEFSDriverVolumeMetrics"
},
+ {
+ "name": "AdditionalRoutingCapabilities"
+ },
{
"name": "AdminNetworkPolicy"
},
diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
index 6a8db3fecd9..7b2dec4e574 100644
--- a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
@@ -16,9 +16,6 @@
{
"name": "AWSClusterHostedDNS"
},
- {
- "name": "AdditionalRoutingCapabilities"
- },
{
"name": "AutomatedEtcdBackup"
},
@@ -180,6 +177,9 @@
{
"name": "AWSEFSDriverVolumeMetrics"
},
+ {
+ "name": "AdditionalRoutingCapabilities"
+ },
{
"name": "AdminNetworkPolicy"
},