validation

package
v1.6.6 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2024 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// MissingFieldMessage the message to indicate rollout is missing a field
	MissingFieldMessage = "Rollout has missing field '%s'"
	// InvalidSetWeightMessage indicates the setweight value needs to be between 0 and 100
	InvalidSetWeightMessage = "SetWeight needs to be between 0 and 100"
	// InvalidCanaryExperimentTemplateWeightWithoutTrafficRouting indicates experiment weight cannot be set without trafficRouting
	InvalidCanaryExperimentTemplateWeightWithoutTrafficRouting = "Experiment template weight cannot be set unless TrafficRouting is enabled"
	// InvalidSetCanaryScaleTrafficPolicy indicates that TrafficRouting, required for SetCanaryScale, is missing
	InvalidSetCanaryScaleTrafficPolicy = "SetCanaryScale requires TrafficRouting to be set"
	// InvalidSetHeaderRouteTrafficPolicy indicates that TrafficRouting required for SetHeaderRoute is missing
	InvalidSetHeaderRouteTrafficPolicy = "SetHeaderRoute requires TrafficRouting, supports Istio and ALB and Apisix"
	// InvalidSetMirrorRouteTrafficPolicy indicates that TrafficRouting, required for SetCanaryScale, is missing
	InvalidSetMirrorRouteTrafficPolicy = "SetMirrorRoute requires TrafficRouting, supports Istio only"
	// InvalidStringMatchMultipleValuePolicy indicates that SetCanaryScale, has multiple values set
	InvalidStringMatchMultipleValuePolicy = "StringMatch match value must have exactly one of the following: exact, regex, prefix"
	// InvalidStringMatchMissedValuePolicy indicates that SetCanaryScale, has multiple values set
	InvalidStringMatchMissedValuePolicy = "StringMatch value missed, match value must have one of the following: exact, regex, prefix"
	// InvalidSetHeaderRouteALBValuePolicy indicates that SetHeaderRouting using with ALB missed the 'exact' value
	InvalidSetHeaderRouteALBValuePolicy = "SetHeaderRoute match value invalid. ALB supports 'exact' value only"
	// InvalidDurationMessage indicates the Duration value needs to be greater than 0
	InvalidDurationMessage = "Duration needs to be greater than 0"
	// InvalidMaxSurgeMaxUnavailable indicates both maxSurge and MaxUnavailable can not be set to zero
	InvalidMaxSurgeMaxUnavailable = "MaxSurge and MaxUnavailable both can not be zero"
	// InvalidStepMessage indicates that a step must have either setWeight or pause set
	InvalidStepMessage = "Step must have one of the following set: experiment, setWeight, setCanaryScale or pause"
	// InvalidStrategyMessage indicates that multiple strategies can not be listed
	InvalidStrategyMessage = "Multiple Strategies can not be listed"
	// DuplicatedServicesBlueGreenMessage the message to indicate that the rollout uses the same service for the active and preview services
	DuplicatedServicesBlueGreenMessage = "This rollout uses the same service for the active and preview services, but two different services are required."
	// DuplicatedServicesCanaryMessage indicates that the rollout uses the same service for the stable and canary services
	DuplicatedServicesCanaryMessage = "This rollout uses the same service for the stable and canary services, but two different services are required."
	// InvalidAntiAffinityStrategyMessage indicates that Anti-Affinity can only have one strategy listed
	InvalidAntiAffinityStrategyMessage = "AntiAffinity must have exactly one strategy listed"
	// InvalidAntiAffinityWeightMessage indicates that Anti-Affinity must have weight between 1-100
	InvalidAntiAffinityWeightMessage = "AntiAffinity weight must be between 1-100"
	// ScaleDownLimitLargerThanRevisionLimit the message to indicate that the rollout's revision history limit can not be smaller than the rollout's scale down limit
	ScaleDownLimitLargerThanRevisionLimit = "This rollout's revision history limit can not be smaller than the rollout's scale down limit"
	// InvalidTrafficRoutingMessage indicates that both canary and stable service must be set to use Traffic Routing
	InvalidTrafficRoutingMessage = "Canary service and Stable service must to be set to use Traffic Routing"
	// InvalidAnalysisArgsMessage indicates that arguments provided in analysis steps are refrencing un-supported metadatafield.
	//supported fields are "metadata.annotations", "metadata.labels", "metadata.name", "metadata.namespace", "metadata.uid"
	InvalidAnalysisArgsMessage = "Analyses arguments must refer to valid object metadata supported by downwardAPI"
	// InvalidCanaryScaleDownDelay indicates that canary.scaleDownDelaySeconds cannot be used
	InvalidCanaryScaleDownDelay = "Canary scaleDownDelaySeconds can only be used with traffic routing"
	// InvalidCanaryDynamicStableScale indicates that canary.dynamicStableScale cannot be used
	InvalidCanaryDynamicStableScale = "Canary dynamicStableScale can only be used with traffic routing"
	// InvalidCanaryDynamicStableScaleWithScaleDownDelay indicates that canary.dynamicStableScale cannot be used with scaleDownDelaySeconds
	InvalidCanaryDynamicStableScaleWithScaleDownDelay = "Canary dynamicStableScale cannot be used with scaleDownDelaySeconds"
	// InvalidPingPongProvidedMessage indicates that both ping and pong service must be set to use Ping-Pong feature
	InvalidPingPongProvidedMessage = "Ping service and Pong service must to be set to use Ping-Pong feature"
	// DuplicatedPingPongServicesMessage indicates that the rollout uses the same service for the ping and pong services
	DuplicatedPingPongServicesMessage = "This rollout uses the same service for the ping and pong services, but two different services are required."
	// MissedAlbRootServiceMessage indicates that the rollout with ALB TrafficRouting and ping pong feature enabled must have root service provided
	MissedAlbRootServiceMessage = "Root service field is required for the configuration with ALB and ping-pong feature enabled"
	// PingPongWithAlbOnlyMessage At this moment ping-pong feature works with the ALB traffic routing only
	PingPongWithAlbOnlyMessage = "Ping-pong feature works with the ALB traffic routing only"
	// InvalideStepRouteNameNotFoundInManagedRoutes A step has been configured that requires managedRoutes and the route name
	// is missing from managedRoutes
	InvalideStepRouteNameNotFoundInManagedRoutes = "Steps define a route that does not exist in spec.strategy.canary.trafficRouting.managedRoutes"
)

