From db1ed9c2e30987f983cb3c0097b0caa94d436c49 Mon Sep 17 00:00:00 2001 From: Neil Girard Date: Tue, 14 Jul 2026 10:13:01 -0400 Subject: [PATCH 1/2] Added vSphere failure domain to vcenter check --- .../VSphereMultiNetworks.yaml | 14 +- .../VSphereMultiVCenterDay2.yaml | 688 ++++++++++++++++++ config/v1/types_infrastructure.go | 5 + ...erator_01_infrastructures-Default.crd.yaml | 8 +- ...ctures-Hypershift-CustomNoUpgrade.crd.yaml | 13 +- ...es-Hypershift-DevPreviewNoUpgrade.crd.yaml | 13 +- ...g-operator_01_infrastructures-OKD.crd.yaml | 8 +- ...res-SelfManagedHA-CustomNoUpgrade.crd.yaml | 13 +- ...SelfManagedHA-DevPreviewNoUpgrade.crd.yaml | 13 +- ...rastructures-TechPreviewNoUpgrade.crd.yaml | 13 +- .../AAA_ungated.yaml | 8 +- .../AWSClusterHostedDNSInstall.yaml | 8 +- .../AWSDualStackInstall.yaml | 8 +- .../AzureDualStackInstall.yaml | 8 +- .../BGPBasedVIPManagement.yaml | 8 +- .../DualReplica.yaml | 8 +- .../DyanmicServiceEndpointIBMCloud.yaml | 8 +- .../MutableTopology.yaml | 8 +- .../NutanixMultiSubnets.yaml | 8 +- .../OnPremDNSRecords.yaml | 8 +- .../VSphereHostVMGroupZonal.yaml | 8 +- .../VSphereMultiNetworks.yaml | 8 +- .../VSphereMultiVCenterDay2.yaml | 13 +- .../v1/zz_generated.swagger_doc_generated.go | 4 +- ...nfig_01_controllerconfigs-Default.crd.yaml | 8 +- ...onfigs-Hypershift-CustomNoUpgrade.crd.yaml | 13 +- ...gs-Hypershift-DevPreviewNoUpgrade.crd.yaml | 13 +- ...e-config_01_controllerconfigs-OKD.crd.yaml | 8 +- ...igs-SelfManagedHA-CustomNoUpgrade.crd.yaml | 13 +- ...SelfManagedHA-DevPreviewNoUpgrade.crd.yaml | 13 +- ...ollerconfigs-TechPreviewNoUpgrade.crd.yaml | 13 +- .../AAA_ungated.yaml | 8 +- .../AWSClusterHostedDNSInstall.yaml | 8 +- .../AWSDualStackInstall.yaml | 8 +- .../AWSEuropeanSovereignCloudInstall.yaml | 8 +- .../AzureDualStackInstall.yaml | 8 +- .../BGPBasedVIPManagement.yaml | 8 +- .../DualReplica.yaml | 8 +- .../DyanmicServiceEndpointIBMCloud.yaml | 8 +- .../MutableTopology.yaml | 8 +- .../NutanixMultiSubnets.yaml | 8 +- .../OnPremDNSRecords.yaml | 8 +- .../VSphereHostVMGroupZonal.yaml | 8 +- .../VSphereMultiNetworks.yaml | 8 +- .../VSphereMultiVCenterDay2.yaml | 13 +- .../generated_openapi/zz_generated.openapi.go | 4 +- openapi/openapi.json | 4 +- ...erator_01_infrastructures-Default.crd.yaml | 8 +- ...ctures-Hypershift-CustomNoUpgrade.crd.yaml | 13 +- ...es-Hypershift-DevPreviewNoUpgrade.crd.yaml | 13 +- ...g-operator_01_infrastructures-OKD.crd.yaml | 8 +- ...res-SelfManagedHA-CustomNoUpgrade.crd.yaml | 13 +- ...SelfManagedHA-DevPreviewNoUpgrade.crd.yaml | 13 +- ...rastructures-TechPreviewNoUpgrade.crd.yaml | 13 +- ...nfig_01_controllerconfigs-Default.crd.yaml | 8 +- ...onfigs-Hypershift-CustomNoUpgrade.crd.yaml | 13 +- ...gs-Hypershift-DevPreviewNoUpgrade.crd.yaml | 13 +- ...e-config_01_controllerconfigs-OKD.crd.yaml | 8 +- ...igs-SelfManagedHA-CustomNoUpgrade.crd.yaml | 13 +- ...SelfManagedHA-DevPreviewNoUpgrade.crd.yaml | 13 +- ...ollerconfigs-TechPreviewNoUpgrade.crd.yaml | 13 +- 61 files changed, 1146 insertions(+), 123 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..6aea04bf6ac 100644 --- a/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml +++ b/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml @@ -258,6 +258,324 @@ 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" + + - name: Should reject Infrastructure with failure domains set but vcenters omitted + initial: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + platformSpec: + type: VSphere + vsphere: + 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 +1383,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 86c98664df9..c64a9fd927b 100644 --- a/config/v1/types_infrastructure.go +++ b/config/v1/types_infrastructure.go @@ -1453,6 +1453,9 @@ type VSpherePlatformFailureDomainSpec struct { ZoneAffinity *VSphereFailureDomainZoneAffinity `json:"zoneAffinity,omitempty"` // server is the fully-qualified domain name or the IP address of the vCenter server. + // This must match the server field of an entry in the vcenters list. + // The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + // The value must be between 1 and 255 characters long. // +required // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=255 @@ -1687,6 +1690,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. @@ -1711,6 +1715,7 @@ type VSpherePlatformSpec struct { // failureDomains contains the definition of region, zone and the vCenter topology. // If this is omitted failure domains (regions and zones) will not be used. + // Each failure domain's server must match the server field of an entry in the vcenters list. // +listType=map // +listMapKey=name // +optional 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 0305366dfd1..e70c95d05d7 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 @@ -621,6 +621,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -665,8 +666,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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 1c8d67b7eb1..f399416af26 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 @@ -701,6 +701,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -745,8 +746,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1108,6 +1112,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 4a8735ce62e..f11eb294c0d 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 @@ -686,6 +686,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -730,8 +731,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1093,6 +1097,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-OKD.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-OKD.crd.yaml index 6cdb3f76af3..3b66715b617 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-OKD.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-OKD.crd.yaml @@ -621,6 +621,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -665,8 +666,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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 29513d68b9f..57f46ced208 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 @@ -701,6 +701,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -745,8 +746,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1108,6 +1112,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 037f26287fa..c690736dc3e 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 @@ -701,6 +701,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -745,8 +746,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1108,6 +1112,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-TechPreviewNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml index 197bf2706fa..846a8952cd7 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml @@ -687,6 +687,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -731,8 +732,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1094,6 +1098,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/AAA_ungated.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AAA_ungated.yaml index 54196944b3d..c4989f62511 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AAA_ungated.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AAA_ungated.yaml @@ -621,6 +621,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -661,8 +662,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml index 249ae603a83..0d6a068ee7a 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml @@ -620,6 +620,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -660,8 +661,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSDualStackInstall.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSDualStackInstall.yaml index 1b1fe5d1d5a..c839687a4e2 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSDualStackInstall.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSDualStackInstall.yaml @@ -620,6 +620,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -660,8 +661,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AzureDualStackInstall.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AzureDualStackInstall.yaml index 2c53641f25d..dfb8b566049 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AzureDualStackInstall.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AzureDualStackInstall.yaml @@ -620,6 +620,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -660,8 +661,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml index 5dd698d83e1..607998046fb 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/BGPBasedVIPManagement.yaml @@ -620,6 +620,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -660,8 +661,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DualReplica.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DualReplica.yaml index fdc0cc246d1..f6c1e07a3ae 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DualReplica.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DualReplica.yaml @@ -620,6 +620,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -660,8 +661,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DyanmicServiceEndpointIBMCloud.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DyanmicServiceEndpointIBMCloud.yaml index 3b20b95be85..1476be93a78 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DyanmicServiceEndpointIBMCloud.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/DyanmicServiceEndpointIBMCloud.yaml @@ -682,6 +682,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -722,8 +723,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/MutableTopology.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/MutableTopology.yaml index 1228dabf9dc..100ac8a3bc6 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/MutableTopology.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/MutableTopology.yaml @@ -635,6 +635,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -675,8 +676,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/NutanixMultiSubnets.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/NutanixMultiSubnets.yaml index af5b5458803..166bcb7280d 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/NutanixMultiSubnets.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/NutanixMultiSubnets.yaml @@ -625,6 +625,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -665,8 +666,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/OnPremDNSRecords.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/OnPremDNSRecords.yaml index 773a66b4035..f0f88f4497e 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/OnPremDNSRecords.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/OnPremDNSRecords.yaml @@ -620,6 +620,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -660,8 +661,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereHostVMGroupZonal.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereHostVMGroupZonal.yaml index 2f0160524a1..e18faf365a0 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereHostVMGroupZonal.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereHostVMGroupZonal.yaml @@ -620,6 +620,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -660,8 +661,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereMultiNetworks.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereMultiNetworks.yaml index 4f891b50ea2..00b3cefa377 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereMultiNetworks.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereMultiNetworks.yaml @@ -620,6 +620,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -660,8 +661,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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..214cad05cbd 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 @@ -620,6 +620,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -660,8 +661,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1003,6 +1007,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.swagger_doc_generated.go b/config/v1/zz_generated.swagger_doc_generated.go index b763c1b5313..233971201c2 100644 --- a/config/v1/zz_generated.swagger_doc_generated.go +++ b/config/v1/zz_generated.swagger_doc_generated.go @@ -2175,7 +2175,7 @@ var map_VSpherePlatformFailureDomainSpec = map[string]string{ "zone": "zone defines the name of a zone tag that will be attached to a vCenter cluster. The tag category in vCenter must be named openshift-zone.", "regionAffinity": "regionAffinity holds the type of region, Datacenter or ComputeCluster. When set to Datacenter, this means the region is a vCenter Datacenter as defined in topology. When set to ComputeCluster, this means the region is a vCenter Cluster as defined in topology.", "zoneAffinity": "zoneAffinity holds the type of the zone and the hostGroup which vmGroup and the hostGroup names in vCenter corresponds to a vm-host group of type Virtual Machine and Host respectively. Is also contains the vmHostRule which is an affinity vm-host rule in vCenter.", - "server": "server is the fully-qualified domain name or the IP address of the vCenter server.", + "server": "server is the fully-qualified domain name or the IP address of the vCenter server. This must match the server field of an entry in the vcenters list. The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. The value must be between 1 and 255 characters long.", "topology": "topology describes a given failure domain using vSphere constructs", } @@ -2216,7 +2216,7 @@ func (VSpherePlatformNodeNetworkingSpec) SwaggerDoc() map[string]string { var map_VSpherePlatformSpec = map[string]string{ "": "VSpherePlatformSpec holds the desired state of the vSphere infrastructure provider. In the future the cloud provider operator, storage operator and machine operator will use these fields for configuration.", "vcenters": "vcenters holds the connection details for services to communicate with vCenter. Up to 3 vCenters are supported. Once the cluster has been installed, you are unable to change the current number of defined vCenters except when 1.) the cluster has been upgraded from a version of OpenShift where the vsphere platform spec was not present or 2.) in TechPreview you are able to add and remove vCenters but may not remove all vCenters. You may make modifications to the existing vCenters that are defined in the vcenters list in order to match with any added or modified failure domains.", - "failureDomains": "failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used.", + "failureDomains": "failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. Each failure domain's server must match the server field of an entry in the vcenters list.", "nodeNetworking": "nodeNetworking contains the definition of internal and external network constraints for assigning the node's networking. If this field is omitted, networking defaults to the legacy address selection behavior which is to only support a single address and return the first one found.", "apiServerInternalIPs": "apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can).", "ingressIPs": "ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can).", 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 7c0f73b0413..583ef262c77 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 @@ -916,6 +916,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -956,8 +957,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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 82ede742731..a4d8a007037 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 @@ -1010,6 +1010,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1050,8 +1051,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1412,6 +1416,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 eaf72ab25e2..6e2e1c064e1 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 @@ -995,6 +995,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1035,8 +1036,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1397,6 +1401,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-OKD.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml index baa96854daa..a4774f13f1c 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml @@ -916,6 +916,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -956,8 +957,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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 7de0c329ea5..6f15dd5ebc8 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 @@ -1010,6 +1010,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1050,8 +1051,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1412,6 +1416,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 a3ede95448f..e5a05ff7fa3 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 @@ -1010,6 +1010,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1050,8 +1051,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1412,6 +1416,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-TechPreviewNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml index 0d318c38c1f..be4c0646c98 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml @@ -984,6 +984,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1024,8 +1025,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1386,6 +1390,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/AAA_ungated.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AAA_ungated.yaml index 841fa00be08..05bfd699d9d 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AAA_ungated.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AAA_ungated.yaml @@ -916,6 +916,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -956,8 +957,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml index 17fc55c3c48..3df0726e492 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml @@ -911,6 +911,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -951,8 +952,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSDualStackInstall.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSDualStackInstall.yaml index ee5edcb5edb..b12e7dcafc9 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSDualStackInstall.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSDualStackInstall.yaml @@ -911,6 +911,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -951,8 +952,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSEuropeanSovereignCloudInstall.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSEuropeanSovereignCloudInstall.yaml index 7d64af7ad92..730c8bfd09a 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSEuropeanSovereignCloudInstall.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSEuropeanSovereignCloudInstall.yaml @@ -915,6 +915,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -955,8 +956,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AzureDualStackInstall.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AzureDualStackInstall.yaml index 92dd1d179f0..621c4636571 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AzureDualStackInstall.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AzureDualStackInstall.yaml @@ -911,6 +911,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -951,8 +952,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml index e8707b6e4c7..72e0cccd9e0 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/BGPBasedVIPManagement.yaml @@ -923,6 +923,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -963,8 +964,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DualReplica.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DualReplica.yaml index 502a2a57e0c..fa1a9c70684 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DualReplica.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DualReplica.yaml @@ -911,6 +911,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -951,8 +952,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DyanmicServiceEndpointIBMCloud.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DyanmicServiceEndpointIBMCloud.yaml index 4eb2a3a445d..f85298f2e26 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DyanmicServiceEndpointIBMCloud.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/DyanmicServiceEndpointIBMCloud.yaml @@ -974,6 +974,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1014,8 +1015,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/MutableTopology.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/MutableTopology.yaml index 112ed773880..cfdea516d0d 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/MutableTopology.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/MutableTopology.yaml @@ -926,6 +926,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -966,8 +967,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/NutanixMultiSubnets.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/NutanixMultiSubnets.yaml index 54291283f24..dbf3add3f32 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/NutanixMultiSubnets.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/NutanixMultiSubnets.yaml @@ -917,6 +917,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -957,8 +958,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/OnPremDNSRecords.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/OnPremDNSRecords.yaml index 1ada46a7f67..adfa507c7e1 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/OnPremDNSRecords.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/OnPremDNSRecords.yaml @@ -911,6 +911,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -951,8 +952,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereHostVMGroupZonal.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereHostVMGroupZonal.yaml index 94d1396cf89..8f89ba521cc 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereHostVMGroupZonal.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereHostVMGroupZonal.yaml @@ -911,6 +911,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -951,8 +952,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereMultiNetworks.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereMultiNetworks.yaml index 89ef79987c5..41072536bde 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereMultiNetworks.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereMultiNetworks.yaml @@ -911,6 +911,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -951,8 +952,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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..c6a5026bfa4 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 @@ -911,6 +911,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -951,8 +952,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1299,6 +1303,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/openapi/generated_openapi/zz_generated.openapi.go b/openapi/generated_openapi/zz_generated.openapi.go index b1ba3010c5f..3591ccf5c0f 100644 --- a/openapi/generated_openapi/zz_generated.openapi.go +++ b/openapi/generated_openapi/zz_generated.openapi.go @@ -22583,7 +22583,7 @@ func schema_openshift_api_config_v1_VSpherePlatformFailureDomainSpec(ref common. }, "server": { SchemaProps: spec.SchemaProps{ - Description: "server is the fully-qualified domain name or the IP address of the vCenter server.", + Description: "server is the fully-qualified domain name or the IP address of the vCenter server. This must match the server field of an entry in the vcenters list. The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. The value must be between 1 and 255 characters long.", Default: "", Type: []string{"string"}, Format: "", @@ -22761,7 +22761,7 @@ func schema_openshift_api_config_v1_VSpherePlatformSpec(ref common.ReferenceCall }, }, SchemaProps: spec.SchemaProps{ - Description: "failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used.", + Description: "failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. Each failure domain's server must match the server field of an entry in the vcenters list.", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ diff --git a/openapi/openapi.json b/openapi/openapi.json index ee6ecd22773..dd6539c510c 100644 --- a/openapi/openapi.json +++ b/openapi/openapi.json @@ -12252,7 +12252,7 @@ "$ref": "#/definitions/com.github.openshift.api.config.v1.VSphereFailureDomainRegionAffinity" }, "server": { - "description": "server is the fully-qualified domain name or the IP address of the vCenter server.", + "description": "server is the fully-qualified domain name or the IP address of the vCenter server. This must match the server field of an entry in the vcenters list. The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. The value must be between 1 and 255 characters long.", "type": "string", "default": "" }, @@ -12347,7 +12347,7 @@ "x-kubernetes-list-type": "atomic" }, "failureDomains": { - "description": "failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used.", + "description": "failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. Each failure domain's server must match the server field of an entry in the vcenters list.", "type": "array", "items": { "default": {}, 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 0305366dfd1..e70c95d05d7 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 @@ -621,6 +621,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -665,8 +666,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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 1c8d67b7eb1..f399416af26 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 @@ -701,6 +701,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -745,8 +746,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1108,6 +1112,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 4a8735ce62e..f11eb294c0d 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 @@ -686,6 +686,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -730,8 +731,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1093,6 +1097,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-OKD.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-OKD.crd.yaml index 6cdb3f76af3..3b66715b617 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-OKD.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-OKD.crd.yaml @@ -621,6 +621,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -665,8 +666,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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 29513d68b9f..57f46ced208 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 @@ -701,6 +701,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -745,8 +746,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1108,6 +1112,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 037f26287fa..c690736dc3e 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 @@ -701,6 +701,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -745,8 +746,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1108,6 +1112,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-TechPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml index 197bf2706fa..846a8952cd7 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml @@ -687,6 +687,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology @@ -731,8 +732,11 @@ spec: - format: ipv4 - format: ipv6 - format: hostname - description: server is the fully-qualified domain name - or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1094,6 +1098,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-Default.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml index 7c0f73b0413..583ef262c77 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 @@ -916,6 +916,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -956,8 +957,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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 82ede742731..a4d8a007037 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 @@ -1010,6 +1010,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1050,8 +1051,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1412,6 +1416,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 eaf72ab25e2..6e2e1c064e1 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 @@ -995,6 +995,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1035,8 +1036,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1397,6 +1401,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-OKD.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml index baa96854daa..a4774f13f1c 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml @@ -916,6 +916,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -956,8 +957,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string 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 7de0c329ea5..6f15dd5ebc8 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 @@ -1010,6 +1010,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1050,8 +1051,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1412,6 +1416,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 a3ede95448f..e5a05ff7fa3 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 @@ -1010,6 +1010,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1050,8 +1051,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1412,6 +1416,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-TechPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml index 0d318c38c1f..be4c0646c98 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml @@ -984,6 +984,7 @@ spec: description: |- failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. + Each failure domain's server must match the server field of an entry in the vcenters list. items: description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter @@ -1024,8 +1025,11 @@ spec: - type type: object server: - description: server is the fully-qualified domain - name or the IP address of the vCenter server. + description: |- + server is the fully-qualified domain name or the IP address of the vCenter server. + This must match the server field of an entry in the vcenters list. + The match is case-sensitive; the value must be specified exactly as it appears in the vcenters entry. + The value must be between 1 and 255 characters long. maxLength: 255 minLength: 1 type: string @@ -1386,6 +1390,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)' From 5c06b67f3dd5829dc744630fb9a10ede07caed81 Mon Sep 17 00:00:00 2001 From: Neil Girard Date: Thu, 23 Jul 2026 12:53:13 -0400 Subject: [PATCH 2/2] Added vSphere failure domain to vcenter ratcheting tests --- .../VSphereMultiVCenterDay2.yaml | 198 ++++++++++++++++++ 1 file changed, 198 insertions(+) diff --git a/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml b/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml index 6aea04bf6ac..af93000de1d 100644 --- a/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml +++ b/config/v1/tests/infrastructures.config.openshift.io/VSphereMultiVCenterDay2.yaml @@ -1671,6 +1671,204 @@ tests: datacenters: - datacenter1 failureDomains: [] + - name: Should allow updating other fields when a previously stored failure domain does not match any vCenter (ratcheting) + initialCRDPatches: + - op: remove + path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/platformSpec/properties/vsphere/x-kubernetes-validations/0 + 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 + updated: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + cloudConfig: + key: config + name: cloud-provider-config + 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 + expected: | + apiVersion: config.openshift.io/v1 + kind: Infrastructure + spec: + cloudConfig: + key: config + name: cloud-provider-config + 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 + + - name: Should not allow changing a previously stored non-matching failure domain server to another non-matching server (ratcheting) + initialCRDPatches: + - op: remove + path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/platformSpec/properties/vsphere/x-kubernetes-validations/0 + 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 + 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: vcenter-other.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 allow fixing a previously stored non-matching failure domain server to a valid matching server (ratcheting) + initialCRDPatches: + - op: remove + path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/platformSpec/properties/vsphere/x-kubernetes-validations/0 + 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 + 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 + 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 not be able to remove a vCenter that is in use by a failure domain initial: | apiVersion: config.openshift.io/v1