Loosen label and annotation validation and related tests
This commit is contained in:
@@ -30,7 +30,7 @@ import (
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
const qualifiedNameErrorMsg string = "must match regex [" + util.DNS1123SubdomainFmt + " / ] " + util.DNS1123LabelFmt
|
||||
const invalidAnnotationValueErrorMsg string = "must match regex " + util.AnnotationValueFmt
|
||||
const cIdentifierErrorMsg string = "must match regex " + util.CIdentifierFmt
|
||||
const isNegativeErrorMsg string = "value must not be negative"
|
||||
|
||||
@@ -38,6 +38,8 @@ 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 and match regex %s", util.LabelValueMaxLength, util.LabelValueFmt)
|
||||
var qualifiedNameErrorMsg string = fmt.Sprintf("must have at most %d characters and match regex %s", util.DNS1123SubdomainMaxLength, util.QualifiedNameFmt)
|
||||
var dnsSubdomainErrorMsg string = fmt.Sprintf("must have at most %d characters and match regex %s", util.DNS1123SubdomainMaxLength, util.DNS1123SubdomainFmt)
|
||||
var dnsLabelErrorMsg string = fmt.Sprintf("must have at most %d characters and match regex %s", util.DNS1123LabelMaxLength, util.DNS1123LabelFmt)
|
||||
var dns952LabelErrorMsg string = fmt.Sprintf("must have at most %d characters and match regex %s", util.DNS952LabelMaxLength, util.DNS952LabelFmt)
|
||||
@@ -47,10 +49,13 @@ var portRangeErrorMsg string = intervalErrorMsg(0, 65536)
|
||||
// ValidateLabels validates that a set of labels are correctly defined.
|
||||
func ValidateLabels(labels map[string]string, field string) errs.ValidationErrorList {
|
||||
allErrs := errs.ValidationErrorList{}
|
||||
for k := range labels {
|
||||
for k, v := range labels {
|
||||
if !util.IsQualifiedName(k) {
|
||||
allErrs = append(allErrs, errs.NewFieldInvalid(field, k, qualifiedNameErrorMsg))
|
||||
}
|
||||
if !util.IsValidLabelValue(v) {
|
||||
allErrs = append(allErrs, errs.NewFieldInvalid(field, v, labelValueErrorMsg))
|
||||
}
|
||||
}
|
||||
return allErrs
|
||||
}
|
||||
@@ -58,10 +63,18 @@ func ValidateLabels(labels map[string]string, field string) errs.ValidationError
|
||||
// ValidateAnnotations validates that a set of annotations are correctly defined.
|
||||
func ValidateAnnotations(annotations map[string]string, field string) errs.ValidationErrorList {
|
||||
allErrs := errs.ValidationErrorList{}
|
||||
for k := range annotations {
|
||||
var totalSize int64
|
||||
for k, v := range annotations {
|
||||
if !util.IsQualifiedName(strings.ToLower(k)) {
|
||||
allErrs = append(allErrs, errs.NewFieldInvalid(field, k, qualifiedNameErrorMsg))
|
||||
}
|
||||
if !util.IsValidAnnotationValue(v) {
|
||||
allErrs = append(allErrs, errs.NewFieldInvalid(field, k, invalidAnnotationValueErrorMsg))
|
||||
}
|
||||
totalSize += (int64)(len(k)) + (int64)(len(v))
|
||||
}
|
||||
if totalSize > (int64)(util.TotalAnnotationSizeB) {
|
||||
allErrs = append(allErrs, errs.NewFieldTooLong("annotations", ""))
|
||||
}
|
||||
return allErrs
|
||||
}
|
||||
@@ -868,7 +881,7 @@ func validateResourceName(value string, field string) errs.ValidationErrorList {
|
||||
|
||||
if len(strings.Split(value, "/")) == 1 {
|
||||
if !api.IsStandardResourceName(value) {
|
||||
return append(allErrs, errs.NewFieldInvalid(field, value, "is neither a standard resource type nor is fully qualified"))
|
||||
return append(allErrs, errs.NewFieldInvalid(field, value, "is neither a standard resource type nor is fully qualified")
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user