From 38f4f9b303f1718bac312192c137d9e2cb3c8748 Mon Sep 17 00:00:00 2001 From: Zihong Zheng Date: Fri, 1 Dec 2017 11:47:49 -0800 Subject: [PATCH] Cleanup for service API validation --- pkg/apis/core/validation/BUILD | 1 + pkg/apis/core/validation/validation.go | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/apis/core/validation/BUILD b/pkg/apis/core/validation/BUILD index e2d08109da..19169985a5 100644 --- a/pkg/apis/core/validation/BUILD +++ b/pkg/apis/core/validation/BUILD @@ -24,6 +24,7 @@ go_library( "//pkg/capabilities:go_default_library", "//pkg/features:go_default_library", "//pkg/fieldpath:go_default_library", + "//pkg/master/ports:go_default_library", "//pkg/security/apparmor:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", diff --git a/pkg/apis/core/validation/validation.go b/pkg/apis/core/validation/validation.go index 655d0bf216..a98bad9e29 100644 --- a/pkg/apis/core/validation/validation.go +++ b/pkg/apis/core/validation/validation.go @@ -51,6 +51,7 @@ import ( "k8s.io/kubernetes/pkg/capabilities" "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/fieldpath" + "k8s.io/kubernetes/pkg/master/ports" "k8s.io/kubernetes/pkg/security/apparmor" ) @@ -3390,9 +3391,9 @@ func ValidateService(service *core.Service) field.ErrorList { // This is a workaround for broken cloud environments that // over-open firewalls. Hopefully it can go away when more clouds // understand containers better. - if port.Port == 10250 { + if port.Port == ports.KubeletPort { portPath := specPath.Child("ports").Index(ix) - allErrs = append(allErrs, field.Invalid(portPath, port.Port, "may not expose port 10250 externally since it is used by kubelet")) + allErrs = append(allErrs, field.Invalid(portPath, port.Port, fmt.Sprintf("may not expose port %v externally since it is used by kubelet", ports.KubeletPort))) } } if service.Spec.ClusterIP == "None" { @@ -3404,7 +3405,7 @@ func ValidateService(service *core.Service) field.ErrorList { } case core.ServiceTypeExternalName: if service.Spec.ClusterIP != "" { - allErrs = append(allErrs, field.Invalid(specPath.Child("clusterIP"), service.Spec.ClusterIP, "must be empty for ExternalName services")) + allErrs = append(allErrs, field.Forbidden(specPath.Child("clusterIP"), "must be empty for ExternalName services")) } if len(service.Spec.ExternalName) > 0 { allErrs = append(allErrs, ValidateDNS1123Subdomain(service.Spec.ExternalName, specPath.Child("externalName"))...) @@ -3483,7 +3484,7 @@ func ValidateService(service *core.Service) field.ErrorList { for i := range service.Spec.Ports { portPath := portsPath.Index(i) if service.Spec.Ports[i].NodePort != 0 { - allErrs = append(allErrs, field.Invalid(portPath.Child("nodePort"), service.Spec.Ports[i].NodePort, "may not be used when `type` is 'ClusterIP'")) + allErrs = append(allErrs, field.Forbidden(portPath.Child("nodePort"), "may not be used when `type` is 'ClusterIP'")) } } } @@ -3533,7 +3534,7 @@ func ValidateService(service *core.Service) field.ErrorList { val = service.Annotations[core.AnnotationLoadBalancerSourceRangesKey] } if service.Spec.Type != core.ServiceTypeLoadBalancer { - allErrs = append(allErrs, field.Invalid(fieldPath, "", "may only be used when `type` is 'LoadBalancer'")) + allErrs = append(allErrs, field.Forbidden(fieldPath, "may only be used when `type` is 'LoadBalancer'")) } _, err := apiservice.GetLoadBalancerSourceRanges(service) if err != nil {