validation

package
v1.2.0-alpha.1....-f276572 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 3, 2015 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Overview

Package validation has functions for validating the correctness of api objects and explaining what is wrong with them when they aren't valid.

Index

Constants

View Source
const SecretKeyFmt string = "\\.?" + validation.DNS1123LabelFmt + "(\\." + validation.DNS1123LabelFmt + ")*"

Variables

View Source
var DNS1123LabelErrorMsg string = fmt.Sprintf(`must be a DNS label (at most %d characters, matching regex %s): e.g. "my-name"`, validation.DNS1123LabelMaxLength, validation.DNS1123LabelFmt)
View Source
var DNS952LabelErrorMsg string = fmt.Sprintf(`must be a DNS 952 label (at most %d characters, matching regex %s): e.g. "my-name"`, validation.DNS952LabelMaxLength, validation.DNS952LabelFmt)
View Source
var DNSSubdomainErrorMsg string = fmt.Sprintf(`must be a DNS subdomain (at most %d characters, matching regex %s): e.g. "example.com"`, validation.DNS1123SubdomainMaxLength, validation.DNS1123SubdomainFmt)
View Source
var NameMayNotBe = []string{".", ".."}

NameMayNotBe specifies strings that cannot be used as names specified as path segments (like the REST API or etcd store)

View Source
var NameMayNotContain = []string{"/", "%"}

NameMayNotContain specifies substrings that cannot be used in names specified as path segments (like the REST API or etcd store)

View Source
var PortNameErrorMsg string = fmt.Sprintf(`must be an IANA_SVC_NAME (at most 15 characters, matching regex %s, it must contain at least one letter [a-z], and hyphens cannot be adjacent to other hyphens): e.g. "http"`, validation.IdentifierNoHyphensBeginEndFmt)
View Source
var PortRangeErrorMsg string = IntervalErrorMsg(0, 65536)
View Source
var RepairMalformedUpdates bool = true

TODO: delete this global variable when we enable the validation of common fields by default.

Functions

func AccumulateUniqueHostPorts

func AccumulateUniqueHostPorts(containers []api.Container, accumulator *sets.String) errs.ValidationErrorList

AccumulateUniqueHostPorts extracts each HostPort of each Container, accumulating the results and returning an error if any ports conflict.

func IntervalErrorMsg

func IntervalErrorMsg(lo, hi int) string

func IsSecretKey

func IsSecretKey(value string) bool

IsSecretKey tests for a string that conforms to the definition of a subdomain in DNS (RFC 1123), except that a leading dot is allowed

func NameIsDNS952Label

func NameIsDNS952Label(name string, prefix bool) (bool, string)

NameIsDNS952Label is a ValidateNameFunc for names that must be a DNS 952 label.

func NameIsDNSLabel

func NameIsDNSLabel(name string, prefix bool) (bool, string)

NameIsDNSLabel is a ValidateNameFunc for names that must be a DNS 1123 label.

func NameIsDNSSubdomain

func NameIsDNSSubdomain(name string, prefix bool) (bool, string)

NameIsDNSSubdomain is a ValidateNameFunc for names that must be a DNS subdomain.

func NewInvalidTypeError

func NewInvalidTypeError(expected reflect.Kind, observed reflect.Kind, fieldName string) error

func ValidateAnnotations

func ValidateAnnotations(annotations map[string]string, field string) errs.ValidationErrorList

ValidateAnnotations validates that a set of annotations are correctly defined.

func ValidateEndpoints

func ValidateEndpoints(endpoints *api.Endpoints) errs.ValidationErrorList

ValidateEndpoints tests if required fields are set.

func ValidateEndpointsName

func ValidateEndpointsName(name string, prefix bool) (bool, string)

ValidateEndpointsName can be used to check whether the given endpoints name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidateEndpointsUpdate

func ValidateEndpointsUpdate(oldEndpoints, newEndpoints *api.Endpoints) errs.ValidationErrorList

ValidateEndpointsUpdate tests to make sure an endpoints update can be applied.

func ValidateEvent

func ValidateEvent(event *api.Event) errs.ValidationErrorList

ValidateEvent makes sure that the event makes sense.

func ValidateImmutableField

func ValidateImmutableField(old, new interface{}, fieldName string) errs.ValidationErrorList

func ValidateLabelName

func ValidateLabelName(labelName, fieldName string) errs.ValidationErrorList

func ValidateLabels

