Documentation
¶
Index ¶
- Constants
- Variables
- type RateLimitQuotaBucketSettings
- func (x *RateLimitQuotaBucketSettings) ClearBucketIdBuilder()
- func (x *RateLimitQuotaBucketSettings) ClearDenyResponseSettings()
- func (x *RateLimitQuotaBucketSettings) ClearExpiredAssignmentBehavior()
- func (x *RateLimitQuotaBucketSettings) ClearNoAssignmentBehavior()
- func (x *RateLimitQuotaBucketSettings) ClearReportingInterval()
- func (x *RateLimitQuotaBucketSettings) GetBucketIdBuilder() *RateLimitQuotaBucketSettings_BucketIdBuilder
- func (x *RateLimitQuotaBucketSettings) GetDenyResponseSettings() *RateLimitQuotaBucketSettings_DenyResponseSettings
- func (x *RateLimitQuotaBucketSettings) GetExpiredAssignmentBehavior() *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior
- func (x *RateLimitQuotaBucketSettings) GetNoAssignmentBehavior() *RateLimitQuotaBucketSettings_NoAssignmentBehavior
- func (x *RateLimitQuotaBucketSettings) GetReportingInterval() *durationpb.Duration
- func (x *RateLimitQuotaBucketSettings) HasBucketIdBuilder() bool
- func (x *RateLimitQuotaBucketSettings) HasDenyResponseSettings() bool
- func (x *RateLimitQuotaBucketSettings) HasExpiredAssignmentBehavior() bool
- func (x *RateLimitQuotaBucketSettings) HasNoAssignmentBehavior() bool
- func (x *RateLimitQuotaBucketSettings) HasReportingInterval() bool
- func (*RateLimitQuotaBucketSettings) ProtoMessage()
- func (x *RateLimitQuotaBucketSettings) ProtoReflect() protoreflect.Message
- func (x *RateLimitQuotaBucketSettings) Reset()
- func (x *RateLimitQuotaBucketSettings) SetBucketIdBuilder(v *RateLimitQuotaBucketSettings_BucketIdBuilder)
- func (x *RateLimitQuotaBucketSettings) SetDenyResponseSettings(v *RateLimitQuotaBucketSettings_DenyResponseSettings)
- func (x *RateLimitQuotaBucketSettings) SetExpiredAssignmentBehavior(v *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior)
- func (x *RateLimitQuotaBucketSettings) SetNoAssignmentBehavior(v *RateLimitQuotaBucketSettings_NoAssignmentBehavior)
- func (x *RateLimitQuotaBucketSettings) SetReportingInterval(v *durationpb.Duration)
- func (x *RateLimitQuotaBucketSettings) String() string
- type RateLimitQuotaBucketSettings_BucketIdBuilder
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) GetBucketIdBuilder() map[string]*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder
- func (*RateLimitQuotaBucketSettings_BucketIdBuilder) ProtoMessage()
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) ProtoReflect() protoreflect.Message
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) Reset()
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) SetBucketIdBuilder(v map[string]*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder)
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) String() string
- type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ClearCustomValue()
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ClearStringValue()
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ClearValueSpecifier()
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetCustomValue() *v3.TypedExtensionConfig
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetStringValue() string
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetValueSpecifier() isRateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) HasCustomValue() bool
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) HasStringValue() bool
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) HasValueSpecifier() bool
- func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ProtoMessage()
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ProtoReflect() protoreflect.Message
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) Reset()
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) SetCustomValue(v *v3.TypedExtensionConfig)
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) SetStringValue(v string)
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) String() string
- func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) WhichValueSpecifier() case_RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier
- type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_CustomValue
- type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_StringValue
- type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_builder
- type RateLimitQuotaBucketSettings_BucketIdBuilder_builder
- type RateLimitQuotaBucketSettings_DenyResponseSettings
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) ClearGrpcStatus()
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) ClearHttpBody()
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) ClearHttpStatus()
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) GetGrpcStatus() *status.Status
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) GetHttpBody() *wrapperspb.BytesValue
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) GetHttpStatus() *v32.HttpStatus
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) GetResponseHeadersToAdd() []*v3.HeaderValueOption
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) HasGrpcStatus() bool
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) HasHttpBody() bool
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) HasHttpStatus() bool
- func (*RateLimitQuotaBucketSettings_DenyResponseSettings) ProtoMessage()
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) ProtoReflect() protoreflect.Message
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) Reset()
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) SetGrpcStatus(v *status.Status)
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) SetHttpBody(v *wrapperspb.BytesValue)
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) SetHttpStatus(v *v32.HttpStatus)
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) SetResponseHeadersToAdd(v []*v3.HeaderValueOption)
- func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) String() string
- type RateLimitQuotaBucketSettings_DenyResponseSettings_builder
- type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearExpiredAssignmentBehavior()
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearExpiredAssignmentBehaviorTimeout()
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearFallbackRateLimit()
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearReuseLastAssignment()
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehavior() ...
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehaviorTimeout() *durationpb.Duration
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetFallbackRateLimit() *v32.RateLimitStrategy
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetReuseLastAssignment() *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasExpiredAssignmentBehavior() bool
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasExpiredAssignmentBehaviorTimeout() bool
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasFallbackRateLimit() bool
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasReuseLastAssignment() bool
- func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ProtoMessage()
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ProtoReflect() protoreflect.Message
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) Reset()
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) SetExpiredAssignmentBehaviorTimeout(v *durationpb.Duration)
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) SetFallbackRateLimit(v *v32.RateLimitStrategy)
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) SetReuseLastAssignment(v *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment)
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) String() string
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) WhichExpiredAssignmentBehavior() ...
- type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_FallbackRateLimit
- type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment
- func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) ProtoMessage()
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) ProtoReflect() protoreflect.Message
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) Reset()
- func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) String() string
- type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_
- type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_builder
- type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_builder
- type RateLimitQuotaBucketSettings_NoAssignmentBehavior
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) ClearFallbackRateLimit()
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) ClearNoAssignmentBehavior()
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) GetFallbackRateLimit() *v32.RateLimitStrategy
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) GetNoAssignmentBehavior() isRateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) HasFallbackRateLimit() bool
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) HasNoAssignmentBehavior() bool
- func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) ProtoMessage()
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) ProtoReflect() protoreflect.Message
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) Reset()
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) SetFallbackRateLimit(v *v32.RateLimitStrategy)
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) String() string
- func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) WhichNoAssignmentBehavior() case_RateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior
- type RateLimitQuotaBucketSettings_NoAssignmentBehavior_FallbackRateLimit
- type RateLimitQuotaBucketSettings_NoAssignmentBehavior_builder
- type RateLimitQuotaBucketSettings_builder
- type RateLimitQuotaFilterConfig
- func (x *RateLimitQuotaFilterConfig) ClearBucketMatchers()
- func (x *RateLimitQuotaFilterConfig) ClearFilterEnabled()
- func (x *RateLimitQuotaFilterConfig) ClearFilterEnforced()
- func (x *RateLimitQuotaFilterConfig) ClearRlqsServer()
- func (x *RateLimitQuotaFilterConfig) GetBucketMatchers() *v31.Matcher
- func (x *RateLimitQuotaFilterConfig) GetDomain() string
- func (x *RateLimitQuotaFilterConfig) GetFilterEnabled() *v3.RuntimeFractionalPercent
- func (x *RateLimitQuotaFilterConfig) GetFilterEnforced() *v3.RuntimeFractionalPercent
- func (x *RateLimitQuotaFilterConfig) GetRequestHeadersToAddWhenNotEnforced() []*v3.HeaderValueOption
- func (x *RateLimitQuotaFilterConfig) GetRlqsServer() *v3.GrpcService
- func (x *RateLimitQuotaFilterConfig) HasBucketMatchers() bool
- func (x *RateLimitQuotaFilterConfig) HasFilterEnabled() bool
- func (x *RateLimitQuotaFilterConfig) HasFilterEnforced() bool
- func (x *RateLimitQuotaFilterConfig) HasRlqsServer() bool
- func (*RateLimitQuotaFilterConfig) ProtoMessage()
- func (x *RateLimitQuotaFilterConfig) ProtoReflect() protoreflect.Message
- func (x *RateLimitQuotaFilterConfig) Reset()
- func (x *RateLimitQuotaFilterConfig) SetBucketMatchers(v *v31.Matcher)
- func (x *RateLimitQuotaFilterConfig) SetDomain(v string)
- func (x *RateLimitQuotaFilterConfig) SetFilterEnabled(v *v3.RuntimeFractionalPercent)
- func (x *RateLimitQuotaFilterConfig) SetFilterEnforced(v *v3.RuntimeFractionalPercent)
- func (x *RateLimitQuotaFilterConfig) SetRequestHeadersToAddWhenNotEnforced(v []*v3.HeaderValueOption)
- func (x *RateLimitQuotaFilterConfig) SetRlqsServer(v *v3.GrpcService)
- func (x *RateLimitQuotaFilterConfig) String() string
- type RateLimitQuotaFilterConfig_builder
- type RateLimitQuotaOverride
- func (x *RateLimitQuotaOverride) ClearBucketMatchers()
- func (x *RateLimitQuotaOverride) GetBucketMatchers() *v31.Matcher
- func (x *RateLimitQuotaOverride) GetDomain() string
- func (x *RateLimitQuotaOverride) HasBucketMatchers() bool
- func (*RateLimitQuotaOverride) ProtoMessage()
- func (x *RateLimitQuotaOverride) ProtoReflect() protoreflect.Message
- func (x *RateLimitQuotaOverride) Reset()
- func (x *RateLimitQuotaOverride) SetBucketMatchers(v *v31.Matcher)
- func (x *RateLimitQuotaOverride) SetDomain(v string)
- func (x *RateLimitQuotaOverride) String() string
- type RateLimitQuotaOverride_builder
Constants ¶
const RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_CustomValue_case case_RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier = 2
const RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_StringValue_case case_RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier = 1
const RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier_not_set_case case_RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier = 0
const RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ExpiredAssignmentBehavior_not_set_case case_RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ExpiredAssignmentBehavior = 0
const RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_FallbackRateLimit_case case_RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ExpiredAssignmentBehavior = 2
const RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_case case_RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ExpiredAssignmentBehavior = 3
const RateLimitQuotaBucketSettings_NoAssignmentBehavior_FallbackRateLimit_case case_RateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior = 1
const RateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior_not_set_case case_RateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior = 0
Variables ¶
var File_envoy_extensions_filters_http_rate_limit_quota_v3_rate_limit_quota_proto protoreflect.FileDescriptor
Functions ¶
This section is empty.
Types ¶
type RateLimitQuotaBucketSettings ¶
type RateLimitQuotaBucketSettings struct {
// “BucketId“ builder.
//
// :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` is a map from
// the string key to the string value which serves as bucket identifier common for on
// the control plane and the data plane.
//
// While “BucketId“ is always static, “BucketIdBuilder“ allows to populate map values
// with the dynamic properties associated with the each individual request.
//
// Example 1: static fields only
//
// “BucketIdBuilder“:
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.BucketIdBuilder
//
// bucket_id_builder:
// name:
// string_value: my_bucket
// hello:
// string_value: world
//
// Produces the following “BucketId“ for all requests:
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.service.rate_limit_quota.v3.BucketId
//
// bucket:
// name: my_bucket
// hello: world
//
// Example 2: static and dynamic fields
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.BucketIdBuilder
//
// bucket_id_builder:
// name:
// string_value: my_bucket
// env:
// custom_value:
// typed_config:
// '@type': type.googleapis.com/envoy.type.matcher.v3.HttpRequestHeaderMatchInput
// header_name: environment
//
// In this example, the value of “BucketId“ key “env“ is substituted from the “environment“
// request header.
//
// This is equivalent to the following “pseudo-code“:
//
// .. code-block:: yaml
//
// name: 'my_bucket'
// env: $header['environment']
//
// For example, the request with the HTTP header “env“ set to “staging“ will produce
// the following “BucketId“:
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.service.rate_limit_quota.v3.BucketId
//
// bucket:
// name: my_bucket
// env: staging
//
// For the request with the HTTP header “environment“ set to “prod“, will produce:
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.service.rate_limit_quota.v3.BucketId
//
// bucket:
// name: my_bucket
// env: prod
//
// .. note::
//
// The order of “BucketId“ keys do not matter. Buckets “{ a: 'A', b: 'B' }“ and
// “{ b: 'B', a: 'A' }“ are identical.
//
// If not set, requests will NOT be reported to the server, and will always limited
// according to :ref:`no_assignment_behavior
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.no_assignment_behavior>`
// configuration.
BucketIdBuilder *RateLimitQuotaBucketSettings_BucketIdBuilder `protobuf:"bytes,1,opt,name=bucket_id_builder,json=bucketIdBuilder,proto3" json:"bucket_id_builder,omitempty"`
// The interval at which the data plane (RLQS client) is to report quota usage for this bucket.
//
// When the first request is matched to a bucket with no assignment, the data plane is to report
// the request immediately in the :ref:`RateLimitQuotaUsageReports
// <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaUsageReports>` message.
// For the RLQS server, this signals that the data plane is now subscribed to
// the quota assignments in this bucket, and will start sending the assignment as described in
// the :ref:`RLQS documentation <envoy_v3_api_file_envoy/service/rate_limit_quota/v3/rlqs.proto>`.
//
// After sending the initial report, the data plane is to continue reporting the bucket usage with
// the internal specified in this field.
//
// If for any reason RLQS client doesn't receive the initial assignment for the reported bucket,
// the data plane will eventually consider the bucket abandoned and stop sending the usage
// reports. This is explained in more details at :ref:`Rate Limit Quota Service (RLQS)
// <envoy_v3_api_file_envoy/service/rate_limit_quota/v3/rlqs.proto>`.
//
// [#comment: 100000000 nanoseconds = 0.1 seconds]
ReportingInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=reporting_interval,json=reportingInterval,proto3" json:"reporting_interval,omitempty"`
// Customize the deny response to the requests over the rate limit.
// If not set, the filter will be configured as if an empty message is set,
// and will behave according to the defaults specified in :ref:`DenyResponseSettings
// <envoy_v3_api_msg_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.DenyResponseSettings>`.
DenyResponseSettings *RateLimitQuotaBucketSettings_DenyResponseSettings `protobuf:"bytes,3,opt,name=deny_response_settings,json=denyResponseSettings,proto3" json:"deny_response_settings,omitempty"`
// Configures the behavior in the "no assignment" state: after the first request has been
// matched to the bucket, and before the the RLQS server returns the first quota assignment.
//
// If not set, the default behavior is to allow all requests.
NoAssignmentBehavior *RateLimitQuotaBucketSettings_NoAssignmentBehavior `protobuf:"bytes,4,opt,name=no_assignment_behavior,json=noAssignmentBehavior,proto3" json:"no_assignment_behavior,omitempty"`
// Configures the behavior in the "expired assignment" state: the bucket's assignment has expired,
// and cannot be refreshed.
//
// If not set, the bucket is abandoned when its “active“ assignment expires.
// The process of abandoning the bucket, and restarting the subscription is described in the
// :ref:`AbandonAction <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
// message.
ExpiredAssignmentBehavior *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior `` /* 138-byte string literal not displayed */
// contains filtered or unexported fields
}
Rate Limit Quota Bucket Settings to apply on the successful “bucket_matchers“ match.
Specify this message in the :ref:`Matcher.OnMatch.action <envoy_v3_api_field_.xds.type.matcher.v3.Matcher.OnMatch.action>` field of the “bucket_matchers“ matcher tree to assign the matched requests to the Quota Bucket. Usage example: :ref:`RateLimitQuotaFilterConfig.bucket_matchers <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaFilterConfig.bucket_matchers>`. [#next-free-field: 6]
func (*RateLimitQuotaBucketSettings) ClearBucketIdBuilder ¶
func (x *RateLimitQuotaBucketSettings) ClearBucketIdBuilder()
func (*RateLimitQuotaBucketSettings) ClearDenyResponseSettings ¶
func (x *RateLimitQuotaBucketSettings) ClearDenyResponseSettings()
func (*RateLimitQuotaBucketSettings) ClearExpiredAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings) ClearExpiredAssignmentBehavior()
func (*RateLimitQuotaBucketSettings) ClearNoAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings) ClearNoAssignmentBehavior()
func (*RateLimitQuotaBucketSettings) ClearReportingInterval ¶
func (x *RateLimitQuotaBucketSettings) ClearReportingInterval()
func (*RateLimitQuotaBucketSettings) GetBucketIdBuilder ¶
func (x *RateLimitQuotaBucketSettings) GetBucketIdBuilder() *RateLimitQuotaBucketSettings_BucketIdBuilder
func (*RateLimitQuotaBucketSettings) GetDenyResponseSettings ¶
func (x *RateLimitQuotaBucketSettings) GetDenyResponseSettings() *RateLimitQuotaBucketSettings_DenyResponseSettings
func (*RateLimitQuotaBucketSettings) GetExpiredAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings) GetExpiredAssignmentBehavior() *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior
func (*RateLimitQuotaBucketSettings) GetNoAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings) GetNoAssignmentBehavior() *RateLimitQuotaBucketSettings_NoAssignmentBehavior
func (*RateLimitQuotaBucketSettings) GetReportingInterval ¶
func (x *RateLimitQuotaBucketSettings) GetReportingInterval() *durationpb.Duration
func (*RateLimitQuotaBucketSettings) HasBucketIdBuilder ¶
func (x *RateLimitQuotaBucketSettings) HasBucketIdBuilder() bool
func (*RateLimitQuotaBucketSettings) HasDenyResponseSettings ¶
func (x *RateLimitQuotaBucketSettings) HasDenyResponseSettings() bool
func (*RateLimitQuotaBucketSettings) HasExpiredAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings) HasExpiredAssignmentBehavior() bool
func (*RateLimitQuotaBucketSettings) HasNoAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings) HasNoAssignmentBehavior() bool
func (*RateLimitQuotaBucketSettings) HasReportingInterval ¶
func (x *RateLimitQuotaBucketSettings) HasReportingInterval() bool
func (*RateLimitQuotaBucketSettings) ProtoMessage ¶
func (*RateLimitQuotaBucketSettings) ProtoMessage()
func (*RateLimitQuotaBucketSettings) ProtoReflect ¶
func (x *RateLimitQuotaBucketSettings) ProtoReflect() protoreflect.Message
func (*RateLimitQuotaBucketSettings) Reset ¶
func (x *RateLimitQuotaBucketSettings) Reset()
func (*RateLimitQuotaBucketSettings) SetBucketIdBuilder ¶
func (x *RateLimitQuotaBucketSettings) SetBucketIdBuilder(v *RateLimitQuotaBucketSettings_BucketIdBuilder)
func (*RateLimitQuotaBucketSettings) SetDenyResponseSettings ¶
func (x *RateLimitQuotaBucketSettings) SetDenyResponseSettings(v *RateLimitQuotaBucketSettings_DenyResponseSettings)
func (*RateLimitQuotaBucketSettings) SetExpiredAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings) SetExpiredAssignmentBehavior(v *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior)
func (*RateLimitQuotaBucketSettings) SetNoAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings) SetNoAssignmentBehavior(v *RateLimitQuotaBucketSettings_NoAssignmentBehavior)
func (*RateLimitQuotaBucketSettings) SetReportingInterval ¶
func (x *RateLimitQuotaBucketSettings) SetReportingInterval(v *durationpb.Duration)
func (*RateLimitQuotaBucketSettings) String ¶
func (x *RateLimitQuotaBucketSettings) String() string
type RateLimitQuotaBucketSettings_BucketIdBuilder ¶
type RateLimitQuotaBucketSettings_BucketIdBuilder struct {
// The map translated into the “BucketId“ map.
//
// The “string key“ of this map and becomes the key of “BucketId“ map as is.
//
// The “ValueBuilder value“ for the key can be:
//
// - static “StringValue string_value“ — becomes the value in the “BucketId“ map as is.
// - dynamic “TypedExtensionConfig custom_value“ — evaluated for each request. Must produce
// a string output, which becomes the value in the the “BucketId“ map.
//
// See usage examples in the docs to :ref:`bucket_id_builder
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.bucket_id_builder>`
// field.
BucketIdBuilder map[string]*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder `` /* 182-byte string literal not displayed */
// contains filtered or unexported fields
}
“BucketIdBuilder“ makes it possible to build :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` with values substituted from the dynamic properties associated with each individual request. See usage examples in the docs to :ref:`bucket_id_builder <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.bucket_id_builder>` field.
func (*RateLimitQuotaBucketSettings_BucketIdBuilder) GetBucketIdBuilder ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) GetBucketIdBuilder() map[string]*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder
func (*RateLimitQuotaBucketSettings_BucketIdBuilder) ProtoMessage ¶
func (*RateLimitQuotaBucketSettings_BucketIdBuilder) ProtoMessage()
func (*RateLimitQuotaBucketSettings_BucketIdBuilder) ProtoReflect ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) ProtoReflect() protoreflect.Message
func (*RateLimitQuotaBucketSettings_BucketIdBuilder) Reset ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) Reset()
func (*RateLimitQuotaBucketSettings_BucketIdBuilder) SetBucketIdBuilder ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) SetBucketIdBuilder(v map[string]*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder)
func (*RateLimitQuotaBucketSettings_BucketIdBuilder) String ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder) String() string
type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder ¶
type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder struct {
// Types that are valid to be assigned to ValueSpecifier:
//
// *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_StringValue
// *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_CustomValue
ValueSpecifier isRateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier `protobuf_oneof:"value_specifier"`
// contains filtered or unexported fields
}
Produces the value of the :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` map.
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ClearCustomValue ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ClearCustomValue()
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ClearStringValue ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ClearStringValue()
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ClearValueSpecifier ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ClearValueSpecifier()
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetCustomValue ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetCustomValue() *v3.TypedExtensionConfig
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetStringValue ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetStringValue() string
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetValueSpecifier ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetValueSpecifier() isRateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) HasCustomValue ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) HasCustomValue() bool
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) HasStringValue ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) HasStringValue() bool
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) HasValueSpecifier ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) HasValueSpecifier() bool
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ProtoMessage ¶
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ProtoMessage()
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ProtoReflect ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ProtoReflect() protoreflect.Message
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) Reset ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) Reset()
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) SetCustomValue ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) SetCustomValue(v *v3.TypedExtensionConfig)
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) SetStringValue ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) SetStringValue(v string)
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) String ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) String() string
func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) WhichValueSpecifier ¶
func (x *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) WhichValueSpecifier() case_RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier
type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_CustomValue ¶
type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_CustomValue struct {
// Dynamic value — evaluated for each request. Must produce a string output, which becomes
// the value in the :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>`
// map. For example, extensions with the “envoy.matching.http.input“ category can be used.
CustomValue *v3.TypedExtensionConfig `protobuf:"bytes,2,opt,name=custom_value,json=customValue,proto3,oneof"`
}
type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_StringValue ¶
type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_StringValue struct {
// Static string value — becomes the value in the :ref:`BucketId
// <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` map as is.
StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,proto3,oneof"`
}
type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_builder ¶
type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_builder struct {
// Fields of oneof ValueSpecifier:
// Static string value — becomes the value in the :ref:`BucketId
// <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` map as is.
StringValue *string
// Dynamic value — evaluated for each request. Must produce a string output, which becomes
// the value in the :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>`
// map. For example, extensions with the “envoy.matching.http.input“ category can be used.
CustomValue *v3.TypedExtensionConfig
// contains filtered or unexported fields
}
func (RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_builder) Build ¶
type RateLimitQuotaBucketSettings_BucketIdBuilder_builder ¶
type RateLimitQuotaBucketSettings_BucketIdBuilder_builder struct {
// The map translated into the “BucketId“ map.
//
// The “string key“ of this map and becomes the key of “BucketId“ map as is.
//
// The “ValueBuilder value“ for the key can be:
//
// - static “StringValue string_value“ — becomes the value in the “BucketId“ map as is.
// - dynamic “TypedExtensionConfig custom_value“ — evaluated for each request. Must produce
// a string output, which becomes the value in the the “BucketId“ map.
//
// See usage examples in the docs to :ref:`bucket_id_builder
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.bucket_id_builder>`
// field.
BucketIdBuilder map[string]*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder
// contains filtered or unexported fields
}
func (RateLimitQuotaBucketSettings_BucketIdBuilder_builder) Build ¶
type RateLimitQuotaBucketSettings_DenyResponseSettings ¶
type RateLimitQuotaBucketSettings_DenyResponseSettings struct {
// HTTP response code to deny for HTTP requests (gRPC excluded).
// Defaults to 429 (:ref:`StatusCode.TooManyRequests<envoy_v3_api_enum_value_type.v3.StatusCode.TooManyRequests>`).
HttpStatus *v32.HttpStatus `protobuf:"bytes,1,opt,name=http_status,json=httpStatus,proto3" json:"http_status,omitempty"`
// HTTP response body used to deny for HTTP requests (gRPC excluded).
// If not set, an empty body is returned.
HttpBody *wrapperspb.BytesValue `protobuf:"bytes,2,opt,name=http_body,json=httpBody,proto3" json:"http_body,omitempty"`
// Configure the deny response for gRPC requests over the rate limit.
// Allows to specify the `RPC status code
// <https://cloud.google.com/natural-language/docs/reference/rpc/google.rpc#google.rpc.Code>`_,
// and the error message.
// Defaults to the Status with the RPC Code “UNAVAILABLE“ and empty message.
//
// To identify gRPC requests, Envoy checks that the “Content-Type“ header is
// “application/grpc“, or one of the various “application/grpc+“ values.
//
// .. note::
//
// The HTTP code for a gRPC response is always 200.
GrpcStatus *status.Status `protobuf:"bytes,3,opt,name=grpc_status,json=grpcStatus,proto3" json:"grpc_status,omitempty"`
// Specifies a list of HTTP headers that should be added to each response for requests that
// have been rate limited. Applies both to plain HTTP, and gRPC requests.
// The headers are added even when the rate limit quota was not enforced.
ResponseHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,4,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"`
// contains filtered or unexported fields
}
Customize the deny response to the requests over the rate limit.
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) ClearGrpcStatus ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) ClearGrpcStatus()
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) ClearHttpBody ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) ClearHttpBody()
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) ClearHttpStatus ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) ClearHttpStatus()
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) GetGrpcStatus ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) GetGrpcStatus() *status.Status
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) GetHttpBody ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) GetHttpBody() *wrapperspb.BytesValue
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) GetHttpStatus ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) GetHttpStatus() *v32.HttpStatus
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) GetResponseHeadersToAdd ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) GetResponseHeadersToAdd() []*v3.HeaderValueOption
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) HasGrpcStatus ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) HasGrpcStatus() bool
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) HasHttpBody ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) HasHttpBody() bool
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) HasHttpStatus ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) HasHttpStatus() bool
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) ProtoMessage ¶
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) ProtoMessage()
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) ProtoReflect ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) ProtoReflect() protoreflect.Message
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) Reset ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) Reset()
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) SetGrpcStatus ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) SetGrpcStatus(v *status.Status)
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) SetHttpBody ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) SetHttpBody(v *wrapperspb.BytesValue)
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) SetHttpStatus ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) SetHttpStatus(v *v32.HttpStatus)
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) SetResponseHeadersToAdd ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) SetResponseHeadersToAdd(v []*v3.HeaderValueOption)
func (*RateLimitQuotaBucketSettings_DenyResponseSettings) String ¶
func (x *RateLimitQuotaBucketSettings_DenyResponseSettings) String() string
type RateLimitQuotaBucketSettings_DenyResponseSettings_builder ¶
type RateLimitQuotaBucketSettings_DenyResponseSettings_builder struct {
// HTTP response code to deny for HTTP requests (gRPC excluded).
// Defaults to 429 (:ref:`StatusCode.TooManyRequests<envoy_v3_api_enum_value_type.v3.StatusCode.TooManyRequests>`).
HttpStatus *v32.HttpStatus
// HTTP response body used to deny for HTTP requests (gRPC excluded).
// If not set, an empty body is returned.
HttpBody *wrapperspb.BytesValue
// Configure the deny response for gRPC requests over the rate limit.
// Allows to specify the `RPC status code
// <https://cloud.google.com/natural-language/docs/reference/rpc/google.rpc#google.rpc.Code>`_,
// and the error message.
// Defaults to the Status with the RPC Code “UNAVAILABLE“ and empty message.
//
// To identify gRPC requests, Envoy checks that the “Content-Type“ header is
// “application/grpc“, or one of the various “application/grpc+“ values.
//
// .. note::
//
// The HTTP code for a gRPC response is always 200.
GrpcStatus *status.Status
// Specifies a list of HTTP headers that should be added to each response for requests that
// have been rate limited. Applies both to plain HTTP, and gRPC requests.
// The headers are added even when the rate limit quota was not enforced.
ResponseHeadersToAdd []*v3.HeaderValueOption
// contains filtered or unexported fields
}
func (RateLimitQuotaBucketSettings_DenyResponseSettings_builder) Build ¶
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior ¶
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior struct {
// Limit the time :ref:`ExpiredAssignmentBehavior
// <envoy_v3_api_msg_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior>`
// is applied. If the server doesn't respond within this duration:
//
// 1. Selected “ExpiredAssignmentBehavior“ is no longer applied.
// 2. The bucket is abandoned. The process of abandoning the bucket is described in the
// :ref:`AbandonAction <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
// message.
// 3. If a new request is matched into the bucket that has become abandoned,
// the data plane restarts the subscription to the bucket. The process of restarting the
// subscription is described in the :ref:`AbandonAction
// <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
// message.
//
// If not set, defaults to zero, and the bucket is abandoned immediately.
ExpiredAssignmentBehaviorTimeout *durationpb.Duration `` /* 161-byte string literal not displayed */
// Types that are valid to be assigned to ExpiredAssignmentBehavior:
//
// *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_FallbackRateLimit
// *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_
ExpiredAssignmentBehavior isRateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ExpiredAssignmentBehavior `protobuf_oneof:"expired_assignment_behavior"`
// contains filtered or unexported fields
}
Specifies the behavior when the bucket's assignment has expired, and cannot be refreshed for any reason.
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearExpiredAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearExpiredAssignmentBehavior()
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearExpiredAssignmentBehaviorTimeout ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearExpiredAssignmentBehaviorTimeout()
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearFallbackRateLimit ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearFallbackRateLimit()
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearReuseLastAssignment ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ClearReuseLastAssignment()
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehavior() isRateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ExpiredAssignmentBehavior
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehaviorTimeout ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehaviorTimeout() *durationpb.Duration
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetFallbackRateLimit ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetFallbackRateLimit() *v32.RateLimitStrategy
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetReuseLastAssignment ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetReuseLastAssignment() *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasExpiredAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasExpiredAssignmentBehavior() bool
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasExpiredAssignmentBehaviorTimeout ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasExpiredAssignmentBehaviorTimeout() bool
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasFallbackRateLimit ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasFallbackRateLimit() bool
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasReuseLastAssignment ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) HasReuseLastAssignment() bool
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ProtoMessage ¶
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ProtoMessage()
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ProtoReflect ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ProtoReflect() protoreflect.Message
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) Reset ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) Reset()
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) SetExpiredAssignmentBehaviorTimeout ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) SetExpiredAssignmentBehaviorTimeout(v *durationpb.Duration)
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) SetFallbackRateLimit ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) SetFallbackRateLimit(v *v32.RateLimitStrategy)
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) SetReuseLastAssignment ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) SetReuseLastAssignment(v *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment)
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) String ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) String() string
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) WhichExpiredAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) WhichExpiredAssignmentBehavior() case_RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ExpiredAssignmentBehavior
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_FallbackRateLimit ¶
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_FallbackRateLimit struct {
// Apply the rate limiting strategy to all requests matched into the bucket until the RLQS
// server sends a new assignment, or the :ref:`expired_assignment_behavior_timeout
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>`
// runs out.
FallbackRateLimit *v32.RateLimitStrategy `protobuf:"bytes,2,opt,name=fallback_rate_limit,json=fallbackRateLimit,proto3,oneof"`
}
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment ¶
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment struct {
// contains filtered or unexported fields
}
Reuse the last known quota assignment, effectively extending it for the duration specified in the :ref:`expired_assignment_behavior_timeout <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>` field.
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) ProtoMessage ¶
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) ProtoMessage()
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) ProtoReflect ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) ProtoReflect() protoreflect.Message
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) Reset ¶
func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) String ¶
func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) String() string
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_ ¶
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_ struct {
// Reuse the last “active“ assignment until the RLQS server sends a new assignment, or the
// :ref:`expired_assignment_behavior_timeout
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>`
// runs out.
ReuseLastAssignment *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment `protobuf:"bytes,3,opt,name=reuse_last_assignment,json=reuseLastAssignment,proto3,oneof"`
}
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_builder ¶
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_builder struct {
// contains filtered or unexported fields
}
func (RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_builder) Build ¶
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_builder ¶
type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_builder struct {
// Limit the time :ref:`ExpiredAssignmentBehavior
// <envoy_v3_api_msg_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior>`
// is applied. If the server doesn't respond within this duration:
//
// 1. Selected “ExpiredAssignmentBehavior“ is no longer applied.
// 2. The bucket is abandoned. The process of abandoning the bucket is described in the
// :ref:`AbandonAction <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
// message.
// 3. If a new request is matched into the bucket that has become abandoned,
// the data plane restarts the subscription to the bucket. The process of restarting the
// subscription is described in the :ref:`AbandonAction
// <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
// message.
//
// If not set, defaults to zero, and the bucket is abandoned immediately.
ExpiredAssignmentBehaviorTimeout *durationpb.Duration
// Fields of oneof ExpiredAssignmentBehavior:
// Apply the rate limiting strategy to all requests matched into the bucket until the RLQS
// server sends a new assignment, or the :ref:`expired_assignment_behavior_timeout
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>`
// runs out.
FallbackRateLimit *v32.RateLimitStrategy
// Reuse the last “active“ assignment until the RLQS server sends a new assignment, or the
// :ref:`expired_assignment_behavior_timeout
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>`
// runs out.
ReuseLastAssignment *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment
// contains filtered or unexported fields
}
func (RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_builder) Build ¶
type RateLimitQuotaBucketSettings_NoAssignmentBehavior ¶
type RateLimitQuotaBucketSettings_NoAssignmentBehavior struct {
// Types that are valid to be assigned to NoAssignmentBehavior:
//
// *RateLimitQuotaBucketSettings_NoAssignmentBehavior_FallbackRateLimit
NoAssignmentBehavior isRateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior `protobuf_oneof:"no_assignment_behavior"`
// contains filtered or unexported fields
}
Configures the behavior after the first request has been matched to the bucket, and before the the RLQS server returns the first quota assignment.
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) ClearFallbackRateLimit ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) ClearFallbackRateLimit()
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) ClearNoAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) ClearNoAssignmentBehavior()
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) GetFallbackRateLimit ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) GetFallbackRateLimit() *v32.RateLimitStrategy
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) GetNoAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) GetNoAssignmentBehavior() isRateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) HasFallbackRateLimit ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) HasFallbackRateLimit() bool
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) HasNoAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) HasNoAssignmentBehavior() bool
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) ProtoMessage ¶
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) ProtoMessage()
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) ProtoReflect ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) ProtoReflect() protoreflect.Message
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) Reset ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) Reset()
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) SetFallbackRateLimit ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) SetFallbackRateLimit(v *v32.RateLimitStrategy)
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) String ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) String() string
func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) WhichNoAssignmentBehavior ¶
func (x *RateLimitQuotaBucketSettings_NoAssignmentBehavior) WhichNoAssignmentBehavior() case_RateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior
type RateLimitQuotaBucketSettings_NoAssignmentBehavior_FallbackRateLimit ¶
type RateLimitQuotaBucketSettings_NoAssignmentBehavior_FallbackRateLimit struct {
// Apply pre-configured rate limiting strategy until the server sends the first assignment.
FallbackRateLimit *v32.RateLimitStrategy `protobuf:"bytes,1,opt,name=fallback_rate_limit,json=fallbackRateLimit,proto3,oneof"`
}
type RateLimitQuotaBucketSettings_NoAssignmentBehavior_builder ¶
type RateLimitQuotaBucketSettings_NoAssignmentBehavior_builder struct {
// Fields of oneof NoAssignmentBehavior:
// Apply pre-configured rate limiting strategy until the server sends the first assignment.
FallbackRateLimit *v32.RateLimitStrategy
// contains filtered or unexported fields
}
func (RateLimitQuotaBucketSettings_NoAssignmentBehavior_builder) Build ¶
type RateLimitQuotaBucketSettings_builder ¶
type RateLimitQuotaBucketSettings_builder struct {
// “BucketId“ builder.
//
// :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` is a map from
// the string key to the string value which serves as bucket identifier common for on
// the control plane and the data plane.
//
// While “BucketId“ is always static, “BucketIdBuilder“ allows to populate map values
// with the dynamic properties associated with the each individual request.
//
// Example 1: static fields only
//
// “BucketIdBuilder“:
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.BucketIdBuilder
//
// bucket_id_builder:
// name:
// string_value: my_bucket
// hello:
// string_value: world
//
// Produces the following “BucketId“ for all requests:
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.service.rate_limit_quota.v3.BucketId
//
// bucket:
// name: my_bucket
// hello: world
//
// Example 2: static and dynamic fields
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.BucketIdBuilder
//
// bucket_id_builder:
// name:
// string_value: my_bucket
// env:
// custom_value:
// typed_config:
// '@type': type.googleapis.com/envoy.type.matcher.v3.HttpRequestHeaderMatchInput
// header_name: environment
//
// In this example, the value of “BucketId“ key “env“ is substituted from the “environment“
// request header.
//
// This is equivalent to the following “pseudo-code“:
//
// .. code-block:: yaml
//
// name: 'my_bucket'
// env: $header['environment']
//
// For example, the request with the HTTP header “env“ set to “staging“ will produce
// the following “BucketId“:
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.service.rate_limit_quota.v3.BucketId
//
// bucket:
// name: my_bucket
// env: staging
//
// For the request with the HTTP header “environment“ set to “prod“, will produce:
//
// .. validated-code-block:: yaml
//
// :type-name: envoy.service.rate_limit_quota.v3.BucketId
//
// bucket:
// name: my_bucket
// env: prod
//
// .. note::
//
// The order of “BucketId“ keys do not matter. Buckets “{ a: 'A', b: 'B' }“ and
// “{ b: 'B', a: 'A' }“ are identical.
//
// If not set, requests will NOT be reported to the server, and will always limited
// according to :ref:`no_assignment_behavior
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.no_assignment_behavior>`
// configuration.
BucketIdBuilder *RateLimitQuotaBucketSettings_BucketIdBuilder
// The interval at which the data plane (RLQS client) is to report quota usage for this bucket.
//
// When the first request is matched to a bucket with no assignment, the data plane is to report
// the request immediately in the :ref:`RateLimitQuotaUsageReports
// <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaUsageReports>` message.
// For the RLQS server, this signals that the data plane is now subscribed to
// the quota assignments in this bucket, and will start sending the assignment as described in
// the :ref:`RLQS documentation <envoy_v3_api_file_envoy/service/rate_limit_quota/v3/rlqs.proto>`.
//
// After sending the initial report, the data plane is to continue reporting the bucket usage with
// the internal specified in this field.
//
// If for any reason RLQS client doesn't receive the initial assignment for the reported bucket,
// the data plane will eventually consider the bucket abandoned and stop sending the usage
// reports. This is explained in more details at :ref:`Rate Limit Quota Service (RLQS)
// <envoy_v3_api_file_envoy/service/rate_limit_quota/v3/rlqs.proto>`.
//
// [#comment: 100000000 nanoseconds = 0.1 seconds]
ReportingInterval *durationpb.Duration
// Customize the deny response to the requests over the rate limit.
// If not set, the filter will be configured as if an empty message is set,
// and will behave according to the defaults specified in :ref:`DenyResponseSettings
// <envoy_v3_api_msg_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.DenyResponseSettings>`.
DenyResponseSettings *RateLimitQuotaBucketSettings_DenyResponseSettings
// Configures the behavior in the "no assignment" state: after the first request has been
// matched to the bucket, and before the the RLQS server returns the first quota assignment.
//
// If not set, the default behavior is to allow all requests.
NoAssignmentBehavior *RateLimitQuotaBucketSettings_NoAssignmentBehavior
// Configures the behavior in the "expired assignment" state: the bucket's assignment has expired,
// and cannot be refreshed.
//
// If not set, the bucket is abandoned when its “active“ assignment expires.
// The process of abandoning the bucket, and restarting the subscription is described in the
// :ref:`AbandonAction <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
// message.
ExpiredAssignmentBehavior *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior
// contains filtered or unexported fields
}
func (RateLimitQuotaBucketSettings_builder) Build ¶
func (b0 RateLimitQuotaBucketSettings_builder) Build() *RateLimitQuotaBucketSettings
type RateLimitQuotaFilterConfig ¶
type RateLimitQuotaFilterConfig struct {
// Configures the gRPC Rate Limit Quota Service (RLQS) RateLimitQuotaService.
RlqsServer *v3.GrpcService `protobuf:"bytes,1,opt,name=rlqs_server,json=rlqsServer,proto3" json:"rlqs_server,omitempty"`
// The application domain to use when calling the service. This enables sharing the quota
// server between different applications without fear of overlap.
// E.g., "envoy".
Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
// The match tree to use for grouping incoming requests into buckets.
//
// Example:
//
// .. validated-code-block:: yaml
//
// :type-name: xds.type.matcher.v3.Matcher
//
// matcher_list:
// matchers:
// # Assign requests with header['env'] set to 'staging' to the bucket { name: 'staging' }
// - predicate:
// single_predicate:
// input:
// typed_config:
// '@type': type.googleapis.com/envoy.type.matcher.v3.HttpRequestHeaderMatchInput
// header_name: env
// value_match:
// exact: staging
// on_match:
// action:
// typed_config:
// '@type': type.googleapis.com/envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings
// bucket_id_builder:
// bucket_id_builder:
// name:
// string_value: staging
//
// # Assign requests with header['user_group'] set to 'admin' to the bucket { acl: 'admin_users' }
// - predicate:
// single_predicate:
// input:
// typed_config:
// '@type': type.googleapis.com/xds.type.matcher.v3.HttpAttributesCelMatchInput
// custom_match:
// typed_config:
// '@type': type.googleapis.com/xds.type.matcher.v3.CelMatcher
// expr_match:
// # Shortened for illustration purposes. Here should be parsed CEL expression:
// # request.headers['user_group'] == 'admin'
// parsed_expr: {}
// on_match:
// action:
// typed_config:
// '@type': type.googleapis.com/envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings
// bucket_id_builder:
// bucket_id_builder:
// acl:
// string_value: admin_users
//
// # Catch-all clause for the requests not matched by any of the matchers.
// # In this example, deny all requests.
// on_no_match:
// action:
// typed_config:
// '@type': type.googleapis.com/envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings
// no_assignment_behavior:
// fallback_rate_limit:
// blanket_rule: DENY_ALL
//
// .. attention::
//
// The first matched group wins. Once the request is matched into a bucket, matcher
// evaluation ends.
//
// Use “on_no_match“ field to assign the catch-all bucket. If a request is not matched
// into any bucket, and there's no “on_no_match“ field configured, the request will be
// ALLOWED by default. It will NOT be reported to the RLQS server.
//
// Refer to :ref:`Unified Matcher API <envoy_v3_api_msg_.xds.type.matcher.v3.Matcher>`
// documentation for more information on the matcher trees.
BucketMatchers *v31.Matcher `protobuf:"bytes,3,opt,name=bucket_matchers,json=bucketMatchers,proto3" json:"bucket_matchers,omitempty"`
// If set, this will enable -- but not necessarily enforce -- the rate limit for the given
// fraction of requests.
//
// Defaults to 100% of requests.
FilterEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,4,opt,name=filter_enabled,json=filterEnabled,proto3" json:"filter_enabled,omitempty"`
// If set, this will enforce the rate limit decisions for the given fraction of requests.
// For requests that are not enforced the filter will still obtain the quota and include it
// in the load computation, however the request will always be allowed regardless of the outcome
// of quota application. This allows validation or testing of the rate limiting service
// infrastructure without disrupting existing traffic.
//
// Note: this only applies to the fraction of enabled requests.
//
// Defaults to 100% of requests.
FilterEnforced *v3.RuntimeFractionalPercent `protobuf:"bytes,5,opt,name=filter_enforced,json=filterEnforced,proto3" json:"filter_enforced,omitempty"`
// Specifies a list of HTTP headers that should be added to each request that
// has been rate limited and is also forwarded upstream. This can only occur when the
// filter is enabled but not enforced.
RequestHeadersToAddWhenNotEnforced []*v3.HeaderValueOption `` /* 173-byte string literal not displayed */
// contains filtered or unexported fields
}
Configures the Rate Limit Quota filter.
Can be overridden in the per-route and per-host configurations. The more specific definition completely overrides the less specific definition. [#next-free-field: 7]
func (*RateLimitQuotaFilterConfig) ClearBucketMatchers ¶
func (x *RateLimitQuotaFilterConfig) ClearBucketMatchers()
func (*RateLimitQuotaFilterConfig) ClearFilterEnabled ¶
func (x *RateLimitQuotaFilterConfig) ClearFilterEnabled()
func (*RateLimitQuotaFilterConfig) ClearFilterEnforced ¶
func (x *RateLimitQuotaFilterConfig) ClearFilterEnforced()
func (*RateLimitQuotaFilterConfig) ClearRlqsServer ¶
func (x *RateLimitQuotaFilterConfig) ClearRlqsServer()
func (*RateLimitQuotaFilterConfig) GetBucketMatchers ¶
func (x *RateLimitQuotaFilterConfig) GetBucketMatchers() *v31.Matcher
func (*RateLimitQuotaFilterConfig) GetDomain ¶
func (x *RateLimitQuotaFilterConfig) GetDomain() string
func (*RateLimitQuotaFilterConfig) GetFilterEnabled ¶
func (x *RateLimitQuotaFilterConfig) GetFilterEnabled() *v3.RuntimeFractionalPercent
func (*RateLimitQuotaFilterConfig) GetFilterEnforced ¶
func (x *RateLimitQuotaFilterConfig) GetFilterEnforced() *v3.RuntimeFractionalPercent
func (*RateLimitQuotaFilterConfig) GetRequestHeadersToAddWhenNotEnforced ¶
func (x *RateLimitQuotaFilterConfig) GetRequestHeadersToAddWhenNotEnforced() []*v3.HeaderValueOption
func (*RateLimitQuotaFilterConfig) GetRlqsServer ¶
func (x *RateLimitQuotaFilterConfig) GetRlqsServer() *v3.GrpcService
func (*RateLimitQuotaFilterConfig) HasBucketMatchers ¶
func (x *RateLimitQuotaFilterConfig) HasBucketMatchers() bool
func (*RateLimitQuotaFilterConfig) HasFilterEnabled ¶
func (x *RateLimitQuotaFilterConfig) HasFilterEnabled() bool
func (*RateLimitQuotaFilterConfig) HasFilterEnforced ¶
func (x *RateLimitQuotaFilterConfig) HasFilterEnforced() bool
func (*RateLimitQuotaFilterConfig) HasRlqsServer ¶
func (x *RateLimitQuotaFilterConfig) HasRlqsServer() bool
func (*RateLimitQuotaFilterConfig) ProtoMessage ¶
func (*RateLimitQuotaFilterConfig) ProtoMessage()
func (*RateLimitQuotaFilterConfig) ProtoReflect ¶
func (x *RateLimitQuotaFilterConfig) ProtoReflect() protoreflect.Message
func (*RateLimitQuotaFilterConfig) Reset ¶
func (x *RateLimitQuotaFilterConfig) Reset()
func (*RateLimitQuotaFilterConfig) SetBucketMatchers ¶
func (x *RateLimitQuotaFilterConfig) SetBucketMatchers(v *v31.Matcher)
func (*RateLimitQuotaFilterConfig) SetDomain ¶
func (x *RateLimitQuotaFilterConfig) SetDomain(v string)
func (*RateLimitQuotaFilterConfig) SetFilterEnabled ¶
func (x *RateLimitQuotaFilterConfig) SetFilterEnabled(v *v3.RuntimeFractionalPercent)
func (*RateLimitQuotaFilterConfig) SetFilterEnforced ¶
func (x *RateLimitQuotaFilterConfig) SetFilterEnforced(v *v3.RuntimeFractionalPercent)
func (*RateLimitQuotaFilterConfig) SetRequestHeadersToAddWhenNotEnforced ¶
func (x *RateLimitQuotaFilterConfig) SetRequestHeadersToAddWhenNotEnforced(v []*v3.HeaderValueOption)
func (*RateLimitQuotaFilterConfig) SetRlqsServer ¶
func (x *RateLimitQuotaFilterConfig) SetRlqsServer(v *v3.GrpcService)
func (*RateLimitQuotaFilterConfig) String ¶
func (x *RateLimitQuotaFilterConfig) String() string
type RateLimitQuotaFilterConfig_builder ¶
type RateLimitQuotaFilterConfig_builder struct {
// Configures the gRPC Rate Limit Quota Service (RLQS) RateLimitQuotaService.
RlqsServer *v3.GrpcService
// The application domain to use when calling the service. This enables sharing the quota
// server between different applications without fear of overlap.
// E.g., "envoy".
Domain string
// The match tree to use for grouping incoming requests into buckets.
//
// Example:
//
// .. validated-code-block:: yaml
//
// :type-name: xds.type.matcher.v3.Matcher
//
// matcher_list:
// matchers:
// # Assign requests with header['env'] set to 'staging' to the bucket { name: 'staging' }
// - predicate:
// single_predicate:
// input:
// typed_config:
// '@type': type.googleapis.com/envoy.type.matcher.v3.HttpRequestHeaderMatchInput
// header_name: env
// value_match:
// exact: staging
// on_match:
// action:
// typed_config:
// '@type': type.googleapis.com/envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings
// bucket_id_builder:
// bucket_id_builder:
// name:
// string_value: staging
//
// # Assign requests with header['user_group'] set to 'admin' to the bucket { acl: 'admin_users' }
// - predicate:
// single_predicate:
// input:
// typed_config:
// '@type': type.googleapis.com/xds.type.matcher.v3.HttpAttributesCelMatchInput
// custom_match:
// typed_config:
// '@type': type.googleapis.com/xds.type.matcher.v3.CelMatcher
// expr_match:
// # Shortened for illustration purposes. Here should be parsed CEL expression:
// # request.headers['user_group'] == 'admin'
// parsed_expr: {}
// on_match:
// action:
// typed_config:
// '@type': type.googleapis.com/envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings
// bucket_id_builder:
// bucket_id_builder:
// acl:
// string_value: admin_users
//
// # Catch-all clause for the requests not matched by any of the matchers.
// # In this example, deny all requests.
// on_no_match:
// action:
// typed_config:
// '@type': type.googleapis.com/envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings
// no_assignment_behavior:
// fallback_rate_limit:
// blanket_rule: DENY_ALL
//
// .. attention::
//
// The first matched group wins. Once the request is matched into a bucket, matcher
// evaluation ends.
//
// Use “on_no_match“ field to assign the catch-all bucket. If a request is not matched
// into any bucket, and there's no “on_no_match“ field configured, the request will be
// ALLOWED by default. It will NOT be reported to the RLQS server.
//
// Refer to :ref:`Unified Matcher API <envoy_v3_api_msg_.xds.type.matcher.v3.Matcher>`
// documentation for more information on the matcher trees.
BucketMatchers *v31.Matcher
// If set, this will enable -- but not necessarily enforce -- the rate limit for the given
// fraction of requests.
//
// Defaults to 100% of requests.
FilterEnabled *v3.RuntimeFractionalPercent
// If set, this will enforce the rate limit decisions for the given fraction of requests.
// For requests that are not enforced the filter will still obtain the quota and include it
// in the load computation, however the request will always be allowed regardless of the outcome
// of quota application. This allows validation or testing of the rate limiting service
// infrastructure without disrupting existing traffic.
//
// Note: this only applies to the fraction of enabled requests.
//
// Defaults to 100% of requests.
FilterEnforced *v3.RuntimeFractionalPercent
// Specifies a list of HTTP headers that should be added to each request that
// has been rate limited and is also forwarded upstream. This can only occur when the
// filter is enabled but not enforced.
RequestHeadersToAddWhenNotEnforced []*v3.HeaderValueOption
// contains filtered or unexported fields
}
func (RateLimitQuotaFilterConfig_builder) Build ¶
func (b0 RateLimitQuotaFilterConfig_builder) Build() *RateLimitQuotaFilterConfig
type RateLimitQuotaOverride ¶
type RateLimitQuotaOverride struct {
// The application domain to use when calling the service. This enables sharing the quota
// server between different applications without fear of overlap.
// E.g., "envoy".
//
// If empty, inherits the value from the less specific definition.
Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"`
// The match tree to use for grouping incoming requests into buckets.
//
// If set, fully overrides the bucket matchers provided on the less specific definition.
// If not set, inherits the value from the less specific definition.
//
// See usage example: :ref:`RateLimitQuotaFilterConfig.bucket_matchers
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaFilterConfig.bucket_matchers>`.
BucketMatchers *v31.Matcher `protobuf:"bytes,2,opt,name=bucket_matchers,json=bucketMatchers,proto3" json:"bucket_matchers,omitempty"`
// contains filtered or unexported fields
}
Per-route and per-host configuration overrides. The more specific definition completely overrides the less specific definition.
func (*RateLimitQuotaOverride) ClearBucketMatchers ¶
func (x *RateLimitQuotaOverride) ClearBucketMatchers()
func (*RateLimitQuotaOverride) GetBucketMatchers ¶
func (x *RateLimitQuotaOverride) GetBucketMatchers() *v31.Matcher
func (*RateLimitQuotaOverride) GetDomain ¶
func (x *RateLimitQuotaOverride) GetDomain() string
func (*RateLimitQuotaOverride) HasBucketMatchers ¶
func (x *RateLimitQuotaOverride) HasBucketMatchers() bool
func (*RateLimitQuotaOverride) ProtoMessage ¶
func (*RateLimitQuotaOverride) ProtoMessage()
func (*RateLimitQuotaOverride) ProtoReflect ¶
func (x *RateLimitQuotaOverride) ProtoReflect() protoreflect.Message
func (*RateLimitQuotaOverride) Reset ¶
func (x *RateLimitQuotaOverride) Reset()
func (*RateLimitQuotaOverride) SetBucketMatchers ¶
func (x *RateLimitQuotaOverride) SetBucketMatchers(v *v31.Matcher)
func (*RateLimitQuotaOverride) SetDomain ¶
func (x *RateLimitQuotaOverride) SetDomain(v string)
func (*RateLimitQuotaOverride) String ¶
func (x *RateLimitQuotaOverride) String() string
type RateLimitQuotaOverride_builder ¶
type RateLimitQuotaOverride_builder struct {
// The application domain to use when calling the service. This enables sharing the quota
// server between different applications without fear of overlap.
// E.g., "envoy".
//
// If empty, inherits the value from the less specific definition.
Domain string
// The match tree to use for grouping incoming requests into buckets.
//
// If set, fully overrides the bucket matchers provided on the less specific definition.
// If not set, inherits the value from the less specific definition.
//
// See usage example: :ref:`RateLimitQuotaFilterConfig.bucket_matchers
// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaFilterConfig.bucket_matchers>`.
BucketMatchers *v31.Matcher
// contains filtered or unexported fields
}
func (RateLimitQuotaOverride_builder) Build ¶
func (b0 RateLimitQuotaOverride_builder) Build() *RateLimitQuotaOverride
Source Files
¶
- rate_limit_quota.pb.go