rate limit: add computed descriptors (#14448)

Signed-off-by: Kuat Yessenov <kuat@google.com>

Mirrored from https://github.com/envoyproxy/envoy @ 876a36368b0617b43977abfc37d2b5af05e7b1b2
pull/624/head
data-plane-api(Azure Pipelines) 4 years ago
parent b4060dfa14
commit 8c6115ddd1
  1. 1
      BUILD
  2. 5
      envoy/config/route/v3/route_components.proto
  3. 5
      envoy/config/route/v4alpha/route_components.proto
  4. 12
      envoy/extensions/rate_limit_descriptors/expr/v3/BUILD
  5. 41
      envoy/extensions/rate_limit_descriptors/expr/v3/expr.proto
  6. 1
      versioning/BUILD

@ -239,6 +239,7 @@ proto_library(
"//envoy/extensions/internal_redirect/previous_routes/v3:pkg", "//envoy/extensions/internal_redirect/previous_routes/v3:pkg",
"//envoy/extensions/internal_redirect/safe_cross_scheme/v3:pkg", "//envoy/extensions/internal_redirect/safe_cross_scheme/v3:pkg",
"//envoy/extensions/network/socket_interface/v3:pkg", "//envoy/extensions/network/socket_interface/v3:pkg",
"//envoy/extensions/rate_limit_descriptors/expr/v3:pkg",
"//envoy/extensions/retry/host/omit_host_metadata/v3:pkg", "//envoy/extensions/retry/host/omit_host_metadata/v3:pkg",
"//envoy/extensions/retry/priority/previous_priorities/v3:pkg", "//envoy/extensions/retry/priority/previous_priorities/v3:pkg",
"//envoy/extensions/stat_sinks/wasm/v3:pkg", "//envoy/extensions/stat_sinks/wasm/v3:pkg",

@ -1544,7 +1544,7 @@ message VirtualCluster {
message RateLimit { message RateLimit {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RateLimit"; option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RateLimit";
// [#next-free-field: 9] // [#next-free-field: 10]
message Action { message Action {
option (udpa.annotations.versioning).previous_message_type = option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.route.RateLimit.Action"; "envoy.api.v2.route.RateLimit.Action";
@ -1742,6 +1742,9 @@ message RateLimit {
// Rate limit on metadata. // Rate limit on metadata.
MetaData metadata = 8; MetaData metadata = 8;
// Rate limit descriptor extension. See the rate limit descriptor extensions documentation.
core.v3.TypedExtensionConfig extension = 9;
} }
} }

@ -1493,7 +1493,7 @@ message VirtualCluster {
message RateLimit { message RateLimit {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.route.v3.RateLimit"; option (udpa.annotations.versioning).previous_message_type = "envoy.config.route.v3.RateLimit";
// [#next-free-field: 9] // [#next-free-field: 10]
message Action { message Action {
option (udpa.annotations.versioning).previous_message_type = option (udpa.annotations.versioning).previous_message_type =
"envoy.config.route.v3.RateLimit.Action"; "envoy.config.route.v3.RateLimit.Action";
@ -1694,6 +1694,9 @@ message RateLimit {
// Rate limit on metadata. // Rate limit on metadata.
MetaData metadata = 8; MetaData metadata = 8;
// Rate limit descriptor extension. See the rate limit descriptor extensions documentation.
core.v4alpha.TypedExtensionConfig extension = 9;
} }
} }

@ -0,0 +1,12 @@
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"@com_github_cncf_udpa//udpa/annotations:pkg",
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto",
],
)

@ -0,0 +1,41 @@
syntax = "proto3";
package envoy.extensions.rate_limit_descriptors.expr.v3;
import "google/api/expr/v1alpha1/syntax.proto";
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.rate_limit_descriptors.expr.v3";
option java_outer_classname = "ExprProto";
option java_multiple_files = true;
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Rate limit descriptor expression]
// [#extension: envoy.rate_limit_descriptors.expr]
// The following descriptor entry is appended with a value computed
// from a symbolic Common Expression Language expression.
// See :ref:`attributes <arch_overview_attributes>` for the set of
// available attributes.
//
// .. code-block:: cpp
//
// ("<descriptor_key>", "<expression_value>")
message Descriptor {
// The key to use in the descriptor entry.
string descriptor_key = 1 [(validate.rules).string = {min_len: 1}];
// If set to true, Envoy skips the descriptor if the expression evaluates to an error.
// By default, the rate limit is not applied when an expression produces an error.
bool skip_if_error = 2;
oneof expr_specifier {
// Expression in a text form, e.g. "connection.requested_server_name".
string text = 3 [(validate.rules).string = {min_len: 1}];
// Parsed expression in AST form.
google.api.expr.v1alpha1.Expr parsed = 4;
}
}

@ -122,6 +122,7 @@ proto_library(
"//envoy/extensions/internal_redirect/previous_routes/v3:pkg", "//envoy/extensions/internal_redirect/previous_routes/v3:pkg",
"//envoy/extensions/internal_redirect/safe_cross_scheme/v3:pkg", "//envoy/extensions/internal_redirect/safe_cross_scheme/v3:pkg",
"//envoy/extensions/network/socket_interface/v3:pkg", "//envoy/extensions/network/socket_interface/v3:pkg",
"//envoy/extensions/rate_limit_descriptors/expr/v3:pkg",
"//envoy/extensions/retry/host/omit_host_metadata/v3:pkg", "//envoy/extensions/retry/host/omit_host_metadata/v3:pkg",
"//envoy/extensions/retry/priority/previous_priorities/v3:pkg", "//envoy/extensions/retry/priority/previous_priorities/v3:pkg",
"//envoy/extensions/stat_sinks/wasm/v3:pkg", "//envoy/extensions/stat_sinks/wasm/v3:pkg",

Loading…
Cancel
Save