func ValidateLabels(labels map[string]string, field string) errs.ValidationErrorList

ValidateLabels validates that a set of labels are correctly defined.

func ValidateLimitRange

func ValidateLimitRange(limitRange *api.LimitRange) errs.ValidationErrorList

ValidateLimitRange tests if required fields in the LimitRange are set.

func ValidateLimitRangeName

func ValidateLimitRangeName(name string, prefix bool) (bool, string)

ValidateLimitRangeName can be used to check whether the given limit range name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidateLoadBalancerStatus

func ValidateLoadBalancerStatus(status *api.LoadBalancerStatus) errs.ValidationErrorList

ValidateLoadBalancerStatus validates required fields on a LoadBalancerStatus

func ValidateNamespace

func ValidateNamespace(namespace *api.Namespace) errs.ValidationErrorList

ValidateNamespace tests if required fields are set.

func ValidateNamespaceFinalizeUpdate

func ValidateNamespaceFinalizeUpdate(newNamespace, oldNamespace *api.Namespace) errs.ValidationErrorList

ValidateNamespaceFinalizeUpdate tests to see if the update is legal for an end user to make. newNamespace is updated with fields that cannot be changed.

func ValidateNamespaceName

func ValidateNamespaceName(name string, prefix bool) (bool, string)

ValidateNamespaceName can be used to check whether the given namespace name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidateNamespaceStatusUpdate

func ValidateNamespaceStatusUpdate(newNamespace, oldNamespace *api.Namespace) errs.ValidationErrorList

ValidateNamespaceStatusUpdate tests to see if the update is legal for an end user to make. newNamespace is updated with fields that cannot be changed.

func ValidateNamespaceUpdate

func ValidateNamespaceUpdate(newNamespace *api.Namespace, oldNamespace *api.Namespace) errs.ValidationErrorList

ValidateNamespaceUpdate tests to make sure a namespace update can be applied. newNamespace is updated with fields that cannot be changed

func ValidateNode

func ValidateNode(node *api.Node) errs.ValidationErrorList

ValidateNode tests if required fields in the node are set.

func ValidateNodeName

func ValidateNodeName(name string, prefix bool) (bool, string)

ValidateNodeName can be used to check whether the given node name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidateNodeUpdate

func ValidateNodeUpdate(oldNode *api.Node, node *api.Node) errs.ValidationErrorList

ValidateNodeUpdate tests to make sure a node update can be applied. Modifies oldNode.

func ValidateNonEmptySelector

func ValidateNonEmptySelector(selectorMap map[string]string, fieldName string) errs.ValidationErrorList

Validates that the given selector is non-empty.

func ValidateObjectMeta

func ValidateObjectMeta(meta *api.ObjectMeta, requiresNamespace bool, nameFn ValidateNameFunc) errs.ValidationErrorList

ValidateObjectMeta validates an object's metadata on creation. It expects that name generation has already been performed. It doesn't return an error for rootscoped resources with namespace, because namespace should already be cleared before. TODO: Remove calls to this method scattered in validations of specific resources, e.g., ValidatePodUpdate.

func ValidateObjectMetaUpdate

func ValidateObjectMetaUpdate(new, old *api.ObjectMeta) errs.ValidationErrorList

ValidateObjectMetaUpdate validates an object's metadata when updated

func ValidatePathSegmentName

func ValidatePathSegmentName(name string, prefix bool) (bool, string)

ValidatePathSegmentName validates the name can be used as a path segment

func ValidatePersistentVolume

func ValidatePersistentVolume(pv *api.PersistentVolume) errs.ValidationErrorList

func ValidatePersistentVolumeClaim

func ValidatePersistentVolumeClaim(pvc *api.PersistentVolumeClaim) errs.ValidationErrorList

func ValidatePersistentVolumeClaimStatusUpdate

func ValidatePersistentVolumeClaimStatusUpdate(newPvc, oldPvc *api.PersistentVolumeClaim) errs.ValidationErrorList

func ValidatePersistentVolumeClaimUpdate

func ValidatePersistentVolumeClaimUpdate(newPvc, oldPvc *api.PersistentVolumeClaim) errs.ValidationErrorList

func ValidatePersistentVolumeName

func ValidatePersistentVolumeName(name string, prefix bool) (bool, string)

func ValidatePersistentVolumeStatusUpdate

func ValidatePersistentVolumeStatusUpdate(newPv, oldPv *api.PersistentVolume) errs.ValidationErrorList

