Class RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction

java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessage
io.envoyproxy.envoy.service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction
All Implemented Interfaces:
com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, RateLimitQuotaResponse.BucketAction.QuotaAssignmentActionOrBuilder, Serializable
Enclosing class:
RateLimitQuotaResponse.BucketAction

public static final class RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction extends com.google.protobuf.GeneratedMessage implements RateLimitQuotaResponse.BucketAction.QuotaAssignmentActionOrBuilder
Quota assignment for the bucket. Configures the rate limiting strategy and the duration
for the given :ref:`bucket_id
<envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.bucket_id>`.

**Applying the first assignment to the bucket**

Once the data plane receives the ``QuotaAssignmentAction``, it must send the current usage
report for the bucket, and start rate limiting requests matched into the bucket
using the strategy configured in the :ref:`rate_limit_strategy
<envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction.rate_limit_strategy>`
field. The assignment becomes bucket's ``active`` assignment.

**Expiring the assignment**

The duration of the assignment defined in the :ref:`assignment_time_to_live
<envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction.assignment_time_to_live>`
field. When the duration runs off, the assignment is ``expired``, and no longer ``active``.
The data plane should stop applying the rate limiting strategy to the bucket, and transition
the bucket to the "expired assignment" state. This activates the behavior configured in the
:ref:`expired_assignment_behavior <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.expired_assignment_behavior>`
field.

**Replacing the assignment**

