Class RateLimitQuotaFilterConfig

  • All Implemented Interfaces:
    com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, RateLimitQuotaFilterConfigOrBuilder, java.io.Serializable

    public final class RateLimitQuotaFilterConfig
    extends com.google.protobuf.GeneratedMessage
    implements RateLimitQuotaFilterConfigOrBuilder
     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]
     
    Protobuf type envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaFilterConfig
    See Also:
    Serialized Form
    • Constructor Detail

      • RateLimitQuotaFilterConfig

        private RateLimitQuotaFilterConfig​(com.google.protobuf.GeneratedMessage.Builder<?> builder)
      • RateLimitQuotaFilterConfig

        private RateLimitQuotaFilterConfig()
    • Method Detail

      • getDescriptor

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
      • internalGetFieldAccessorTable

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()
        Specified by:
        internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessage
      • hasRlqsServer

        public boolean hasRlqsServer()
         Configures the gRPC Rate Limit Quota Service (RLQS) RateLimitQuotaService.
         
        .envoy.config.core.v3.GrpcService rlqs_server = 1 [(.validate.rules) = { ... }
        Specified by:
        hasRlqsServer in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        Whether the rlqsServer field is set.
      • getRlqsServer

        public GrpcService getRlqsServer()
         Configures the gRPC Rate Limit Quota Service (RLQS) RateLimitQuotaService.
         
        .envoy.config.core.v3.GrpcService rlqs_server = 1 [(.validate.rules) = { ... }
        Specified by:
        getRlqsServer in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        The rlqsServer.
      • getDomain

        public java.lang.String getDomain()
         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".
         
        string domain = 2 [(.validate.rules) = { ... }
        Specified by:
        getDomain in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        The domain.
      • getDomainBytes

        public com.google.protobuf.ByteString getDomainBytes()
         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".
         
        string domain = 2 [(.validate.rules) = { ... }
        Specified by:
        getDomainBytes in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        The bytes for domain.
      • hasBucketMatchers

        public boolean hasBucketMatchers()
         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.
         
        .xds.type.matcher.v3.Matcher bucket_matchers = 3 [(.validate.rules) = { ... }
        Specified by:
        hasBucketMatchers in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        Whether the bucketMatchers field is set.
      • getBucketMatchers

        public Matcher getBucketMatchers()
         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.
         
        .xds.type.matcher.v3.Matcher bucket_matchers = 3 [(.validate.rules) = { ... }
        Specified by:
        getBucketMatchers in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        The bucketMatchers.
      • getBucketMatchersOrBuilder

        public MatcherOrBuilder getBucketMatchersOrBuilder()
         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.
         
        .xds.type.matcher.v3.Matcher bucket_matchers = 3 [(.validate.rules) = { ... }
        Specified by:
        getBucketMatchersOrBuilder in interface RateLimitQuotaFilterConfigOrBuilder
      • hasFilterEnabled

        public boolean hasFilterEnabled()
         If set, this will enable -- but not necessarily enforce -- the rate limit for the given
         fraction of requests.
        
         Defaults to 100% of requests.
         
        .envoy.config.core.v3.RuntimeFractionalPercent filter_enabled = 4;
        Specified by:
        hasFilterEnabled in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        Whether the filterEnabled field is set.
      • getFilterEnabled

        public RuntimeFractionalPercent getFilterEnabled()
         If set, this will enable -- but not necessarily enforce -- the rate limit for the given
         fraction of requests.
        
         Defaults to 100% of requests.
         
        .envoy.config.core.v3.RuntimeFractionalPercent filter_enabled = 4;
        Specified by:
        getFilterEnabled in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        The filterEnabled.
      • hasFilterEnforced

        public boolean hasFilterEnforced()
         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.
         
        .envoy.config.core.v3.RuntimeFractionalPercent filter_enforced = 5;
        Specified by:
        hasFilterEnforced in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        Whether the filterEnforced field is set.
      • getFilterEnforced

        public RuntimeFractionalPercent getFilterEnforced()
         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.
         
        .envoy.config.core.v3.RuntimeFractionalPercent filter_enforced = 5;
        Specified by:
        getFilterEnforced in interface RateLimitQuotaFilterConfigOrBuilder
        Returns:
        The filterEnforced.
      • getFilterEnforcedOrBuilder

        public RuntimeFractionalPercentOrBuilder getFilterEnforcedOrBuilder()
         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.
         
        .envoy.config.core.v3.RuntimeFractionalPercent filter_enforced = 5;
        Specified by:
        getFilterEnforcedOrBuilder in interface RateLimitQuotaFilterConfigOrBuilder
      • getRequestHeadersToAddWhenNotEnforcedList

        public java.util.List<HeaderValueOption> getRequestHeadersToAddWhenNotEnforcedList()
         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.
         
        repeated .envoy.config.core.v3.HeaderValueOption request_headers_to_add_when_not_enforced = 6 [(.validate.rules) = { ... }
        Specified by:
        getRequestHeadersToAddWhenNotEnforcedList in interface RateLimitQuotaFilterConfigOrBuilder
      • getRequestHeadersToAddWhenNotEnforcedOrBuilderList

        public java.util.List<? extends HeaderValueOptionOrBuilder> getRequestHeadersToAddWhenNotEnforcedOrBuilderList()
         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.
         
        repeated .envoy.config.core.v3.HeaderValueOption request_headers_to_add_when_not_enforced = 6 [(.validate.rules) = { ... }
        Specified by:
        getRequestHeadersToAddWhenNotEnforcedOrBuilderList in interface RateLimitQuotaFilterConfigOrBuilder
      • getRequestHeadersToAddWhenNotEnforcedCount

        public int getRequestHeadersToAddWhenNotEnforcedCount()
         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.
         
        repeated .envoy.config.core.v3.HeaderValueOption request_headers_to_add_when_not_enforced = 6 [(.validate.rules) = { ... }
        Specified by:
        getRequestHeadersToAddWhenNotEnforcedCount in interface RateLimitQuotaFilterConfigOrBuilder
      • getRequestHeadersToAddWhenNotEnforced

        public HeaderValueOption getRequestHeadersToAddWhenNotEnforced​(int index)
         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.
         
        repeated .envoy.config.core.v3.HeaderValueOption request_headers_to_add_when_not_enforced = 6 [(.validate.rules) = { ... }
        Specified by:
        getRequestHeadersToAddWhenNotEnforced in interface RateLimitQuotaFilterConfigOrBuilder
      • getRequestHeadersToAddWhenNotEnforcedOrBuilder

        public HeaderValueOptionOrBuilder getRequestHeadersToAddWhenNotEnforcedOrBuilder​(int index)
         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.
         
        repeated .envoy.config.core.v3.HeaderValueOption request_headers_to_add_when_not_enforced = 6 [(.validate.rules) = { ... }
        Specified by:
        getRequestHeadersToAddWhenNotEnforcedOrBuilder in interface RateLimitQuotaFilterConfigOrBuilder
      • isInitialized

        public final boolean isInitialized()
        Specified by:
        isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
        Overrides:
        isInitialized in class com.google.protobuf.GeneratedMessage
      • writeTo

        public void writeTo​(com.google.protobuf.CodedOutputStream output)
                     throws java.io.IOException
        Specified by:
        writeTo in interface com.google.protobuf.MessageLite
        Overrides:
        writeTo in class com.google.protobuf.GeneratedMessage
        Throws:
        java.io.IOException
      • getSerializedSize

        public int getSerializedSize()
        Specified by:
        getSerializedSize in interface com.google.protobuf.MessageLite
        Overrides:
        getSerializedSize in class com.google.protobuf.GeneratedMessage
      • equals

        public boolean equals​(java.lang.Object obj)
        Specified by:
        equals in interface com.google.protobuf.Message
        Overrides:
        equals in class com.google.protobuf.AbstractMessage
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface com.google.protobuf.Message
        Overrides:
        hashCode in class com.google.protobuf.AbstractMessage
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(java.nio.ByteBuffer data)
                                                    throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(java.nio.ByteBuffer data,
                                                           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                    throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(com.google.protobuf.ByteString data)
                                                    throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(com.google.protobuf.ByteString data,
                                                           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                    throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(byte[] data)
                                                    throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(byte[] data,
                                                           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                    throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(java.io.InputStream input)
                                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(java.io.InputStream input,
                                                           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedFrom

        public static RateLimitQuotaFilterConfig parseDelimitedFrom​(java.io.InputStream input)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedFrom

        public static RateLimitQuotaFilterConfig parseDelimitedFrom​(java.io.InputStream input,
                                                                    com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(com.google.protobuf.CodedInputStream input)
                                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static RateLimitQuotaFilterConfig parseFrom​(com.google.protobuf.CodedInputStream input,
                                                           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • newBuilderForType

        public RateLimitQuotaFilterConfig.Builder newBuilderForType()
        Specified by:
        newBuilderForType in interface com.google.protobuf.Message
        Specified by:
        newBuilderForType in interface com.google.protobuf.MessageLite
      • toBuilder

        public RateLimitQuotaFilterConfig.Builder toBuilder()
        Specified by:
        toBuilder in interface com.google.protobuf.Message
        Specified by:
        toBuilder in interface com.google.protobuf.MessageLite
      • newBuilderForType

        protected RateLimitQuotaFilterConfig.Builder newBuilderForType​(com.google.protobuf.AbstractMessage.BuilderParent parent)
        Overrides:
        newBuilderForType in class com.google.protobuf.AbstractMessage
      • getParserForType

        public com.google.protobuf.Parser<RateLimitQuotaFilterConfig> getParserForType()
        Specified by:
        getParserForType in interface com.google.protobuf.Message
        Specified by:
        getParserForType in interface com.google.protobuf.MessageLite
        Overrides:
        getParserForType in class com.google.protobuf.GeneratedMessage
      • getDefaultInstanceForType

        public RateLimitQuotaFilterConfig getDefaultInstanceForType()
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder