Move validation of load balancers only supporting TCP ports to validation.go.

This commit is contained in:
Alex Robinson
2015-04-03 19:06:25 +00:00
parent 2b14fc1d14
commit 9a351e3670
4 changed files with 39 additions and 23 deletions

View File

@@ -927,6 +927,14 @@ func ValidateService(service *api.Service) errs.ValidationErrorList {
}
}
if service.Spec.CreateExternalLoadBalancer {
for i := range service.Spec.Ports {
if service.Spec.Ports[i].Protocol != api.ProtocolTCP {
allErrs = append(allErrs, errs.NewFieldInvalid("spec.ports", service.Spec.Ports[i], "cannot create an external load balancer with non-TCP ports"))
}
}
}
return allErrs
}

View File

@@ -1583,6 +1583,22 @@ func TestValidateService(t *testing.T) {
},
numErrs: 1,
},
{
name: "invalid load balancer protocol 1",
tweakSvc: func(s *api.Service) {
s.Spec.CreateExternalLoadBalancer = true
s.Spec.Ports[0].Protocol = "UDP"
},
numErrs: 1,
},
{
name: "invalid load balancer protocol 2",
tweakSvc: func(s *api.Service) {
s.Spec.CreateExternalLoadBalancer = true
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Port: 12345, Protocol: "UDP"})
},
numErrs: 1,
},
{
name: "valid 1",
tweakSvc: func(s *api.Service) {
@@ -1620,6 +1636,21 @@ func TestValidateService(t *testing.T) {
},
numErrs: 0,
},
{
name: "valid external load balancer",
tweakSvc: func(s *api.Service) {
s.Spec.CreateExternalLoadBalancer = true
},
numErrs: 0,
},
{
name: "valid external load balancer 2 ports",
tweakSvc: func(s *api.Service) {
s.Spec.CreateExternalLoadBalancer = true
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Port: 12345, Protocol: "TCP"})
},
numErrs: 0,
},
}
for _, tc := range testCases {