ValidatePersistentVolumeStatusUpdate tests to see if the status update is legal for an end user to make. newPv is updated with fields that cannot be changed.

func ValidatePersistentVolumeUpdate

func ValidatePersistentVolumeUpdate(newPv, oldPv *api.PersistentVolume) errs.ValidationErrorList

ValidatePersistentVolumeUpdate tests to see if the update is legal for an end user to make. newPv is updated with fields that cannot be changed.

func ValidatePod

func ValidatePod(pod *api.Pod) errs.ValidationErrorList

ValidatePod tests if required fields in the pod are set.

func ValidatePodLogOptions

func ValidatePodLogOptions(opts *api.PodLogOptions) errs.ValidationErrorList

func ValidatePodName

func ValidatePodName(name string, prefix bool) (bool, string)

ValidatePodName can be used to check whether the given pod name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidatePodSecurityContext

func ValidatePodSecurityContext(securityContext *api.PodSecurityContext, spec *api.PodSpec) errs.ValidationErrorList

ValidatePodSecurityContext test that the specified PodSecurityContext has valid data.

func ValidatePodSpec

func ValidatePodSpec(spec *api.PodSpec) errs.ValidationErrorList

ValidatePodSpec tests that the specified PodSpec has valid data. This includes checking formatting and uniqueness. It also canonicalizes the structure by setting default values and implementing any backwards-compatibility tricks.

func ValidatePodStatusUpdate

func ValidatePodStatusUpdate(newPod, oldPod *api.Pod) errs.ValidationErrorList

ValidatePodStatusUpdate tests to see if the update is legal for an end user to make. newPod is updated with fields that cannot be changed.

func ValidatePodTemplate

func ValidatePodTemplate(pod *api.PodTemplate) errs.ValidationErrorList

ValidatePodTemplate tests if required fields in the pod template are set.

func ValidatePodTemplateSpec

func ValidatePodTemplateSpec(spec *api.PodTemplateSpec) errs.ValidationErrorList

ValidatePodTemplateSpec validates the spec of a pod template

func ValidatePodTemplateSpecForRC

func ValidatePodTemplateSpecForRC(template *api.PodTemplateSpec, selectorMap map[string]string, replicas int, fieldName string) errs.ValidationErrorList

Validates the given template and ensures that it is in accordance with the desrired selector and replicas.

func ValidatePodTemplateUpdate

func ValidatePodTemplateUpdate(newPod, oldPod *api.PodTemplate) errs.ValidationErrorList

ValidatePodTemplateUpdate tests to see if the update is legal for an end user to make. newPod is updated with fields that cannot be changed.

func ValidatePodUpdate

func ValidatePodUpdate(newPod, oldPod *api.Pod) errs.ValidationErrorList

ValidatePodUpdate tests to see if the update is legal for an end user to make. newPod is updated with fields that cannot be changed.

func ValidatePositiveField

func ValidatePositiveField(value int64, fieldName string) errs.ValidationErrorList

Validates that given value is not negative.

func ValidatePositiveQuantity

func ValidatePositiveQuantity(value resource.Quantity, fieldName string) errs.ValidationErrorList

Validates that a Quantity is not negative

func ValidateReadOnlyPersistentDisks

func ValidateReadOnlyPersistentDisks(volumes []api.Volume) errs.ValidationErrorList

func ValidateReplicationController

func ValidateReplicationController(controller *api.ReplicationController) errs.ValidationErrorList

ValidateReplicationController tests if required fields in the replication controller are set.

func ValidateReplicationControllerName

func ValidateReplicationControllerName(name string, prefix bool) (bool, string)

ValidateReplicationControllerName can be used to check whether the given replication controller name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidateReplicationControllerSpec

func ValidateReplicationControllerSpec(spec *api.ReplicationControllerSpec) errs.ValidationErrorList

ValidateReplicationControllerSpec tests if required fields in the replication controller spec are set.

func ValidateReplicationControllerStatusUpdate

func ValidateReplicationControllerStatusUpdate(oldController, controller *api.ReplicationController) errs.ValidationErrorList

ValidateReplicationControllerStatusUpdate tests if required fields in the replication controller are set.

func ValidateReplicationControllerUpdate

func ValidateReplicationControllerUpdate(oldController, controller *api.ReplicationController) errs.ValidationErrorList

ValidateReplicationControllerUpdate tests if required fields in the replication controller are set.

