Richer errors for validation

This commit is contained in:
Justin Santa Barbara 2015-05-22 18:59:20 -04:00
parent 9255770068
commit a271771341
2 changed files with 4 additions and 4 deletions

View File

@ -1081,7 +1081,7 @@ func ValidateService(service *api.Service) errs.ValidationErrorList {
if service.Spec.Type == api.ServiceTypeLoadBalancer { if service.Spec.Type == api.ServiceTypeLoadBalancer {
for i := range service.Spec.Ports { for i := range service.Spec.Ports {
if service.Spec.Ports[i].Protocol != api.ProtocolTCP { 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")) allErrs = append(allErrs, errs.NewFieldInvalid(fmt.Sprintf("spec.ports[%d].protocol", i), service.Spec.Ports[i], "cannot create an external load balancer with non-TCP ports"))
} }
} }
} }
@ -1089,7 +1089,7 @@ func ValidateService(service *api.Service) errs.ValidationErrorList {
if service.Spec.Type == api.ServiceTypeClusterIP { if service.Spec.Type == api.ServiceTypeClusterIP {
for i := range service.Spec.Ports { for i := range service.Spec.Ports {
if service.Spec.Ports[i].NodePort != 0 { if service.Spec.Ports[i].NodePort != 0 {
allErrs = append(allErrs, errs.NewFieldInvalid("spec.ports", service.Spec.Ports[i], "cannot specify a node port with cluster-visibility services")) allErrs = append(allErrs, errs.NewFieldInvalid(fmt.Sprintf("spec.ports[%d].nodePort", i), service.Spec.Ports[i], "cannot specify a node port with services of type ClusterIP"))
} }
} }
} }
@ -1106,7 +1106,7 @@ func ValidateService(service *api.Service) errs.ValidationErrorList {
key.NodePort = port.NodePort key.NodePort = port.NodePort
_, found := nodePorts[key] _, found := nodePorts[key]
if found { if found {
allErrs = append(allErrs, errs.NewFieldInvalid("spec.ports", *port, "duplicate nodePort specified")) allErrs = append(allErrs, errs.NewFieldInvalid(fmt.Sprintf("spec.ports[%d].nodePort", i), *port, "duplicate nodePort specified"))
} }
nodePorts[key] = true nodePorts[key] = true
} }

View File

@ -242,7 +242,7 @@ func (s *ServiceController) createLoadBalancerIfNeeded(namespacedName types.Name
// the cloud provider for what it knows about it. // the cloud provider for what it knows about it.
status, exists, err := s.balancer.GetTCPLoadBalancer(s.loadBalancerName(service), s.zone.Region) status, exists, err := s.balancer.GetTCPLoadBalancer(s.loadBalancerName(service), s.zone.Region)
if err != nil { if err != nil {
return fmt.Errorf("Error getting LB for service %s", namespacedName), retryable return fmt.Errorf("Error getting LB for service %s: %v", namespacedName, err), retryable
} }
if exists && api.LoadBalancerStatusEqual(status, &service.Status.LoadBalancer) { if exists && api.LoadBalancerStatusEqual(status, &service.Status.LoadBalancer) {
glog.Infof("LB already exists with status %s for previously uncached service %s", status, namespacedName) glog.Infof("LB already exists with status %s for previously uncached service %s", status, namespacedName)