From a21c52a7664d265f13f47a35eb32dcd36c8950a2 Mon Sep 17 00:00:00 2001 From: tummychow Date: Thu, 10 Sep 2015 15:48:28 -0700 Subject: [PATCH] Move util/validation files to their own package --- pkg/api/validation/events.go | 4 +- pkg/api/validation/validation.go | 71 ++++++++++--------- .../experimental/validation/validation.go | 5 +- .../unversioned/clientcmd/validation.go | 4 +- pkg/kubectl/cmd/label.go | 6 +- pkg/kubectl/run.go | 4 +- pkg/kubelet/network/plugins.go | 4 +- pkg/labels/selector.go | 8 +-- pkg/util/{ => validation}/validation.go | 2 +- pkg/util/{ => validation}/validation_test.go | 2 +- pkg/volume/plugins.go | 4 +- 11 files changed, 58 insertions(+), 56 deletions(-) rename pkg/util/{ => validation}/validation.go (99%) rename pkg/util/{ => validation}/validation_test.go (99%) diff --git a/pkg/api/validation/events.go b/pkg/api/validation/events.go index 2fe0f7ac504..26cb3b8963a 100644 --- a/pkg/api/validation/events.go +++ b/pkg/api/validation/events.go @@ -18,8 +18,8 @@ package validation import ( "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/util" errs "k8s.io/kubernetes/pkg/util/fielderrors" + "k8s.io/kubernetes/pkg/util/validation" ) // ValidateEvent makes sure that the event makes sense. @@ -30,7 +30,7 @@ func ValidateEvent(event *api.Event) errs.ValidationErrorList { event.Namespace != event.InvolvedObject.Namespace { allErrs = append(allErrs, errs.NewFieldInvalid("involvedObject.namespace", event.InvolvedObject.Namespace, "namespace does not match involvedObject")) } - if !util.IsDNS1123Subdomain(event.Namespace) { + if !validation.IsDNS1123Subdomain(event.Namespace) { allErrs = append(allErrs, errs.NewFieldInvalid("namespace", event.Namespace, "")) } return allErrs diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index 7319328fbcd..52e22ac360b 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -33,31 +33,32 @@ import ( "k8s.io/kubernetes/pkg/util" errs "k8s.io/kubernetes/pkg/util/fielderrors" "k8s.io/kubernetes/pkg/util/sets" + "k8s.io/kubernetes/pkg/util/validation" "github.com/golang/glog" ) -const cIdentifierErrorMsg string = `must be a C identifier (matching regex ` + util.CIdentifierFmt + `): e.g. "my_name" or "MyName"` +const cIdentifierErrorMsg string = `must be a C identifier (matching regex ` + validation.CIdentifierFmt + `): e.g. "my_name" or "MyName"` const isNegativeErrorMsg string = `must be non-negative` func intervalErrorMsg(lo, hi int) string { return fmt.Sprintf(`must be greater than %d and less than %d`, lo, hi) } -var labelValueErrorMsg string = fmt.Sprintf(`must have at most %d characters, matching regex %s: e.g. "MyValue" or ""`, util.LabelValueMaxLength, util.LabelValueFmt) -var qualifiedNameErrorMsg string = fmt.Sprintf(`must be a qualified name (at most %d characters, matching regex %s), with an optional DNS subdomain prefix (at most %d characters, matching regex %s) and slash (/): e.g. "MyName" or "example.com/MyName"`, util.QualifiedNameMaxLength, util.QualifiedNameFmt, util.DNS1123SubdomainMaxLength, util.DNS1123SubdomainFmt) -var DNSSubdomainErrorMsg string = fmt.Sprintf(`must be a DNS subdomain (at most %d characters, matching regex %s): e.g. "example.com"`, util.DNS1123SubdomainMaxLength, util.DNS1123SubdomainFmt) -var DNS1123LabelErrorMsg string = fmt.Sprintf(`must be a DNS label (at most %d characters, matching regex %s): e.g. "my-name"`, util.DNS1123LabelMaxLength, util.DNS1123LabelFmt) -var DNS952LabelErrorMsg string = fmt.Sprintf(`must be a DNS 952 label (at most %d characters, matching regex %s): e.g. "my-name"`, util.DNS952LabelMaxLength, util.DNS952LabelFmt) +var labelValueErrorMsg string = fmt.Sprintf(`must have at most %d characters, matching regex %s: e.g. "MyValue" or ""`, validation.LabelValueMaxLength, validation.LabelValueFmt) +var qualifiedNameErrorMsg string = fmt.Sprintf(`must be a qualified name (at most %d characters, matching regex %s), with an optional DNS subdomain prefix (at most %d characters, matching regex %s) and slash (/): e.g. "MyName" or "example.com/MyName"`, validation.QualifiedNameMaxLength, validation.QualifiedNameFmt, validation.DNS1123SubdomainMaxLength, validation.DNS1123SubdomainFmt) +var DNSSubdomainErrorMsg string = fmt.Sprintf(`must be a DNS subdomain (at most %d characters, matching regex %s): e.g. "example.com"`, validation.DNS1123SubdomainMaxLength, validation.DNS1123SubdomainFmt) +var DNS1123LabelErrorMsg string = fmt.Sprintf(`must be a DNS label (at most %d characters, matching regex %s): e.g. "my-name"`, validation.DNS1123LabelMaxLength, validation.DNS1123LabelFmt) +var DNS952LabelErrorMsg string = fmt.Sprintf(`must be a DNS 952 label (at most %d characters, matching regex %s): e.g. "my-name"`, validation.DNS952LabelMaxLength, validation.DNS952LabelFmt) var pdPartitionErrorMsg string = intervalErrorMsg(0, 255) var portRangeErrorMsg string = intervalErrorMsg(0, 65536) -var portNameErrorMsg string = fmt.Sprintf(`must be an IANA_SVC_NAME (at most 15 characters, matching regex %s, it must contain at least one letter [a-z], and hyphens cannot be adjacent to other hyphens): e.g. "http"`, util.IdentifierNoHyphensBeginEndFmt) +var portNameErrorMsg string = fmt.Sprintf(`must be an IANA_SVC_NAME (at most 15 characters, matching regex %s, it must contain at least one letter [a-z], and hyphens cannot be adjacent to other hyphens): e.g. "http"`, validation.IdentifierNoHyphensBeginEndFmt) const totalAnnotationSizeLimitB int = 64 * (1 << 10) // 64 kB func ValidateLabelName(labelName, fieldName string) errs.ValidationErrorList { allErrs := errs.ValidationErrorList{} - if !util.IsQualifiedName(labelName) { + if !validation.IsQualifiedName(labelName) { allErrs = append(allErrs, errs.NewFieldInvalid(fieldName, labelName, qualifiedNameErrorMsg)) } return allErrs @@ -68,7 +69,7 @@ func ValidateLabels(labels map[string]string, field string) errs.ValidationError allErrs := errs.ValidationErrorList{} for k, v := range labels { allErrs = append(allErrs, ValidateLabelName(k, field)...) - if !util.IsValidLabelValue(v) { + if !validation.IsValidLabelValue(v) { allErrs = append(allErrs, errs.NewFieldInvalid(field, v, labelValueErrorMsg)) } } @@ -80,7 +81,7 @@ func ValidateAnnotations(annotations map[string]string, field string) errs.Valid allErrs := errs.ValidationErrorList{} var totalSize int64 for k, v := range annotations { - if !util.IsQualifiedName(strings.ToLower(k)) { + if !validation.IsQualifiedName(strings.ToLower(k)) { allErrs = append(allErrs, errs.NewFieldInvalid(field, k, qualifiedNameErrorMsg)) } totalSize += (int64)(len(k)) + (int64)(len(v)) @@ -182,7 +183,7 @@ func NameIsDNSSubdomain(name string, prefix bool) (bool, string) { if prefix { name = maskTrailingDash(name) } - if util.IsDNS1123Subdomain(name) { + if validation.IsDNS1123Subdomain(name) { return true, "" } return false, DNSSubdomainErrorMsg @@ -193,7 +194,7 @@ func NameIsDNSLabel(name string, prefix bool) (bool, string) { if prefix { name = maskTrailingDash(name) } - if util.IsDNS1123Label(name) { + if validation.IsDNS1123Label(name) { return true, "" } return false, DNS1123LabelErrorMsg @@ -204,7 +205,7 @@ func NameIsDNS952Label(name string, prefix bool) (bool, string) { if prefix { name = maskTrailingDash(name) } - if util.IsDNS952Label(name) { + if validation.IsDNS952Label(name) { return true, "" } return false, DNS952LabelErrorMsg @@ -316,7 +317,7 @@ func validateVolumes(volumes []api.Volume) (sets.String, errs.ValidationErrorLis el := validateSource(&vol.VolumeSource).Prefix("source") if len(vol.Name) == 0 { el = append(el, errs.NewFieldRequired("name")) - } else if !util.IsDNS1123Label(vol.Name) { + } else if !validation.IsDNS1123Label(vol.Name) { el = append(el, errs.NewFieldInvalid("name", vol.Name, DNS1123LabelErrorMsg)) } else if allNames.Has(vol.Name) { el = append(el, errs.NewFieldDuplicate("name", vol.Name)) @@ -698,7 +699,7 @@ func validatePorts(ports []api.ContainerPort) errs.ValidationErrorList { for i, port := range ports { pErrs := errs.ValidationErrorList{} if len(port.Name) > 0 { - if !util.IsValidPortName(port.Name) { + if !validation.IsValidPortName(port.Name) { pErrs = append(pErrs, errs.NewFieldInvalid("name", port.Name, portNameErrorMsg)) } else if allNames.Has(port.Name) { pErrs = append(pErrs, errs.NewFieldDuplicate("name", port.Name)) @@ -708,10 +709,10 @@ func validatePorts(ports []api.ContainerPort) errs.ValidationErrorList { } if port.ContainerPort == 0 { pErrs = append(pErrs, errs.NewFieldInvalid("containerPort", port.ContainerPort, portRangeErrorMsg)) - } else if !util.IsValidPortNum(port.ContainerPort) { + } else if !validation.IsValidPortNum(port.ContainerPort) { pErrs = append(pErrs, errs.NewFieldInvalid("containerPort", port.ContainerPort, portRangeErrorMsg)) } - if port.HostPort != 0 && !util.IsValidPortNum(port.HostPort) { + if port.HostPort != 0 && !validation.IsValidPortNum(port.HostPort) { pErrs = append(pErrs, errs.NewFieldInvalid("hostPort", port.HostPort, portRangeErrorMsg)) } if len(port.Protocol) == 0 { @@ -731,7 +732,7 @@ func validateEnv(vars []api.EnvVar) errs.ValidationErrorList { vErrs := errs.ValidationErrorList{} if len(ev.Name) == 0 { vErrs = append(vErrs, errs.NewFieldRequired("name")) - } else if !util.IsCIdentifier(ev.Name) { + } else if !validation.IsCIdentifier(ev.Name) { vErrs = append(vErrs, errs.NewFieldInvalid("name", ev.Name, cIdentifierErrorMsg)) } vErrs = append(vErrs, validateEnvVarValueFrom(ev).Prefix("valueFrom")...) @@ -861,9 +862,9 @@ func validateHTTPGetAction(http *api.HTTPGetAction) errs.ValidationErrorList { if len(http.Path) == 0 { allErrors = append(allErrors, errs.NewFieldRequired("path")) } - if http.Port.Kind == util.IntstrInt && !util.IsValidPortNum(http.Port.IntVal) { + if http.Port.Kind == util.IntstrInt && !validation.IsValidPortNum(http.Port.IntVal) { allErrors = append(allErrors, errs.NewFieldInvalid("port", http.Port, portRangeErrorMsg)) - } else if http.Port.Kind == util.IntstrString && !util.IsValidPortName(http.Port.StrVal) { + } else if http.Port.Kind == util.IntstrString && !validation.IsValidPortName(http.Port.StrVal) { allErrors = append(allErrors, errs.NewFieldInvalid("port", http.Port.StrVal, portNameErrorMsg)) } supportedSchemes := sets.NewString(string(api.URISchemeHTTP), string(api.URISchemeHTTPS)) @@ -875,9 +876,9 @@ func validateHTTPGetAction(http *api.HTTPGetAction) errs.ValidationErrorList { func validateTCPSocketAction(tcp *api.TCPSocketAction) errs.ValidationErrorList { allErrors := errs.ValidationErrorList{} - if tcp.Port.Kind == util.IntstrInt && !util.IsValidPortNum(tcp.Port.IntVal) { + if tcp.Port.Kind == util.IntstrInt && !validation.IsValidPortNum(tcp.Port.IntVal) { allErrors = append(allErrors, errs.NewFieldInvalid("port", tcp.Port, portRangeErrorMsg)) - } else if tcp.Port.Kind == util.IntstrString && !util.IsValidPortName(tcp.Port.StrVal) { + } else if tcp.Port.Kind == util.IntstrString && !validation.IsValidPortName(tcp.Port.StrVal) { allErrors = append(allErrors, errs.NewFieldInvalid("port", tcp.Port.StrVal, portNameErrorMsg)) } return allErrors @@ -943,7 +944,7 @@ func validateContainers(containers []api.Container, volumes sets.String) errs.Va cErrs := errs.ValidationErrorList{} if len(ctr.Name) == 0 { cErrs = append(cErrs, errs.NewFieldRequired("name")) - } else if !util.IsDNS1123Label(ctr.Name) { + } else if !validation.IsDNS1123Label(ctr.Name) { cErrs = append(cErrs, errs.NewFieldInvalid("name", ctr.Name, DNS1123LabelErrorMsg)) } else if allNames.Has(ctr.Name) { cErrs = append(cErrs, errs.NewFieldDuplicate("name", ctr.Name)) @@ -1227,7 +1228,7 @@ func validateServicePort(sp *api.ServicePort, requireName bool, allNames *sets.S if requireName && sp.Name == "" { allErrs = append(allErrs, errs.NewFieldRequired("name")) } else if sp.Name != "" { - if !util.IsDNS1123Label(sp.Name) { + if !validation.IsDNS1123Label(sp.Name) { allErrs = append(allErrs, errs.NewFieldInvalid("name", sp.Name, DNS1123LabelErrorMsg)) } else if allNames.Has(sp.Name) { allErrs = append(allErrs, errs.NewFieldDuplicate("name", sp.Name)) @@ -1236,7 +1237,7 @@ func validateServicePort(sp *api.ServicePort, requireName bool, allNames *sets.S } } - if !util.IsValidPortNum(sp.Port) { + if !validation.IsValidPortNum(sp.Port) { allErrs = append(allErrs, errs.NewFieldInvalid("port", sp.Port, portRangeErrorMsg)) } @@ -1246,10 +1247,10 @@ func validateServicePort(sp *api.ServicePort, requireName bool, allNames *sets.S allErrs = append(allErrs, errs.NewFieldValueNotSupported("protocol", sp.Protocol, supportedPortProtocols.List())) } - if sp.TargetPort.Kind == util.IntstrInt && !util.IsValidPortNum(sp.TargetPort.IntVal) { + if sp.TargetPort.Kind == util.IntstrInt && !validation.IsValidPortNum(sp.TargetPort.IntVal) { allErrs = append(allErrs, errs.NewFieldInvalid("targetPort", sp.TargetPort, portRangeErrorMsg)) } - if sp.TargetPort.Kind == util.IntstrString && !util.IsValidPortName(sp.TargetPort.StrVal) { + if sp.TargetPort.Kind == util.IntstrString && !validation.IsValidPortName(sp.TargetPort.StrVal) { allErrs = append(allErrs, errs.NewFieldInvalid("targetPort", sp.TargetPort, portNameErrorMsg)) } @@ -1414,7 +1415,7 @@ func ValidateNodeUpdate(oldNode *api.Node, node *api.Node) errs.ValidationErrorL // Refer to docs/resources.md for more details. func validateResourceName(value string, field string) errs.ValidationErrorList { allErrs := errs.ValidationErrorList{} - if !util.IsQualifiedName(value) { + if !validation.IsQualifiedName(value) { return append(allErrs, errs.NewFieldInvalid(field, value, "resource typename: "+qualifiedNameErrorMsg)) } @@ -1522,14 +1523,14 @@ func ValidateServiceAccountUpdate(oldServiceAccount, newServiceAccount *api.Serv return allErrs } -const SecretKeyFmt string = "\\.?" + util.DNS1123LabelFmt + "(\\." + util.DNS1123LabelFmt + ")*" +const SecretKeyFmt string = "\\.?" + validation.DNS1123LabelFmt + "(\\." + validation.DNS1123LabelFmt + ")*" var secretKeyRegexp = regexp.MustCompile("^" + SecretKeyFmt + "$") // IsSecretKey tests for a string that conforms to the definition of a // subdomain in DNS (RFC 1123), except that a leading dot is allowed func IsSecretKey(value string) bool { - return len(value) <= util.DNS1123SubdomainMaxLength && secretKeyRegexp.MatchString(value) + return len(value) <= validation.DNS1123SubdomainMaxLength && secretKeyRegexp.MatchString(value) } // ValidateSecret tests if required fields in the Secret are set. @@ -1540,7 +1541,7 @@ func ValidateSecret(secret *api.Secret) errs.ValidationErrorList { totalSize := 0 for key, value := range secret.Data { if !IsSecretKey(key) { - allErrs = append(allErrs, errs.NewFieldInvalid(fmt.Sprintf("data[%s]", key), key, fmt.Sprintf("must have at most %d characters and match regex %s", util.DNS1123SubdomainMaxLength, SecretKeyFmt))) + allErrs = append(allErrs, errs.NewFieldInvalid(fmt.Sprintf("data[%s]", key), key, fmt.Sprintf("must have at most %d characters and match regex %s", validation.DNS1123SubdomainMaxLength, SecretKeyFmt))) } totalSize += len(value) @@ -1696,7 +1697,7 @@ func ValidateNamespace(namespace *api.Namespace) errs.ValidationErrorList { // Validate finalizer names func validateFinalizerName(stringValue string) errs.ValidationErrorList { allErrs := errs.ValidationErrorList{} - if !util.IsQualifiedName(stringValue) { + if !validation.IsQualifiedName(stringValue) { return append(allErrs, errs.NewFieldInvalid("spec.finalizers", stringValue, qualifiedNameErrorMsg)) } @@ -1786,7 +1787,7 @@ func validateEndpointSubsets(subsets []api.EndpointSubset) errs.ValidationErrorL func validateEndpointAddress(address *api.EndpointAddress) errs.ValidationErrorList { allErrs := errs.ValidationErrorList{} - if !util.IsValidIPv4(address.IP) { + if !validation.IsValidIPv4(address.IP) { allErrs = append(allErrs, errs.NewFieldInvalid("ip", address.IP, "invalid IPv4 address")) return allErrs } @@ -1819,11 +1820,11 @@ func validateEndpointPort(port *api.EndpointPort, requireName bool) errs.Validat if requireName && port.Name == "" { allErrs = append(allErrs, errs.NewFieldRequired("name")) } else if port.Name != "" { - if !util.IsDNS1123Label(port.Name) { + if !validation.IsDNS1123Label(port.Name) { allErrs = append(allErrs, errs.NewFieldInvalid("name", port.Name, DNS1123LabelErrorMsg)) } } - if !util.IsValidPortNum(port.Port) { + if !validation.IsValidPortNum(port.Port) { allErrs = append(allErrs, errs.NewFieldInvalid("port", port.Port, portRangeErrorMsg)) } if len(port.Protocol) == 0 { diff --git a/pkg/apis/experimental/validation/validation.go b/pkg/apis/experimental/validation/validation.go index 1a6454fa2cc..c38f08cef99 100644 --- a/pkg/apis/experimental/validation/validation.go +++ b/pkg/apis/experimental/validation/validation.go @@ -26,6 +26,7 @@ import ( "k8s.io/kubernetes/pkg/util" errs "k8s.io/kubernetes/pkg/util/fielderrors" "k8s.io/kubernetes/pkg/util/sets" + "k8s.io/kubernetes/pkg/util/validation" ) const isNegativeErrorMsg string = `must be non-negative` @@ -170,7 +171,7 @@ func ValidateDeploymentName(name string, prefix bool) (bool, string) { func ValidatePositiveIntOrPercent(intOrPercent util.IntOrString, fieldName string) errs.ValidationErrorList { allErrs := errs.ValidationErrorList{} if intOrPercent.Kind == util.IntstrString { - if !util.IsValidPercent(intOrPercent.StrVal) { + if !validation.IsValidPercent(intOrPercent.StrVal) { allErrs = append(allErrs, errs.NewFieldInvalid(fieldName, intOrPercent, "value should be int(5) or percentage(5%)")) } @@ -181,7 +182,7 @@ func ValidatePositiveIntOrPercent(intOrPercent util.IntOrString, fieldName strin } func getPercentValue(intOrStringValue util.IntOrString) (int, bool) { - if intOrStringValue.Kind != util.IntstrString || !util.IsValidPercent(intOrStringValue.StrVal) { + if intOrStringValue.Kind != util.IntstrString || !validation.IsValidPercent(intOrStringValue.StrVal) { return 0, false } value, _ := strconv.Atoi(intOrStringValue.StrVal[:len(intOrStringValue.StrVal)-1]) diff --git a/pkg/client/unversioned/clientcmd/validation.go b/pkg/client/unversioned/clientcmd/validation.go index 002f135d10d..a631dc65d1d 100644 --- a/pkg/client/unversioned/clientcmd/validation.go +++ b/pkg/client/unversioned/clientcmd/validation.go @@ -23,8 +23,8 @@ import ( "strings" clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api" - "k8s.io/kubernetes/pkg/util" utilerrors "k8s.io/kubernetes/pkg/util/errors" + "k8s.io/kubernetes/pkg/util/validation" ) var ErrNoContext = errors.New("no context chosen") @@ -232,7 +232,7 @@ func validateContext(contextName string, context clientcmdapi.Context, config cl validationErrors = append(validationErrors, fmt.Errorf("cluster %q was not found for context %q", context.Cluster, contextName)) } - if (len(context.Namespace) != 0) && !util.IsDNS952Label(context.Namespace) { + if (len(context.Namespace) != 0) && !validation.IsDNS952Label(context.Namespace) { validationErrors = append(validationErrors, fmt.Errorf("namespace %q for context %q does not conform to the kubernetes DNS952 rules", context.Namespace, contextName)) } diff --git a/pkg/kubectl/cmd/label.go b/pkg/kubectl/cmd/label.go index 6de412d8e71..0f040a8d1f1 100644 --- a/pkg/kubectl/cmd/label.go +++ b/pkg/kubectl/cmd/label.go @@ -27,8 +27,8 @@ import ( cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/runtime" - "k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util/errors" + "k8s.io/kubernetes/pkg/util/validation" ) // LabelOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of @@ -77,7 +77,7 @@ func NewCmdLabel(f *cmdutil.Factory, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]", Short: "Update the labels on a resource", - Long: fmt.Sprintf(label_long, util.LabelValueMaxLength), + Long: fmt.Sprintf(label_long, validation.LabelValueMaxLength), Example: label_example, Run: func(cmd *cobra.Command, args []string) { err := RunLabel(f, out, cmd, args, options) @@ -113,7 +113,7 @@ func parseLabels(spec []string) (map[string]string, []string, error) { for _, labelSpec := range spec { if strings.Index(labelSpec, "=") != -1 { parts := strings.Split(labelSpec, "=") - if len(parts) != 2 || len(parts[1]) == 0 || !util.IsValidLabelValue(parts[1]) { + if len(parts) != 2 || len(parts[1]) == 0 || !validation.IsValidLabelValue(parts[1]) { return nil, nil, fmt.Errorf("invalid label spec: %v", labelSpec) } labels[parts[0]] = parts[1] diff --git a/pkg/kubectl/run.go b/pkg/kubectl/run.go index be8e843f39f..9add392bf45 100644 --- a/pkg/kubectl/run.go +++ b/pkg/kubectl/run.go @@ -24,7 +24,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/resource" "k8s.io/kubernetes/pkg/runtime" - "k8s.io/kubernetes/pkg/util" + "k8s.io/kubernetes/pkg/util/validation" ) type BasicReplicationController struct{} @@ -394,7 +394,7 @@ func parseEnvs(envArray []string) ([]api.EnvVar, error) { envs := []api.EnvVar{} for _, env := range envArray { parts := strings.Split(env, "=") - if len(parts) != 2 || !util.IsCIdentifier(parts[0]) || len(parts[1]) == 0 { + if len(parts) != 2 || !validation.IsCIdentifier(parts[0]) || len(parts[1]) == 0 { return nil, fmt.Errorf("invalid env: %v", env) } envVar := api.EnvVar{Name: parts[0], Value: parts[1]} diff --git a/pkg/kubelet/network/plugins.go b/pkg/kubelet/network/plugins.go index ac46d4c9fe1..77d0abae17a 100644 --- a/pkg/kubelet/network/plugins.go +++ b/pkg/kubelet/network/plugins.go @@ -25,8 +25,8 @@ import ( "k8s.io/kubernetes/pkg/api" client "k8s.io/kubernetes/pkg/client/unversioned" kubeletTypes "k8s.io/kubernetes/pkg/kubelet/types" - "k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util/errors" + "k8s.io/kubernetes/pkg/util/validation" ) const DefaultPluginName = "kubernetes.io/no-op" @@ -87,7 +87,7 @@ func InitNetworkPlugin(plugins []NetworkPlugin, networkPluginName string, host H allErrs := []error{} for _, plugin := range plugins { name := plugin.Name() - if !util.IsQualifiedName(name) { + if !validation.IsQualifiedName(name) { allErrs = append(allErrs, fmt.Errorf("network plugin has invalid name: %#v", plugin)) continue } diff --git a/pkg/labels/selector.go b/pkg/labels/selector.go index 7d811cc4830..1dffa19ee41 100644 --- a/pkg/labels/selector.go +++ b/pkg/labels/selector.go @@ -22,9 +22,9 @@ import ( "sort" "strings" - "k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util/fielderrors" "k8s.io/kubernetes/pkg/util/sets" + "k8s.io/kubernetes/pkg/util/validation" ) // Selector represents a label selector. @@ -647,17 +647,17 @@ func Parse(selector string) (Selector, error) { return nil, error } -const qualifiedNameErrorMsg string = "must match regex [" + util.DNS1123SubdomainFmt + " / ] " + util.DNS1123LabelFmt +const qualifiedNameErrorMsg string = "must match regex [" + validation.DNS1123SubdomainFmt + " / ] " + validation.DNS1123LabelFmt func validateLabelKey(k string) error { - if !util.IsQualifiedName(k) { + if !validation.IsQualifiedName(k) { return fielderrors.NewFieldInvalid("label key", k, qualifiedNameErrorMsg) } return nil } func validateLabelValue(v string) error { - if !util.IsValidLabelValue(v) { + if !validation.IsValidLabelValue(v) { return fielderrors.NewFieldInvalid("label value", v, qualifiedNameErrorMsg) } return nil diff --git a/pkg/util/validation.go b/pkg/util/validation/validation.go similarity index 99% rename from pkg/util/validation.go rename to pkg/util/validation/validation.go index 20f68317201..854a7ee7b53 100644 --- a/pkg/util/validation.go +++ b/pkg/util/validation/validation.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package util +package validation import ( "net" diff --git a/pkg/util/validation_test.go b/pkg/util/validation/validation_test.go similarity index 99% rename from pkg/util/validation_test.go rename to pkg/util/validation/validation_test.go index a0605665b76..f8434493e09 100644 --- a/pkg/util/validation_test.go +++ b/pkg/util/validation/validation_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package util +package validation import ( "strings" diff --git a/pkg/volume/plugins.go b/pkg/volume/plugins.go index fffa49fa607..bacaa736f8c 100644 --- a/pkg/volume/plugins.go +++ b/pkg/volume/plugins.go @@ -26,9 +26,9 @@ import ( client "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/types" - "k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util/errors" "k8s.io/kubernetes/pkg/util/mount" + "k8s.io/kubernetes/pkg/util/validation" ) // VolumeOptions contains option information about a volume. @@ -203,7 +203,7 @@ func (pm *VolumePluginMgr) InitPlugins(plugins []VolumePlugin, host VolumeHost) allErrs := []error{} for _, plugin := range plugins { name := plugin.Name() - if !util.IsQualifiedName(name) { + if !validation.IsQualifiedName(name) { allErrs = append(allErrs, fmt.Errorf("volume plugin has invalid name: %#v", plugin)) continue }