func ValidateResourceQuota

func ValidateResourceQuota(resourceQuota *api.ResourceQuota) errs.ValidationErrorList

ValidateResourceQuota tests if required fields in the ResourceQuota are set.

func ValidateResourceQuotaName

func ValidateResourceQuotaName(name string, prefix bool) (bool, string)

ValidateResourceQuotaName can be used to check whether the given resource quota name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidateResourceQuotaStatusUpdate

func ValidateResourceQuotaStatusUpdate(newResourceQuota, oldResourceQuota *api.ResourceQuota) errs.ValidationErrorList

ValidateResourceQuotaStatusUpdate tests to see if the status update is legal for an end user to make. newResourceQuota is updated with fields that cannot be changed.

func ValidateResourceQuotaUpdate

func ValidateResourceQuotaUpdate(newResourceQuota, oldResourceQuota *api.ResourceQuota) errs.ValidationErrorList

ValidateResourceQuotaUpdate tests to see if the update is legal for an end user to make. newResourceQuota is updated with fields that cannot be changed.

func ValidateResourceRequirements

func ValidateResourceRequirements(requirements *api.ResourceRequirements) errs.ValidationErrorList

Validates resource requirement spec.

func ValidateSecret

func ValidateSecret(secret *api.Secret) errs.ValidationErrorList

ValidateSecret tests if required fields in the Secret are set.

func ValidateSecretName

func ValidateSecretName(name string, prefix bool) (bool, string)

ValidateSecretName can be used to check whether the given secret name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidateSecretUpdate

func ValidateSecretUpdate(oldSecret, newSecret *api.Secret) errs.ValidationErrorList

ValidateSecretUpdate tests if required fields in the Secret are set.

func ValidateSecurityContext

func ValidateSecurityContext(sc *api.SecurityContext) errs.ValidationErrorList

ValidateSecurityContext ensure the security context contains valid settings

func ValidateService

func ValidateService(service *api.Service) errs.ValidationErrorList

ValidateService tests if required fields in the service are set.

func ValidateServiceAccount

func ValidateServiceAccount(serviceAccount *api.ServiceAccount) errs.ValidationErrorList

ValidateServiceAccount tests if required fields in the ServiceAccount are set.

func ValidateServiceAccountName

func ValidateServiceAccountName(name string, prefix bool) (bool, string)

ValidateServiceAccountName can be used to check whether the given service account name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidateServiceAccountUpdate

func ValidateServiceAccountUpdate(oldServiceAccount, newServiceAccount *api.ServiceAccount) errs.ValidationErrorList

ValidateServiceAccountUpdate tests if required fields in the ServiceAccount are set.

func ValidateServiceName

func ValidateServiceName(name string, prefix bool) (bool, string)

ValidateServiceName can be used to check whether the given service name is valid. Prefix indicates this name will be used as part of generation, in which case trailing dashes are allowed.

func ValidateServiceUpdate

func ValidateServiceUpdate(oldService, service *api.Service) errs.ValidationErrorList

ValidateServiceUpdate tests if required fields in the service are set during an update

Types

type InvalidTypeError

type InvalidTypeError struct {
	ExpectedKind reflect.Kind
	ObservedKind reflect.Kind
	FieldName    string
}

func (*InvalidTypeError) Error

func (i *InvalidTypeError) Error() string

type NullSchema

type NullSchema struct{}

func (NullSchema) ValidateBytes

func (NullSchema) ValidateBytes(data []byte) error

type Schema

type Schema interface {
	ValidateBytes(data []byte) error
}

Schema is an interface that knows how to validate an API object serialized to a byte array.

func NewSwaggerSchemaFromBytes

func NewSwaggerSchemaFromBytes(data []byte) (Schema, error)

type SwaggerSchema

type SwaggerSchema struct {
	// contains filtered or unexported fields
}

func (*SwaggerSchema) ValidateBytes

func (s *SwaggerSchema) ValidateBytes(data []byte) error

func (*SwaggerSchema) ValidateObject

func (s *SwaggerSchema) ValidateObject(obj interface{}, fieldName, typeName string) errs.ValidationErrorList

type ValidateNameFunc

type ValidateNameFunc func(name string, prefix bool) (bool, string)

ValidateNameFunc validates that the provided name is valid for a given resource type. Not all resources have the same validation rules for names. Prefix is true if the name will have a value appended to it.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL