v1alpha1

package
v1.4.2 Latest Latest
Warning

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

Go to latest
Published: Mar 12, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the kuadrant v1alpha1 API group +kubebuilder:object:generate=true +groupName=kuadrant.io

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "kuadrant.io", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var (
	TokenRateLimitPolicyGroupKind  = schema.GroupKind{Group: GroupVersion.Group, Kind: "TokenRateLimitPolicy"}
	TokenRateLimitPoliciesResource = GroupVersion.WithResource("tokenratelimitpolicies")
)

Functions

This section is empty.

Types

type MergeableTokenRateLimitPolicySpec added in v1.3.0

type MergeableTokenRateLimitPolicySpec struct {
	// Strategy defines the merge strategy to apply when merging this policy with other policies.
	// +kubebuilder:validation:Enum=atomic;merge
	// +kubebuilder:default=atomic
	Strategy string `json:"strategy,omitempty"`

	TokenRateLimitPolicySpecProper `json:""`
}

func (*MergeableTokenRateLimitPolicySpec) DeepCopy added in v1.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MergeableTokenRateLimitPolicySpec.

func (*MergeableTokenRateLimitPolicySpec) DeepCopyInto added in v1.3.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TokenLimit added in v1.3.0

type TokenLimit struct {
	// When holds a list of "limit-level" `Predicate`s for token-based conditions
	// Called also "soft" conditions as route selectors must also match
	// +optional
	When kuadrantv1.WhenPredicates `json:"when,omitempty"`

	// Rates holds the list of limit rates for token-based limiting
	// +optional
	Rates []kuadrantv1.Rate `json:"rates,omitempty"`

	// Counters defines additional rate limit counters based on CEL expressions which can reference well known selectors
	// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors
	// +optional
	Counters []kuadrantv1.Counter `json:"counters,omitempty"`

	// Source stores the locator of the policy where the limit is originally defined (internal use)
	Source string `json:"-"`
}

TokenLimit represents a complete token-based rate limit configuration

func (TokenLimit) CountersAsStringList added in v1.3.0

func (l TokenLimit) CountersAsStringList() []string

func (*TokenLimit) DeepCopy added in v1.3.0

func (in *TokenLimit) DeepCopy() *TokenLimit

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenLimit.

func (*TokenLimit) DeepCopyInto added in v1.3.0

func (in *TokenLimit) DeepCopyInto(out *TokenLimit)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*TokenLimit) GetSource added in v1.3.0

func (l *TokenLimit) GetSource() string

func (*TokenLimit) GetSpec added in v1.3.0

func (l *TokenLimit) GetSpec() any

func (*TokenLimit) WithSource added in v1.3.0

func (l *TokenLimit) WithSource(source string) kuadrantv1.MergeableRule

type TokenRateLimitPolicy added in v1.3.0

type TokenRateLimitPolicy struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   TokenRateLimitPolicySpec   `json:"spec,omitempty"`
	Status TokenRateLimitPolicyStatus `json:"status,omitempty"`
}

TokenRateLimitPolicy enables token-based rate limiting for service workloads in a Gateway API network

func (*TokenRateLimitPolicy) DeepCopy added in v1.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicy.

func (*TokenRateLimitPolicy) DeepCopyInto added in v1.3.0

func (in *TokenRateLimitPolicy) DeepCopyInto(out *TokenRateLimitPolicy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*TokenRateLimitPolicy) DeepCopyObject added in v1.3.0

func (in *TokenRateLimitPolicy) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*TokenRateLimitPolicy) Empty added in v1.3.0

func (p *TokenRateLimitPolicy) Empty() bool

func (*TokenRateLimitPolicy) GetLocator added in v1.3.0

func (p *TokenRateLimitPolicy) GetLocator() string

func (*TokenRateLimitPolicy) GetMergeStrategy added in v1.3.0

func (p *TokenRateLimitPolicy) GetMergeStrategy() machinery.MergeStrategy

func (*TokenRateLimitPolicy) GetName added in v1.3.0

func (p *TokenRateLimitPolicy) GetName() string

func (*TokenRateLimitPolicy) GetNamespace added in v1.3.0

func (p *TokenRateLimitPolicy) GetNamespace() string

func (*TokenRateLimitPolicy) GetStatus added in v1.3.0

func (*TokenRateLimitPolicy) GetTargetRef deprecated added in v1.3.0

Deprecated: Use GetTargetRefs instead

func (*TokenRateLimitPolicy) GetTargetRefs added in v1.3.0

func (*TokenRateLimitPolicy) Kind added in v1.3.0

func (p *TokenRateLimitPolicy) Kind() string

func (*TokenRateLimitPolicy) Merge added in v1.3.0

func (*TokenRateLimitPolicy) Rules added in v1.3.0

func (*TokenRateLimitPolicy) SetRules added in v1.3.0

func (p *TokenRateLimitPolicy) SetRules(rules map[string]kuadrantv1.MergeableRule)

type TokenRateLimitPolicyList added in v1.3.0

type TokenRateLimitPolicyList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []TokenRateLimitPolicy `json:"items"`
}

TokenRateLimitPolicyList contains a list of TokenRateLimitPolicy

func (*TokenRateLimitPolicyList) DeepCopy added in v1.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicyList.

func (*TokenRateLimitPolicyList) DeepCopyInto added in v1.3.0

func (in *TokenRateLimitPolicyList) DeepCopyInto(out *TokenRateLimitPolicyList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*TokenRateLimitPolicyList) DeepCopyObject added in v1.3.0

func (in *TokenRateLimitPolicyList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type TokenRateLimitPolicySpec added in v1.3.0

type TokenRateLimitPolicySpec struct {
	// Reference to the object to which this policy applies.
	// +kubebuilder:validation:XValidation:rule="self.group == 'gateway.networking.k8s.io'",message="Invalid targetRef.group. The only supported value is 'gateway.networking.k8s.io'"
	// +kubebuilder:validation:XValidation:rule="self.kind == 'HTTPRoute' || self.kind == 'Gateway'",message="Invalid targetRef.kind. The only supported values are 'HTTPRoute' and 'Gateway'"
	TargetRef gatewayapiv1alpha2.LocalPolicyTargetReferenceWithSectionName `json:"targetRef"`

	// Rules to apply as defaults. Can be overridden by more specific policy rules lower in the hierarchy and by less specific policy overrides.
	// Use one of: defaults, overrides, or bare set of policy rules (implicit defaults).
	// +optional
	Defaults *MergeableTokenRateLimitPolicySpec `json:"defaults,omitempty"`

	// Rules to apply as overrides. Override all policy rules lower in the hierarchy. Can be overridden by less specific policy overrides.
	// Use one of: defaults, overrides, or bare set of policy rules (implicit defaults).
	// +optional
	Overrides *MergeableTokenRateLimitPolicySpec `json:"overrides,omitempty"`

	// Bare set of policy rules (implicit defaults).
	// Use one of: defaults, overrides, or bare set of policy rules (implicit defaults).
	TokenRateLimitPolicySpecProper `json:""`
}

+kubebuilder:validation:XValidation:rule="!(has(self.defaults) && has(self.limits))",message="Implicit and explicit defaults are mutually exclusive" +kubebuilder:validation:XValidation:rule="!(has(self.defaults) && has(self.overrides))",message="Overrides and explicit defaults are mutually exclusive" +kubebuilder:validation:XValidation:rule="!(has(self.overrides) && has(self.limits))",message="Overrides and implicit defaults are mutually exclusive" +kubebuilder:validation:XValidation:rule="!(has(self.overrides) || has(self.defaults)) ? has(self.limits) && size(self.limits) > 0 : true",message="At least one spec.limits must be defined" +kubebuilder:validation:XValidation:rule="has(self.overrides) ? has(self.overrides.limits) && size(self.overrides.limits) > 0 : true",message="At least one spec.overrides.limits must be defined" +kubebuilder:validation:XValidation:rule="has(self.defaults) ? has(self.defaults.limits) && size(self.defaults.limits) > 0 : true",message="At least one spec.defaults.limits must be defined"

func (*TokenRateLimitPolicySpec) DeepCopy added in v1.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicySpec.

func (*TokenRateLimitPolicySpec) DeepCopyInto added in v1.3.0

func (in *TokenRateLimitPolicySpec) DeepCopyInto(out *TokenRateLimitPolicySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*TokenRateLimitPolicySpec) Proper added in v1.3.0

type TokenRateLimitPolicySpecProper added in v1.3.0

type TokenRateLimitPolicySpecProper struct {
	// When holds a list of "top-level" `Predicate`s
	// +optional
	kuadrantv1.MergeableWhenPredicates `json:""`

	// Limits holds the struct of token-based limits indexed by a unique name
	// +optional
	Limits map[string]TokenLimit `json:"limits,omitempty"`
}

TokenRateLimitPolicySpecProper contains common shared fields for defaults and overrides

func (*TokenRateLimitPolicySpecProper) DeepCopy added in v1.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicySpecProper.

func (*TokenRateLimitPolicySpecProper) DeepCopyInto added in v1.3.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TokenRateLimitPolicyStatus added in v1.3.0

type TokenRateLimitPolicyStatus struct {
	// ObservedGeneration reflects the generation of the most recently observed spec.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// Represents the observations of a foo's current state.
	// Known .status.conditions.type are: "Available"
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
}

func (*TokenRateLimitPolicyStatus) DeepCopy added in v1.3.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicyStatus.

func (*TokenRateLimitPolicyStatus) DeepCopyInto added in v1.3.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*TokenRateLimitPolicyStatus) GetConditions added in v1.3.0

func (s *TokenRateLimitPolicyStatus) GetConditions() []metav1.Condition

Jump to

Keyboard shortcuts

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