Variables

This section is empty.

Functions

func GetAnalysisTemplateNames added in v1.0.0

func GetAnalysisTemplateNames(templates AnalysisTemplatesWithType) []string

func GetAnalysisTemplateWithTypeFieldPath

func GetAnalysisTemplateWithTypeFieldPath(templateType AnalysisTemplateType, canaryStepIndex int) *field.Path

func GetServiceWithTypeFieldPath

func GetServiceWithTypeFieldPath(serviceType ServiceType) *field.Path

func ValidateAmbassadorMapping added in v1.0.0

func ValidateAmbassadorMapping(obj unstructured.Unstructured) field.ErrorList

func ValidateAnalysisTemplateWithType

func ValidateAnalysisTemplateWithType(rollout *v1alpha1.Rollout, template *v1alpha1.AnalysisTemplate, clusterTemplate *v1alpha1.ClusterAnalysisTemplate, templateType AnalysisTemplateType, fldPath *field.Path) field.ErrorList

func ValidateAnalysisTemplatesWithType added in v1.0.0

func ValidateAnalysisTemplatesWithType(rollout *v1alpha1.Rollout, templates AnalysisTemplatesWithType) field.ErrorList

func ValidateAppMeshResource added in v1.2.0

func ValidateAppMeshResource(obj unstructured.Unstructured) field.ErrorList

func ValidateAppMeshVirtualRouter added in v1.2.0

func ValidateAppMeshVirtualRouter(vrouter *unstructured.Unstructured) *field.Error

func ValidateIngress

func ValidateIngress(rollout *v1alpha1.Rollout, ingress *ingressutil.Ingress) field.ErrorList

func ValidateRollout

func ValidateRollout(rollout *v1alpha1.Rollout) field.ErrorList

func ValidateRolloutAlbIngressesConfig added in v1.6.0

func ValidateRolloutAlbIngressesConfig(r *v1alpha1.Rollout) error

