From e3ffc649f30af86bc09d0ba8ff83f172440e4531 Mon Sep 17 00:00:00 2001 From: Neil Girard Date: Tue, 14 Jul 2026 10:13:01 -0400 Subject: [PATCH] Added vSphere failure domain to vcenter check --- .../VSphereMultiNetworks.yaml | 14 +- .../VSphereMultiVCenterDay2.yaml | 667 ++++++++++++++++++ config/v1/types_infrastructure.go | 1 + ...ctures-Hypershift-CustomNoUpgrade.crd.yaml | 5 + ...es-Hypershift-DevPreviewNoUpgrade.crd.yaml | 5 + ...s-Hypershift-TechPreviewNoUpgrade.crd.yaml | 5 + ...res-SelfManagedHA-CustomNoUpgrade.crd.yaml | 5 + ...SelfManagedHA-DevPreviewNoUpgrade.crd.yaml | 5 + ...elfManagedHA-TechPreviewNoUpgrade.crd.yaml | 5 + .../VSphereMultiVCenterDay2.yaml | 5 + ...onfigs-Hypershift-CustomNoUpgrade.crd.yaml | 5 + ...gs-Hypershift-DevPreviewNoUpgrade.crd.yaml | 5 + ...s-Hypershift-TechPreviewNoUpgrade.crd.yaml | 5 + ...igs-SelfManagedHA-CustomNoUpgrade.crd.yaml | 5 + ...SelfManagedHA-DevPreviewNoUpgrade.crd.yaml | 5 + ...elfManagedHA-TechPreviewNoUpgrade.crd.yaml | 5 + .../VSphereMultiVCenterDay2.yaml | 5 + ...ctures-Hypershift-CustomNoUpgrade.crd.yaml | 5 + ...es-Hypershift-DevPreviewNoUpgrade.crd.yaml | 5 + ...s-Hypershift-TechPreviewNoUpgrade.crd.yaml | 5 + ...res-SelfManagedHA-CustomNoUpgrade.crd.yaml | 5 + ...SelfManagedHA-DevPreviewNoUpgrade.crd.yaml | 5 + ...elfManagedHA-TechPreviewNoUpgrade.crd.yaml | 5 + ...onfigs-Hypershift-CustomNoUpgrade.crd.yaml | 5 + ...gs-Hypershift-DevPreviewNoUpgrade.crd.yaml | 5 + ...s-Hypershift-TechPreviewNoUpgrade.crd.yaml | 5 + ...igs-SelfManagedHA-CustomNoUpgrade.crd.yaml | 5 + ...SelfManagedHA-DevPreviewNoUpgrade.crd.yaml | 5 + ...elfManagedHA-TechPreviewNoUpgrade.crd.yaml | 5 + 29 files changed, 805 insertions(+), 7 deletions(-) diff --git a/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiNetworks.yaml b/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiNetworks.yaml index 076fe1284b0..1c0d804d9da 100644 --- a/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiNetworks.yaml +++ b/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiNetworks.yaml @@ -233,7 +233,7 @@ tests: - datacenters: - IBMCloud port: 443 - server: vcs8e-vc.ocp2.dev.cluster.com + server: server1.dev.cluster.com failureDomains: - name: generated-failure-domain region: generated-region @@ -261,7 +261,7 @@ tests: - datacenters: - IBMCloud port: 443 - server: vcs8e-vc.ocp2.dev.cluster.com + server: server1.dev.cluster.com failureDomains: - name: generated-failure-domain region: generated-region @@ -290,7 +290,7 @@ tests: - datacenters: - IBMCloud port: 443 - server: vcs8e-vc.ocp2.dev.cluster.com + server: server1.dev.cluster.com failureDomains: - name: generated-failure-domain region: generated-region @@ -321,7 +321,7 @@ tests: - datacenters: - IBMCloud port: 443 - server: vcs8e-vc.ocp2.dev.cluster.com + server: server1.dev.cluster.com failureDomains: - name: generated-failure-domain region: generated-region @@ -349,7 +349,7 @@ tests: - datacenters: - IBMCloud port: 443 - server: vcs8e-vc.ocp2.dev.cluster.com + server: server1.dev.cluster.com failureDomains: - name: generated-failure-domain region: generated-region @@ -389,7 +389,7 @@ tests: - datacenters: - IBMCloud port: 443 - server: vcs8e-vc.ocp2.dev.cluster.com + server: server1.dev.cluster.com failureDomains: - name: generated-failure-domain region: generated-region @@ -417,7 +417,7 @@ tests: - datacenters: - IBMCloud port: 443 - server: vcs8e-vc.ocp2.dev.cluster.com + server: server1.dev.cluster.com failureDomains: - name: generated-failure-domain region: generated-region diff --git a/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml b/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml index 2903fb815b3..497e5a7f124 100644 --- a/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml +++ b/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml @@ -258,6 +258,303 @@ tests: resourcePool: /DC1/host/cluster1/Resources zone: zone1 expectedError: "vcenters must have unique server values" + - name: Should accept Infrastructure with single failure domain matching a vCenter + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + expected: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + + - name: Should accept Infrastructure with multiple failure domains matching vCenters + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - server: vcenter2.example.com + datacenters: + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + - name: fd2 + region: region2 + zone: zone2 + server: vcenter2.example.com + topology: + datacenter: datacenter2 + computeCluster: /datacenter2/host/cluster2 + networks: + - /datacenter2/network/VM Network + datastore: /datacenter2/datastore/datastore2 + expected: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - server: vcenter2.example.com + datacenters: + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + - name: fd2 + region: region2 + zone: zone2 + server: vcenter2.example.com + topology: + datacenter: datacenter2 + computeCluster: /datacenter2/host/cluster2 + networks: + - /datacenter2/network/VM Network + datastore: /datacenter2/datastore/datastore2 + + - name: Should accept Infrastructure with multiple failure domains using same vCenter + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + - name: fd2 + region: region2 + zone: zone2 + server: vcenter1.example.com + topology: + datacenter: datacenter2 + computeCluster: /datacenter2/host/cluster2 + networks: + - /datacenter2/network/VM Network + datastore: /datacenter2/datastore/datastore2 + expected: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + - name: fd2 + region: region2 + zone: zone2 + server: vcenter1.example.com + topology: + datacenter: datacenter2 + computeCluster: /datacenter2/host/cluster2 + networks: + - /datacenter2/network/VM Network + datastore: /datacenter2/datastore/datastore2 + + - name: Should accept Infrastructure with vCenters but no failure domains + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + expected: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + + - name: Should reject Infrastructure with failure domain not matching any vCenter + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter-nonexistent.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + expectedError: "all failure domains must have a corresponding vCenter entry" + + - name: Should reject Infrastructure with some failure domains not matching vCenters + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - server: vcenter2.example.com + datacenters: + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + - name: fd2 + region: region2 + zone: zone2 + server: vcenter3.example.com + topology: + datacenter: datacenter2 + computeCluster: /datacenter2/host/cluster2 + networks: + - /datacenter2/network/VM Network + datastore: /datacenter2/datastore/datastore2 + expectedError: "all failure domains must have a corresponding vCenter entry" + + - name: Should reject Infrastructure with failure domain server case mismatch + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: VCENTER1.EXAMPLE.COM + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + expectedError: "all failure domains must have a corresponding vCenter entry" onUpdate: - name: Should be able to add vsphere platform with 1 vcenter post-install initial: | @@ -1065,3 +1362,373 @@ tests: resourcePool: /DC1/host/cluster1/Resources zone: zone1 expectedError: "vcenters must have unique server values" + - name: Should allow adding a failure domain with matching vCenter + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - server: vcenter2.example.com + datacenters: + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + updated: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - server: vcenter2.example.com + datacenters: + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + - name: fd2 + region: region2 + zone: zone2 + server: vcenter2.example.com + topology: + datacenter: datacenter2 + computeCluster: /datacenter2/host/cluster2 + networks: + - /datacenter2/network/VM Network + datastore: /datacenter2/datastore/datastore2 + expected: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - server: vcenter2.example.com + datacenters: + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + - name: fd2 + region: region2 + zone: zone2 + server: vcenter2.example.com + topology: + datacenter: datacenter2 + computeCluster: /datacenter2/host/cluster2 + networks: + - /datacenter2/network/VM Network + datastore: /datacenter2/datastore/datastore2 + + - name: Should reject adding a failure domain without matching vCenter + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + updated: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + - name: fd2 + region: region2 + zone: zone2 + server: vcenter3.example.com + topology: + datacenter: datacenter2 + computeCluster: /datacenter2/host/cluster2 + networks: + - /datacenter2/network/VM Network + datastore: /datacenter2/datastore/datastore2 + expectedError: "all failure domains must have a corresponding vCenter entry" + + - name: Should allow removing a failure domain + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - server: vcenter2.example.com + datacenters: + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + - name: fd2 + region: region2 + zone: zone2 + server: vcenter2.example.com + topology: + datacenter: datacenter2 + computeCluster: /datacenter2/host/cluster2 + networks: + - /datacenter2/network/VM Network + datastore: /datacenter2/datastore/datastore2 + updated: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - server: vcenter2.example.com + datacenters: + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + expected: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + - server: vcenter2.example.com + datacenters: + - datacenter2 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + + - name: Should allow removing all failure domains + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + failureDomains: + - name: fd1 + region: region1 + zone: zone1 + server: vcenter1.example.com + topology: + datacenter: datacenter1 + computeCluster: /datacenter1/host/cluster1 + networks: + - /datacenter1/network/VM Network + datastore: /datacenter1/datastore/datastore1 + updated: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + failureDomains: [] + expected: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + vcenters: + - server: vcenter1.example.com + datacenters: + - datacenter1 + failureDomains: [] + - name: Should not be able to remove a vCenter that is in use by a failure domain + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + cloudConfig: + key: config + name: cloud-provider-config + platformSpec: + type: VSphere + vsphere: + vcenters: + - datacenters: + - DC1 + port: 443 + server: vcenter1.example.com + - datacenters: + - DC2 + port: 443 + server: vcenter2.example.com + failureDomains: + - name: fd1 + region: region1 + server: vcenter1.example.com + topology: + computeCluster: /DC1/host/cluster1 + datacenter: DC1 + datastore: /DC1/datastore/ds1 + networks: + - network1 + resourcePool: /DC1/host/cluster1/Resources + zone: zone1 + - name: fd2 + region: region2 + server: vcenter2.example.com + topology: + computeCluster: /DC2/host/cluster2 + datacenter: DC2 + datastore: /DC2/datastore/ds2 + networks: + - network2 + resourcePool: /DC2/host/cluster2/Resources + zone: zone2 + updated: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + cloudConfig: + key: config + name: cloud-provider-config + platformSpec: + type: VSphere + vsphere: + vcenters: + - datacenters: + - DC1 + port: 443 + server: vcenter1.example.com + failureDomains: + - name: fd1 + region: region1 + server: vcenter1.example.com + topology: + computeCluster: /DC1/host/cluster1 + datacenter: DC1 + datastore: /DC1/datastore/ds1 + networks: + - network1 + resourcePool: /DC1/host/cluster1/Resources + zone: zone1 + - name: fd2 + region: region2 + server: vcenter2.example.com + topology: + computeCluster: /DC2/host/cluster2 + datacenter: DC2 + datastore: /DC2/datastore/ds2 + networks: + - network2 + resourcePool: /DC2/host/cluster2/Resources + zone: zone2 + expectedError: "all failure domains must have a corresponding vCenter entry" diff --git a/config/v1/types_infrastructure.go b/config/v1/types_infrastructure.go index 5d9f10374eb..2e52312bfa8 100644 --- a/config/v1/types_infrastructure.go +++ b/config/v1/types_infrastructure.go @@ -1657,6 +1657,7 @@ type VSpherePlatformNodeNetworking struct { // use these fields for configuration. // +kubebuilder:validation:XValidation:rule="!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)",message="apiServerInternalIPs list is required once set" // +kubebuilder:validation:XValidation:rule="!has(oldSelf.ingressIPs) || has(self.ingressIPs)",message="ingressIPs list is required once set" +// +openshift:validation:FeatureGateAwareXValidation:featureGate=VSphereMultiVCenterDay2,rule="!has(self.failureDomains) || size(self.failureDomains) == 0 || (has(self.vcenters) && self.failureDomains.all(fd, self.vcenters.exists(vc, vc.server == fd.server)))",message="all failure domains must have a corresponding vCenter entry" type VSpherePlatformSpec struct { // vcenters holds the connection details for services to communicate with vCenter. // Up to 3 vCenters are supported. diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml index 2829b41dce9..fc0eb99d476 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml @@ -1108,6 +1108,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml index a3064161f2e..4a8ee7e7109 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml @@ -1093,6 +1093,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml index cafc698a8ac..f2c96f3d13f 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml @@ -1093,6 +1093,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml index 310ba4ad386..49123b5b946 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml @@ -1108,6 +1108,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml index f3b307973b9..1bec0d35d0c 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml @@ -1108,6 +1108,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml index 998b9be396a..73619f3c7b1 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml @@ -1093,6 +1093,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml index 64da365ae66..d9a399e0f1b 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml @@ -1003,6 +1003,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml index 9fd305414c5..df6ad59a85e 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml @@ -1400,6 +1400,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml index 4717d10021a..7f98453acf0 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml @@ -1385,6 +1385,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml index f176deea6ef..0f927052a9e 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml @@ -1385,6 +1385,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml index de2a65dfa33..286d92217a3 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml @@ -1400,6 +1400,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml index 7bf1e60dfa5..261790a52fe 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml @@ -1400,6 +1400,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml index 51b3d3ceca1..f694eed9873 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml @@ -1385,6 +1385,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereMultiVCenterDay2.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereMultiVCenterDay2.yaml index 7a76436b63d..4ceebaced3a 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereMultiVCenterDay2.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereMultiVCenterDay2.yaml @@ -1299,6 +1299,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml index 2829b41dce9..fc0eb99d476 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-CustomNoUpgrade.crd.yaml @@ -1108,6 +1108,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml index a3064161f2e..4a8ee7e7109 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-DevPreviewNoUpgrade.crd.yaml @@ -1093,6 +1093,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml index cafc698a8ac..f2c96f3d13f 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Hypershift-TechPreviewNoUpgrade.crd.yaml @@ -1093,6 +1093,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml index 310ba4ad386..49123b5b946 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-CustomNoUpgrade.crd.yaml @@ -1108,6 +1108,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml index f3b307973b9..1bec0d35d0c 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml @@ -1108,6 +1108,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml index 998b9be396a..73619f3c7b1 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml @@ -1093,6 +1093,11 @@ spec: rule: self.all(x, self.exists_one(y, y.server == x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding vCenter + entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' - message: ingressIPs list is required once set diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml index 9fd305414c5..df6ad59a85e 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-CustomNoUpgrade.crd.yaml @@ -1400,6 +1400,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml index 4717d10021a..7f98453acf0 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-DevPreviewNoUpgrade.crd.yaml @@ -1385,6 +1385,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml index f176deea6ef..0f927052a9e 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Hypershift-TechPreviewNoUpgrade.crd.yaml @@ -1385,6 +1385,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml index de2a65dfa33..286d92217a3 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-CustomNoUpgrade.crd.yaml @@ -1400,6 +1400,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml index 7bf1e60dfa5..261790a52fe 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml @@ -1400,6 +1400,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml index 51b3d3ceca1..f694eed9873 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml @@ -1385,6 +1385,11 @@ spec: x.server)) type: object x-kubernetes-validations: + - message: all failure domains must have a corresponding + vCenter entry + rule: '!has(self.failureDomains) || size(self.failureDomains) + == 0 || (has(self.vcenters) && self.failureDomains.all(fd, + self.vcenters.exists(vc, vc.server == fd.server)))' - message: apiServerInternalIPs list is required once set rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)'