Use proper errors for subnet validation

This commit is contained in:
Alexander Block 2021-02-10 15:27:11 +01:00
parent 091a18a128
commit 4ae47cc546
2 changed files with 10 additions and 10 deletions

View File

@ -208,7 +208,7 @@ func awsValidateLoadBalancerSubnets(fieldPath *field.Path, spec kops.ClusterSpec
for i, subnet := range lbSpec.Subnets { for i, subnet := range lbSpec.Subnets {
var clusterSubnet *kops.ClusterSubnetSpec var clusterSubnet *kops.ClusterSubnetSpec
if subnet.Name == "" { if subnet.Name == "" {
allErrs = append(allErrs, field.Invalid(fieldPath.Index(i).Child("name"), subnet, "subnet name can't be empty")) allErrs = append(allErrs, field.Required(fieldPath.Index(i).Child("name"), "subnet name can't be empty"))
} else { } else {
for _, cs := range spec.Subnets { for _, cs := range spec.Subnets {
if subnet.Name == cs.Name { if subnet.Name == cs.Name {
@ -217,16 +217,16 @@ func awsValidateLoadBalancerSubnets(fieldPath *field.Path, spec kops.ClusterSpec
} }
} }
if clusterSubnet == nil { if clusterSubnet == nil {
allErrs = append(allErrs, field.Invalid(fieldPath.Index(i).Child("name"), subnet, fmt.Sprintf("subnet %q not found in cluster subnets", subnet.Name))) allErrs = append(allErrs, field.NotFound(fieldPath.Index(i).Child("name"), fmt.Sprintf("subnet %q not found in cluster subnets", subnet.Name)))
} }
} }
if subnet.PrivateIPv4Address != nil { if subnet.PrivateIPv4Address != nil {
if *subnet.PrivateIPv4Address == "" { if *subnet.PrivateIPv4Address == "" {
allErrs = append(allErrs, field.Invalid(fieldPath.Index(i).Child("privateIPv4Address"), subnet, "privateIPv4Address can't be empty")) allErrs = append(allErrs, field.Required(fieldPath.Index(i).Child("privateIPv4Address"), "privateIPv4Address can't be empty"))
} }
ip := net.ParseIP(*subnet.PrivateIPv4Address) ip := net.ParseIP(*subnet.PrivateIPv4Address)
if ip == nil { if ip == nil || ip.To4() == nil {
allErrs = append(allErrs, field.Invalid(fieldPath.Index(i).Child("privateIPv4Address"), subnet, "privateIPv4Address is not a valid IPv4 address")) allErrs = append(allErrs, field.Invalid(fieldPath.Index(i).Child("privateIPv4Address"), subnet, "privateIPv4Address is not a valid IPv4 address"))
} else if clusterSubnet != nil { } else if clusterSubnet != nil {
_, ipNet, err := net.ParseCIDR(clusterSubnet.CIDR) _, ipNet, err := net.ParseCIDR(clusterSubnet.CIDR)
@ -238,7 +238,7 @@ func awsValidateLoadBalancerSubnets(fieldPath *field.Path, spec kops.ClusterSpec
} }
if lbSpec.Class != kops.LoadBalancerClassNetwork || lbSpec.Type != kops.LoadBalancerTypeInternal { if lbSpec.Class != kops.LoadBalancerClassNetwork || lbSpec.Type != kops.LoadBalancerTypeInternal {
allErrs = append(allErrs, field.Invalid(fieldPath.Index(i).Child("privateIPv4Address"), subnet, "privateIPv4Address only allowed for internal NLBs")) allErrs = append(allErrs, field.Forbidden(fieldPath.Index(i).Child("privateIPv4Address"), "privateIPv4Address only allowed for internal NLBs"))
} }
} }
} }

View File

@ -283,7 +283,7 @@ func TestLoadBalancerSubnets(t *testing.T) {
PrivateIPv4Address: nil, PrivateIPv4Address: nil,
}, },
}, },
expected: []string{"Invalid value::spec.api.loadBalancer.subnets[0].name"}, expected: []string{"Required value::spec.api.loadBalancer.subnets[0].name"},
}, },
{ // subnet not found { // subnet not found
clusterSubnets: []string{"a", "b", "c"}, clusterSubnets: []string{"a", "b", "c"},
@ -293,7 +293,7 @@ func TestLoadBalancerSubnets(t *testing.T) {
PrivateIPv4Address: nil, PrivateIPv4Address: nil,
}, },
}, },
expected: []string{"Invalid value::spec.api.loadBalancer.subnets[0].name"}, expected: []string{"Not found::spec.api.loadBalancer.subnets[0].name"},
}, },
{ // empty privateIPv4Address { // empty privateIPv4Address
clusterSubnets: []string{"a", "b", "c"}, clusterSubnets: []string{"a", "b", "c"},
@ -303,7 +303,7 @@ func TestLoadBalancerSubnets(t *testing.T) {
PrivateIPv4Address: fi.String(""), PrivateIPv4Address: fi.String(""),
}, },
}, },
expected: []string{"Invalid value::spec.api.loadBalancer.subnets[0].privateIPv4Address"}, expected: []string{"Required value::spec.api.loadBalancer.subnets[0].privateIPv4Address"},
}, },
{ // invalid privateIPv4Address { // invalid privateIPv4Address
clusterSubnets: []string{"a", "b", "c"}, clusterSubnets: []string{"a", "b", "c"},
@ -334,7 +334,7 @@ func TestLoadBalancerSubnets(t *testing.T) {
PrivateIPv4Address: fi.String("10.0.0.10"), PrivateIPv4Address: fi.String("10.0.0.10"),
}, },
}, },
expected: []string{"Invalid value::spec.api.loadBalancer.subnets[0].privateIPv4Address"}, expected: []string{"Forbidden::spec.api.loadBalancer.subnets[0].privateIPv4Address"},
}, },
{ // invalid type { // invalid type
lbType: fi.String(string(kops.LoadBalancerTypePublic)), lbType: fi.String(string(kops.LoadBalancerTypePublic)),
@ -345,7 +345,7 @@ func TestLoadBalancerSubnets(t *testing.T) {
PrivateIPv4Address: fi.String("10.0.0.10"), PrivateIPv4Address: fi.String("10.0.0.10"),
}, },
}, },
expected: []string{"Invalid value::spec.api.loadBalancer.subnets[0].privateIPv4Address"}, expected: []string{"Forbidden::spec.api.loadBalancer.subnets[0].privateIPv4Address"},
}, },
} }