github.com/cbroglie/terraform@v0.7.0-rc3.0.20170410193827-735dfc416d46/builtin/providers/kubernetes/validators.go (about) 1 package kubernetes 2 3 import ( 4 "fmt" 5 "strings" 6 7 apiValidation "k8s.io/kubernetes/pkg/api/validation" 8 utilValidation "k8s.io/kubernetes/pkg/util/validation" 9 ) 10 11 func validateAnnotations(value interface{}, key string) (ws []string, es []error) { 12 m := value.(map[string]interface{}) 13 for k, _ := range m { 14 errors := utilValidation.IsQualifiedName(strings.ToLower(k)) 15 if len(errors) > 0 { 16 for _, e := range errors { 17 es = append(es, fmt.Errorf("%s (%q) %s", key, k, e)) 18 } 19 } 20 } 21 return 22 } 23 24 func validateName(value interface{}, key string) (ws []string, es []error) { 25 v := value.(string) 26 27 errors := apiValidation.NameIsDNSLabel(v, false) 28 if len(errors) > 0 { 29 for _, err := range errors { 30 es = append(es, fmt.Errorf("%s %s", key, err)) 31 } 32 } 33 return 34 } 35 36 func validateGenerateName(value interface{}, key string) (ws []string, es []error) { 37 v := value.(string) 38 39 errors := apiValidation.NameIsDNSLabel(v, true) 40 if len(errors) > 0 { 41 for _, err := range errors { 42 es = append(es, fmt.Errorf("%s %s", key, err)) 43 } 44 } 45 return 46 } 47 48 func validateLabels(value interface{}, key string) (ws []string, es []error) { 49 m := value.(map[string]interface{}) 50 for k, v := range m { 51 for _, msg := range utilValidation.IsQualifiedName(k) { 52 es = append(es, fmt.Errorf("%s (%q) %s", key, k, msg)) 53 } 54 val := v.(string) 55 for _, msg := range utilValidation.IsValidLabelValue(val) { 56 es = append(es, fmt.Errorf("%s (%q) %s", key, val, msg)) 57 } 58 } 59 return 60 }