func ValidateImageLabels(labels []buildapi.ImageLabel, fldPath *field.Path) (allErrs field.ErrorList) { for i, lbl := range labels { idxPath := fldPath.Index(i) if len(lbl.Name) == 0 { allErrs = append(allErrs, field.Required(idxPath.Child("name"), "")) continue } for _, msg := range kvalidation.IsConfigMapKey(lbl.Name) { allErrs = append(allErrs, field.Invalid(idxPath.Child("name"), lbl.Name, msg)) } } // find duplicates seen := make(map[string]bool) for i, lbl := range labels { idxPath := fldPath.Index(i) if seen[lbl.Name] { allErrs = append(allErrs, field.Invalid(idxPath.Child("name"), lbl.Name, "duplicate name")) continue } seen[lbl.Name] = true } return }
func addKeyFromLiteralToSecret(secret *api.Secret, keyName string, data []byte) error { if errs := validation.IsConfigMapKey(keyName); len(errs) != 0 { return fmt.Errorf("%q is not a valid key name for a Secret: %s", keyName, strings.Join(errs, ";")) } if _, entryExists := secret.Data[keyName]; entryExists { return fmt.Errorf("cannot add key %s, another key by that name already exists: %v.", keyName, secret.Data) } secret.Data[keyName] = data return nil }
// addKeyFromLiteralToConfigMap adds the given key and data to the given config map, // returning an error if the key is not valid or if the key already exists. func addKeyFromLiteralToConfigMap(configMap *api.ConfigMap, keyName, data string) error { // Note, the rules for ConfigMap keys are the exact same as the ones for SecretKeys. if errs := validation.IsConfigMapKey(keyName); len(errs) != 0 { return fmt.Errorf("%q is not a valid key name for a ConfigMap: %s", keyName, strings.Join(errs, ";")) } if _, entryExists := configMap.Data[keyName]; entryExists { return fmt.Errorf("cannot add key %s, another key by that name already exists: %v.", keyName, configMap.Data) } configMap.Data[keyName] = data return nil }
func addKeyToSecret(keyName, filePath string, secretData map[string][]byte) error { if errors := kvalidation.IsConfigMapKey(keyName); len(errors) > 0 { return fmt.Errorf("%v is not a valid key name for a secret: %s", keyName, strings.Join(errors, ", ")) } if _, entryExists := secretData[keyName]; entryExists { return fmt.Errorf("cannot add key %s from path %s, another key by that name already exists: %v.", keyName, filePath, secretData) } data, err := ioutil.ReadFile(filePath) if err != nil { return err } secretData[keyName] = data return nil }