Skip to content

Commit

Permalink
Merge pull request openshift#4937 from gyohuangxin/ut_openstack_valid…
Browse files Browse the repository at this point in the history
…ation

OpenStack: Add Unit Tests for validation of platform.openstack.machineSubnet
  • Loading branch information
openshift-merge-robot committed Jun 21, 2021
2 parents e1e4b2a + b750bfd commit b06ea6f
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 3 deletions.
3 changes: 0 additions & 3 deletions pkg/asset/installconfig/openstack/validation/platform.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,6 @@ func validateMachinesSubnet(p *openstack.Platform, n *types.Networking, ci *Clou
}
}

if len(p.ExternalDNS) > 0 && p.MachinesSubnet != "" {
allErrs = append(allErrs, field.InternalError(fldPath.Child("machinesSubnet"), fmt.Errorf("externalDNS can't be set when using a custom machinesSubnet")))
}
return allErrs
}

Expand Down
118 changes: 118 additions & 0 deletions pkg/asset/installconfig/openstack/validation/platform_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"github.com/gophercloud/gophercloud/openstack/imageservice/v2/images"
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips"
"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
"github.com/gophercloud/gophercloud/openstack/networking/v2/subnets"
"github.com/openshift/installer/pkg/ipnet"
"github.com/openshift/installer/pkg/types"
"github.com/openshift/installer/pkg/types/openstack"
"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -329,3 +331,119 @@ func TestClusterOSImage(t *testing.T) {
})
}
}

func TestMachineSubnet(t *testing.T) {
cases := []struct {
name string
platform *openstack.Platform
cloudInfo *CloudInfo
networking *types.Networking
expectedErrMsg string // NOTE: this is a REGEXP
}{
{
name: "external dns is not supported",
platform: func() *openstack.Platform {
p := validPlatform()
p.MachinesSubnet = "031a5b9d-5a89-4465-8d54-3517ec2bad48"
p.ExternalDNS = append(p.ExternalDNS, "1.2.3.4")
return p
}(),
cloudInfo: validPlatformCloudInfo(),
networking: validNetworking(),
expectedErrMsg: `platform.openstack.externalDNS: Invalid value: \[\]string{"1.2.3.4"}: externalDNS is set, externalDNS is not supported when machinesSubnet is set`,
},
{
name: "machine subnet not found",
platform: func() *openstack.Platform {
p := validPlatform()
p.MachinesSubnet = "031a5b9d-5a89-4465-8d54-3517ec2bad48"
return p
}(),
cloudInfo: func() *CloudInfo {
ci := validPlatformCloudInfo()
ci.MachinesSubnet = nil
return ci
}(),
networking: validNetworking(),
expectedErrMsg: `platform.openstack.machinesSubnet: Not found: "031a5b9d-5a89-4465-8d54-3517ec2bad48"`,
},
{
name: "invalid subnet ID",
platform: func() *openstack.Platform {
p := validPlatform()
p.MachinesSubnet = "fake"
return p
}(),
cloudInfo: func() *CloudInfo {
ci := validPlatformCloudInfo()
ci.MachinesSubnet = &subnets.Subnet{
ID: "031a5b9d-5a89-4465-8d54-3517ec2bad48",
}
return ci
}(),
networking: validNetworking(),
expectedErrMsg: `platform.openstack.machinesSubnet: Internal error: invalid subnet ID`,
},
{
name: "doesn't match the CIDR",
platform: func() *openstack.Platform {
p := validPlatform()
p.MachinesSubnet = "031a5b9d-5a89-4465-8d54-3517ec2bad48"
return p
}(),
cloudInfo: func() *CloudInfo {
ci := validPlatformCloudInfo()
ci.MachinesSubnet = &subnets.Subnet{
ID: "031a5b9d-5a89-4465-8d54-3517ec2bad48",
}
ci.MachinesSubnet.CIDR = "172.0.0.1/16"
return ci
}(),
networking: func() *types.Networking {
n := validNetworking()
machineNetworkEntry := &types.MachineNetworkEntry{
CIDR: *ipnet.MustParseCIDR("172.0.0.1/24"),
}
n.MachineNetwork = []types.MachineNetworkEntry{*machineNetworkEntry}
return n
}(),
expectedErrMsg: `platform.openstack.machinesSubnet: Internal error: the first CIDR in machineNetwork, 172.0.0.1/24, doesn't match the CIDR of the machineSubnet, 172.0.0.1/16`,
},
{
name: "valid machine subnet",
platform: func() *openstack.Platform {
p := validPlatform()
p.MachinesSubnet = "031a5b9d-5a89-4465-8d54-3517ec2bad48"
return p
}(),
cloudInfo: func() *CloudInfo {
ci := validPlatformCloudInfo()
ci.MachinesSubnet = &subnets.Subnet{
ID: "031a5b9d-5a89-4465-8d54-3517ec2bad48",
}
ci.MachinesSubnet.CIDR = "172.0.0.1/24"
return ci
}(),
networking: func() *types.Networking {
n := validNetworking()
machineNetworkEntry := &types.MachineNetworkEntry{
CIDR: *ipnet.MustParseCIDR("172.0.0.1/24"),
}
n.MachineNetwork = []types.MachineNetworkEntry{*machineNetworkEntry}
return n
}(),
expectedErrMsg: "",
},
}

for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
aggregatedErrors := ValidatePlatform(tc.platform, tc.networking, tc.cloudInfo).ToAggregate()
if tc.expectedErrMsg != "" {
assert.Regexp(t, tc.expectedErrMsg, aggregatedErrors)
} else {
assert.NoError(t, aggregatedErrors)
}
})
}
}

0 comments on commit b06ea6f

Please sign in to comment.