func validateIngressRules(IngressRules []extensions.IngressRule, fldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} if len(IngressRules) == 0 { return append(allErrs, field.Required(fldPath, "")) } for i, ih := range IngressRules { if len(ih.Host) > 0 { // TODO: Ports and ips are allowed in the host part of a url // according to RFC 3986, consider allowing them. if valid, errMsg := apivalidation.NameIsDNSSubdomain(ih.Host, false); !valid { allErrs = append(allErrs, field.Invalid(fldPath.Index(i).Child("host"), ih.Host, errMsg)) } if isIP := (net.ParseIP(ih.Host) != nil); isIP { allErrs = append(allErrs, field.Invalid(fldPath.Index(i).Child("host"), ih.Host, "must be a DNS name, not an IP address")) } } allErrs = append(allErrs, validateIngressRuleValue(&ih.IngressRuleValue, fldPath.Index(0))...) } return allErrs }
// ValidateReplicaSetName can be used to check whether the given ReplicaSet // name is valid. // Prefix indicates this name will be used as part of generation, in which case // trailing dashes are allowed. func ValidateReplicaSetName(name string, prefix bool) (bool, string) { return apivalidation.NameIsDNSSubdomain(name, prefix) }
// ValidateIngressName validates that the given name can be used as an Ingress name. func ValidateIngressName(name string, prefix bool) (bool, string) { return apivalidation.NameIsDNSSubdomain(name, prefix) }
func ValidateThirdPartyResourceName(name string, prefix bool) (bool, string) { return apivalidation.NameIsDNSSubdomain(name, prefix) }