1
0
mirror of https://github.com/openshift/installer.git synced 2026-02-05 06:46:36 +01:00

Merge pull request #8777 from openshift-cherrypick-robot/cherry-pick-8758-to-release-4.16

[release-4.16] OCPBUGS-37606: vSphere validation fails if dc is in a folder
This commit is contained in:
openshift-merge-bot[bot]
2024-09-04 14:03:41 +00:00
committed by GitHub
2 changed files with 28 additions and 2 deletions

View File

@@ -214,7 +214,7 @@ func validateFailureDomains(p *vsphere.Platform, fldPath *field.Path, isLegacyUp
}
datacenterName := clusterPathParts[1]
if len(failureDomain.Topology.Datacenter) != 0 && datacenterName != failureDomain.Topology.Datacenter {
if len(failureDomain.Topology.Datacenter) != 0 && !strings.Contains(failureDomain.Topology.Datacenter, datacenterName) {
return append(allErrs, field.Invalid(topologyFld.Child("computeCluster"), computeCluster, fmt.Sprintf("compute cluster must be in datacenter %s", failureDomain.Topology.Datacenter)))
}
p.FailureDomains[index].Topology.ComputeCluster = filepath.Clean(p.FailureDomains[index].Topology.ComputeCluster)
@@ -229,7 +229,7 @@ func validateFailureDomains(p *vsphere.Platform, fldPath *field.Path, isLegacyUp
}
datacenterName := resourcePoolPathParts[1]
clusterName := resourcePoolPathParts[2]
if len(failureDomain.Topology.Datacenter) != 0 && datacenterName != failureDomain.Topology.Datacenter {
if len(failureDomain.Topology.Datacenter) != 0 && !strings.Contains(failureDomain.Topology.Datacenter, datacenterName) {
return append(allErrs, field.Invalid(topologyFld.Child("resourcePool"), resourcePool, fmt.Sprintf("resource pool must be in datacenter %s", failureDomain.Topology.Datacenter)))
}
if len(failureDomain.Topology.ComputeCluster) != 0 && !strings.Contains(failureDomain.Topology.ComputeCluster, clusterName) {

View File

@@ -2,7 +2,9 @@ package validation
import (
"fmt"
"path"
"regexp"
"strings"
"testing"
"github.com/stretchr/testify/assert"
@@ -205,6 +207,30 @@ func TestValidatePlatform(t *testing.T) {
return p
}(),
},
{
name: "Datacenter as a child of a folder",
platform: func() *vsphere.Platform {
p := validPlatform()
for i, v := range p.VCenters {
for j, dc := range v.Datacenters {
p.VCenters[i].Datacenters[j] = path.Join("/dcfolder", dc)
}
}
for i, fd := range p.FailureDomains {
dcAsChild := path.Join("/dcfolder", fd.Topology.Datacenter)
p.FailureDomains[i].Topology.Datacenter = dcAsChild
p.FailureDomains[i].Topology.ResourcePool = strings.ReplaceAll(fd.Topology.ResourcePool, fd.Topology.Datacenter, dcAsChild)
p.FailureDomains[i].Topology.Folder = strings.ReplaceAll(fd.Topology.Folder, fd.Topology.Datacenter, dcAsChild)
p.FailureDomains[i].Topology.ComputeCluster = strings.ReplaceAll(fd.Topology.ComputeCluster, fd.Topology.Datacenter, dcAsChild)
p.FailureDomains[i].Topology.Datastore = strings.ReplaceAll(fd.Topology.Datastore, fd.Topology.Datacenter, dcAsChild)
}
return p
}(),
},
{
name: "Additional invalid tag IDs provided",
platform: func() *vsphere.Platform {