diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml
index 1ae221ca458..12cc1662572 100644
--- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml
+++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml
@@ -324,15 +324,19 @@ spec:
is Name, and forbidden otherwise
rule: 'has(self.type) && self.type == ''Name'' ? has(self.name)
: !has(self.name)'
- maxItems: 1
+ maxItems: 32
minItems: 1
type: array
x-kubernetes-list-type: atomic
+ x-kubernetes-validations:
+ - message: each subnet must be unique
+ rule: self.all(x, self.exists_one(y, x == y))
required:
- cluster
- name
- subnets
type: object
+ maxItems: 32
type: array
x-kubernetes-list-map-keys:
- name
diff --git a/features.md b/features.md
index bc5794ffb27..3b5f1007c6c 100644
--- a/features.md
+++ b/features.md
@@ -57,7 +57,6 @@
| MultiDiskSetup| | | Enabled | Enabled | Enabled | Enabled |
| MutatingAdmissionPolicy| | | Enabled | Enabled | Enabled | Enabled |
| NodeSwap| | | Enabled | Enabled | Enabled | Enabled |
-| NutanixMultiSubnets| | | Enabled | Enabled | Enabled | Enabled |
| OVNObservability| | | Enabled | Enabled | Enabled | Enabled |
| PreconfiguredUDNAddresses| | | Enabled | Enabled | Enabled | Enabled |
| SELinuxMount| | | Enabled | Enabled | Enabled | Enabled |
@@ -92,6 +91,8 @@
| NetworkDiagnosticsConfig| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| NetworkLiveMigration| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| NetworkSegmentation| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
+| NutanixMultiSubnets| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
+| OnClusterBuild| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| OpenShiftPodSecurityAdmission| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| PinnedImages| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| ProcMountType| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
diff --git a/features/features.go b/features/features.go
index 5b8e694263c..f644d697cfc 100644
--- a/features/features.go
+++ b/features/features.go
@@ -674,7 +674,7 @@ var (
contactPerson("yanhli").
productScope(ocpSpecific).
enhancementPR("https://github.com/openshift/enhancements/pull/1711").
- enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ enableIn(configv1.Default, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
FeatureGateKMSEncryptionProvider = newFeatureGate("KMSEncryptionProvider").
diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml
index 96b84fb71be..24fbc4410b7 100644
--- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml
+++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml
@@ -606,15 +606,20 @@ spec:
when type is Name, and forbidden otherwise
rule: 'has(self.type) && self.type == ''Name''
? has(self.name) : !has(self.name)'
- maxItems: 1
+ maxItems: 32
minItems: 1
type: array
x-kubernetes-list-type: atomic
+ x-kubernetes-validations:
+ - message: each subnet must be unique
+ rule: self.all(x, self.exists_one(y, x ==
+ y))
required:
- cluster
- name
- subnets
type: object
+ maxItems: 32
type: array
x-kubernetes-list-map-keys:
- name
diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml
index 1ae221ca458..deadb27f833 100644
--- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml
+++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml
@@ -324,7 +324,7 @@ spec:
is Name, and forbidden otherwise
rule: 'has(self.type) && self.type == ''Name'' ? has(self.name)
: !has(self.name)'
- maxItems: 1
+ maxItems: 32
minItems: 1
type: array
x-kubernetes-list-type: atomic
diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml
index 96b84fb71be..6301d023e91 100644
--- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml
+++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml
@@ -606,7 +606,7 @@ spec:
when type is Name, and forbidden otherwise
rule: 'has(self.type) && self.type == ''Name''
? has(self.name) : !has(self.name)'
- maxItems: 1
+ maxItems: 32
minItems: 1
type: array
x-kubernetes-list-type: atomic
diff --git a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
index 1ac74a693a6..4504dbac968 100644
--- a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
@@ -178,9 +178,6 @@
{
"name": "NodeSwap"
},
- {
- "name": "NutanixMultiSubnets"
- },
{
"name": "OVNObservability"
},
@@ -291,6 +288,12 @@
{
"name": "NetworkSegmentation"
},
+ {
+ "name": "NutanixMultiSubnets"
+ },
+ {
+ "name": "OnClusterBuild"
+ },
{
"name": "OpenShiftPodSecurityAdmission"
},
diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
index 3e8a17fc57c..5ab0c8adc12 100644
--- a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
@@ -178,9 +178,6 @@
{
"name": "NodeSwap"
},
- {
- "name": "NutanixMultiSubnets"
- },
{
"name": "OVNObservability"
},
@@ -291,6 +288,12 @@
{
"name": "NewOLM"
},
+ {
+ "name": "NutanixMultiSubnets"
+ },
+ {
+ "name": "OnClusterBuild"
+ },
{
"name": "OpenShiftPodSecurityAdmission"
},