ValidateRolloutAlbIngressesConfig checks that only one or the other of the two fields (Ingress, Ingresses) is defined on the ALB struct

func ValidateRolloutNginxIngressesConfig added in v1.5.0

func ValidateRolloutNginxIngressesConfig(r *v1alpha1.Rollout) error

Validates that only one or the other of the two fields (StableIngress, StableIngresses) is defined on the Nginx struct

func ValidateRolloutReferencedResources

func ValidateRolloutReferencedResources(rollout *v1alpha1.Rollout, referencedResources ReferencedResources) field.ErrorList

func ValidateRolloutSpec

func ValidateRolloutSpec(rollout *v1alpha1.Rollout, fldPath *field.Path) field.ErrorList

ValidateRolloutSpec checks for a valid spec otherwise returns a list of errors.

func ValidateRolloutStrategy

func ValidateRolloutStrategy(rollout *v1alpha1.Rollout, fldPath *field.Path) field.ErrorList

func ValidateRolloutStrategyAntiAffinity

func ValidateRolloutStrategyAntiAffinity(antiAffinity *v1alpha1.AntiAffinity, fldPath *field.Path) field.ErrorList

func ValidateRolloutStrategyBlueGreen

func ValidateRolloutStrategyBlueGreen(rollout *v1alpha1.Rollout, fldPath *field.Path) field.ErrorList

func ValidateRolloutStrategyCanary

func ValidateRolloutStrategyCanary(rollout *v1alpha1.Rollout, fldPath *field.Path) field.ErrorList

func ValidateRolloutVirtualServicesConfig added in v1.1.0

func ValidateRolloutVirtualServicesConfig(r *v1alpha1.Rollout) error

ValidateRolloutVirtualServicesConfig checks either VirtualService or VirtualServices configured It returns an error if both VirtualService and VirtualServices are configured. Also, returns an error if both are not configured.

func ValidateService

func ValidateService(svc ServiceWithType, rollout *v1alpha1.Rollout) field.ErrorList

func ValidateStepRouteFoundInManagedRoute added in v1.3.0

func ValidateStepRouteFoundInManagedRoute(stepFldPath *field.Path, stepRoutName string, roManagedRoutes []v1alpha1.MangedRoutes) field.ErrorList

func ValidateVirtualService

func ValidateVirtualService(rollout *v1alpha1.Rollout, obj unstructured.Unstructured) field.ErrorList

Types

type AnalysisTemplateType

type AnalysisTemplateType string

RolloutConditionType defines the conditions of Rollout

const (
	PrePromotionAnalysis  AnalysisTemplateType = "PrePromotionAnalysis"
	PostPromotionAnalysis AnalysisTemplateType = "PostPromotionAnalysis"
	InlineAnalysis        AnalysisTemplateType = "InlineAnalysis"
	BackgroundAnalysis    AnalysisTemplateType = "BackgroundAnalysis"
)

type AnalysisTemplatesWithType added in v1.0.0

type AnalysisTemplatesWithType struct {
	AnalysisTemplates        []*v1alpha1.AnalysisTemplate
	ClusterAnalysisTemplates []*v1alpha1.ClusterAnalysisTemplate
	TemplateType             AnalysisTemplateType
	// CanaryStepIndex only used for InlineAnalysis
	CanaryStepIndex int
	Args            []v1alpha1.AnalysisRunArgument
}

type ReferencedResources

type ReferencedResources struct {
	AnalysisTemplatesWithType []AnalysisTemplatesWithType
	Ingresses                 []ingressutil.Ingress
	ServiceWithType           []ServiceWithType
	VirtualServices           []unstructured.Unstructured
	AmbassadorMappings        []unstructured.Unstructured
	AppMeshResources          []unstructured.Unstructured
}

type ServiceType

type ServiceType string
const (
	StableService  ServiceType = "StableService"
	CanaryService  ServiceType = "CanaryService"
	PingService    ServiceType = "PingService"
	PongService    ServiceType = "PongService"
	ActiveService  ServiceType = "ActiveService"
	PreviewService ServiceType = "PreviewService"
)

type ServiceWithType

type ServiceWithType struct {
	Service *corev1.Service
	Type    ServiceType
}

Jump to

Keyboard shortcuts

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