* If the rate limiting strategy is different from bucket's ``active`` assignment, or
the current bucket assignment is ``expired``, the data plane must immediately
end the current assignment, report the bucket usage, and apply the new assignment.
The new assignment becomes bucket's ``active`` assignment.
* If the rate limiting strategy is the same as the bucket's ``active`` (not ``expired``)
assignment, the data plane should extend the duration of the ``active`` assignment
for the duration of the new assignment provided in the :ref:`assignment_time_to_live
<envoy_v3_api_field_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction.assignment_time_to_live>`
field. The ``active`` assignment is considered unchanged.
Protobuf type envoy.service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction
See Also:
  • Field Details

  • Constructor Details

    • QuotaAssignmentAction

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

      private QuotaAssignmentAction()
  • Method Details

    • getDescriptor

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

      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
      Specified by:
      getDescriptorForType in interface com.google.protobuf.MessageOrBuilder
      Overrides:
      getDescriptorForType in class com.google.protobuf.GeneratedMessage
    • internalGetFieldAccessorTable

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

      public boolean hasAssignmentTimeToLive()
      A duration after which the assignment is be considered ``expired``. The process of the
      expiration is described :ref:`above
      <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction>`.
      
      * If unset, the assignment has no expiration date.
      * If set to ``0``, the assignment expires immediately, forcing the client into the
      :ref:`"expired assignment"
      <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>`
      state. This may be used by the RLQS server in cases when it needs clients to proactively
      fall back to the pre-configured :ref:`ExpiredAssignmentBehavior
      <envoy_v3_api_msg_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior>`,
      f.e. before the server going into restart.
      
      .. attention::
      Note that :ref:`expiring
      <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction>`
      the assignment is not the same as :ref:`abandoning
      <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
      the assignment. While expiring the assignment just transitions the bucket to
      the "expired assignment" state; abandoning the assignment completely erases
      the bucket from the data plane memory, and stops the usage reports.
      
      .google.protobuf.Duration assignment_time_to_live = 2 [(.validate.rules) = { ... }
      Specified by:
      hasAssignmentTimeToLive in interface RateLimitQuotaResponse.BucketAction.QuotaAssignmentActionOrBuilder
      Returns:
      Whether the assignmentTimeToLive field is set.
    • getAssignmentTimeToLive

      public com.google.protobuf.Duration getAssignmentTimeToLive()
      A duration after which the assignment is be considered ``expired``. The process of the
      expiration is described :ref:`above
      <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction>`.
      
      * If unset, the assignment has no expiration date.
      * If set to ``0``, the assignment expires immediately, forcing the client into the
      :ref:`"expired assignment"
      <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>`
      state. This may be used by the RLQS server in cases when it needs clients to proactively
      fall back to the pre-configured :ref:`ExpiredAssignmentBehavior
      <envoy_v3_api_msg_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior>`,
      f.e. before the server going into restart.
      
      .. attention::
      Note that :ref:`expiring
      <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction>`
      the assignment is not the same as :ref:`abandoning
      <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
      the assignment. While expiring the assignment just transitions the bucket to
      the "expired assignment" state; abandoning the assignment completely erases
      the bucket from the data plane memory, and stops the usage reports.
      
      .google.protobuf.Duration assignment_time_to_live = 2 [(.validate.rules) = { ... }
      Specified by:
      getAssignmentTimeToLive in interface RateLimitQuotaResponse.BucketAction.QuotaAssignmentActionOrBuilder
      Returns:
      The assignmentTimeToLive.
    • getAssignmentTimeToLiveOrBuilder

      public com.google.protobuf.DurationOrBuilder getAssignmentTimeToLiveOrBuilder()
      A duration after which the assignment is be considered ``expired``. The process of the
      expiration is described :ref:`above
      <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction>`.
      
      * If unset, the assignment has no expiration date.
      * If set to ``0``, the assignment expires immediately, forcing the client into the
      :ref:`"expired assignment"
      <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>`
      state. This may be used by the RLQS server in cases when it needs clients to proactively
      fall back to the pre-configured :ref:`ExpiredAssignmentBehavior
      <envoy_v3_api_msg_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior>`,
      f.e. before the server going into restart.
      
      .. attention::
      Note that :ref:`expiring
      <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction>`
      the assignment is not the same as :ref:`abandoning
      <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
      the assignment. While expiring the assignment just transitions the bucket to
      the "expired assignment" state; abandoning the assignment completely erases
      the bucket from the data plane memory, and stops the usage reports.
      
      .google.protobuf.Duration assignment_time_to_live = 2 [(.validate.rules) = { ... }
      Specified by:
      getAssignmentTimeToLiveOrBuilder in interface RateLimitQuotaResponse.BucketAction.QuotaAssignmentActionOrBuilder
    • hasRateLimitStrategy

      public boolean hasRateLimitStrategy()
      Configures the local rate limiter for the request matched to the bucket.
      If not set, allow all requests.
      
      .envoy.type.v3.RateLimitStrategy rate_limit_strategy = 3;
      Specified by:
      hasRateLimitStrategy in interface RateLimitQuotaResponse.BucketAction.QuotaAssignmentActionOrBuilder
      Returns:
      Whether the rateLimitStrategy field is set.
    • getRateLimitStrategy

      public RateLimitStrategy getRateLimitStrategy()
      Configures the local rate limiter for the request matched to the bucket.
      If not set, allow all requests.
      
      .envoy.type.v3.RateLimitStrategy rate_limit_strategy = 3;
      Specified by:
      getRateLimitStrategy in interface RateLimitQuotaResponse.BucketAction.QuotaAssignmentActionOrBuilder
      Returns:
      The rateLimitStrategy.
    • getRateLimitStrategyOrBuilder

      public RateLimitStrategyOrBuilder getRateLimitStrategyOrBuilder()
      Configures the local rate limiter for the request matched to the bucket.
      If not set, allow all requests.
      
      .envoy.type.v3.RateLimitStrategy rate_limit_strategy = 3;
      Specified by:
      getRateLimitStrategyOrBuilder in interface RateLimitQuotaResponse.BucketAction.QuotaAssignmentActionOrBuilder
    • 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 IOException
      Specified by:
      writeTo in interface com.google.protobuf.MessageLite
      Overrides:
      writeTo in class com.google.protobuf.GeneratedMessage
      Throws:
      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(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 RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction parseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

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

    • parseFrom

      public static RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      Throws:
      IOException
    • parseDelimitedFrom

      public static RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseFrom

      public static RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction parseFrom(com.google.protobuf.CodedInputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • newBuilderForType

      Specified by:
      newBuilderForType in interface com.google.protobuf.Message
      Specified by:
      newBuilderForType in interface com.google.protobuf.MessageLite
    • newBuilder

    • newBuilder

    • toBuilder

      Specified by:
      toBuilder in interface com.google.protobuf.Message
      Specified by:
      toBuilder in interface com.google.protobuf.MessageLite
    • newBuilderForType

      protected RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction.Builder newBuilderForType(com.google.protobuf.AbstractMessage.BuilderParent parent)
      Overrides:
      newBuilderForType in class com.google.protobuf.AbstractMessage
    • getDefaultInstance

    • parser

      public static com.google.protobuf.Parser<RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction> parser()
    • getParserForType

      public com.google.protobuf.Parser<RateLimitQuotaResponse.BucketAction.QuotaAssignmentAction> 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

      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder