diff --git a/enhancements/installer/vsphere-ipi-zonal.md b/enhancements/installer/vsphere-ipi-zonal.md index 93482047e9..89a25caa83 100644 --- a/enhancements/installer/vsphere-ipi-zonal.md +++ b/enhancements/installer/vsphere-ipi-zonal.md @@ -139,22 +139,15 @@ type VSpherePlatformFailureDomainSpec struct { // +kubebuilder:validation:Required Zone string `json:"zone"` - // zoneType defines the type of zone that is used for this failure domain. The current available options - // are HostGroup and ComputeCluster. - // +kubebuilder:validation:MinLength=9 - // +kubebuilder:validation:MaxLength=14 - // +kubebuilder:validation:Optional - // +openshift:validation:FeatureGateAwareEnum:featureGate=VSphereHostVMGroupZonal,enum=HostGroup;ComputeCluster - // +unionDiscriminator - ZoneType VSphereFailureDomainType `json:"zoneType,omitempty"` - + +//todo: jcallen: *** unless zonespec could be removed to topology because of the name collision? + // zoneAffinity holds the 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. // +openshift:validation:featureGate=VSphereHostVMGroupZonal // +kubebuilder:validation:Optional - // +unionMember,optional - HostGroupZone *VSphereHostGroupZone `json:"hostGroupZone,omitempty"` + ZoneSpec *VSphereZoneSpec `json:"zoneSpec,omitempty"` // server is the fully-qualified domain name or the IP address of the vCenter server. // +kubebuilder:validation:Required @@ -173,7 +166,21 @@ type VSpherePlatformFailureDomainSpec struct { // and the vm-host affinity rule that together creates a affinity configuration for vm-host based zonal. // This configuration within vCenter creates the required association between a failure domain, virtual machines // and ESXi hosts to create a vm-host based zone. -type VSphereHostGroupZone struct +type VSphereZoneSpec struct { + // zoneType defines the type of zone that is used for this failure domain. The current available options + // are HostGroup and ComputeCluster. + // +kubebuilder:validation:MinLength=9 + // +kubebuilder:validation:MaxLength=14 + // +kubebuilder:validation:Optional + // +openshift:validation:FeatureGateAwareEnum:featureGate=VSphereHostVMGroupZonal,enum=HostGroup;ComputeCluster + // +unionDiscriminator + ZoneType VSphereFailureDomainType `json:"zoneType,omitempty"` + + + HostGroup *VSphereHostGroupZoneSpec `json:"hostGroup,omitempty` +} + +type VSphereHostGroupZoneSpec struct { // vmGroup is the name of the vm-host group of type virtual machine within vCenter for this failure domain. // This field is required when the VSphereFailureDomain ZoneType is HostGroup // +openshift:validation:featureGate=VSphereHostVMGroupZonal