// ValidateImageStreamMapping tests required fields for an ImageStreamMapping. func ValidateImageStreamMapping(mapping *api.ImageStreamMapping) fielderrors.ValidationErrorList { result := fielderrors.ValidationErrorList{} result = append(result, validation.ValidateObjectMeta(&mapping.ObjectMeta, true, oapi.MinimalNameRequirements).Prefix("metadata")...) hasRepository := len(mapping.DockerImageRepository) != 0 hasName := len(mapping.Name) != 0 switch { case hasRepository: if _, err := api.ParseDockerImageReference(mapping.DockerImageRepository); err != nil { result = append(result, fielderrors.NewFieldInvalid("dockerImageRepository", mapping.DockerImageRepository, err.Error())) } case hasName: default: result = append(result, fielderrors.NewFieldRequired("name")) result = append(result, fielderrors.NewFieldRequired("dockerImageRepository")) } if ok, msg := validation.ValidateNamespaceName(mapping.Namespace, false); !ok { result = append(result, fielderrors.NewFieldInvalid("namespace", mapping.Namespace, msg)) } if len(mapping.Tag) == 0 { result = append(result, fielderrors.NewFieldRequired("tag")) } if errs := ValidateImage(&mapping.Image).Prefix("image"); len(errs) != 0 { result = append(result, errs...) } return result }
func ValidateNamespace(namespace, field string) fielderrors.ValidationErrorList { allErrs := fielderrors.ValidationErrorList{} if len(namespace) == 0 { allErrs = append(allErrs, fielderrors.NewFieldRequired(field)) } else if ok, _ := kvalidation.ValidateNamespaceName(namespace, false); !ok { allErrs = append(allErrs, fielderrors.NewFieldInvalid(field, namespace, "must be a valid namespace")) } return allErrs }
func ValidateProjectName(name string, prefix bool) (bool, string) { if ok, reason := oapi.MinimalNameRequirements(name, prefix); !ok { return ok, reason } if len(name) < 2 { return false, "must be at least 2 characters long" } if ok, msg := validation.ValidateNamespaceName(name, false); !ok { return ok, msg } return true, "" }
// SplitUsername returns the namespace and ServiceAccount name embedded in the given username, // or an error if the username is not a valid name produced by MakeUsername func SplitUsername(username string) (string, string, error) { if !strings.HasPrefix(username, ServiceAccountUsernamePrefix) { return "", "", invalidUsernameErr } trimmed := strings.TrimPrefix(username, ServiceAccountUsernamePrefix) parts := strings.Split(trimmed, ServiceAccountUsernameSeparator) if len(parts) != 2 { return "", "", invalidUsernameErr } namespace, name := parts[0], parts[1] if ok, _ := validation.ValidateNamespaceName(namespace, false); !ok { return "", "", invalidUsernameErr } if ok, _ := validation.ValidateServiceAccountName(name, false); !ok { return "", "", invalidUsernameErr } return namespace, name, nil }