async-grpc-xds 0.0.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/async/grpc/xds/ads_stream.rb +4 -0
- data/lib/async/grpc/xds/client_side_weighted_round_robin.rb +53 -0
- data/lib/async/grpc/xds/cluster.rb +71 -0
- data/lib/async/grpc/xds/control_plane.rb +47 -6
- data/lib/async/grpc/xds/discovery_client.rb +12 -2
- data/lib/async/grpc/xds/endpoint.rb +102 -0
- data/lib/async/grpc/xds/resource_cache.rb +1 -0
- data/lib/async/grpc/xds/resources.rb +9 -0
- data/lib/async/grpc/xds/server.rb +7 -0
- data/lib/async/grpc/xds/service.rb +24 -0
- data/lib/async/grpc/xds/version.rb +4 -1
- data/lib/async/grpc/xds.rb +3 -1
- data/lib/envoy/config/common/mutation_rules/v3/mutation_rules_pb.rb +33 -0
- data/lib/envoy/config/route/v3/route_components_pb.rb +108 -0
- data/lib/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin_pb.rb +30 -0
- data/lib/envoy/extensions/load_balancing_policies/common/v3/common_pb.rb +41 -0
- data/lib/envoy/type/tracing/v3/custom_tag_pb.rb +31 -0
- data/lib/xds/data/orca/v3/orca_load_report_pb.rb +24 -0
- data/lib/xds/service/orca/v3/open_rca_service.rb +23 -0
- data/lib/xds/service/orca/v3/orca_pb.rb +25 -0
- data/proto/envoy/config/common/mutation_rules/v3/mutation_rules.proto +113 -0
- data/proto/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto +96 -0
- data/proto/envoy/extensions/load_balancing_policies/common/v3/common.proto +188 -0
- data/proto/envoy/type/tracing/v3/custom_tag.proto +109 -0
- data/proto/readme.md +3 -0
- data/proto/xds/data/orca/v3/orca_load_report.proto +58 -0
- data/proto/xds/service/orca/v3/orca.proto +36 -0
- data/readme.md +16 -2
- data/releases.md +12 -0
- data/xds/readme.md +2 -29
- data/xds/test/async/grpc/xds/control_plane.rb +5 -6
- data.tar.gz.sig +0 -0
- metadata +18 -2
- metadata.gz.sig +0 -0
- data/lib/async/grpc/xds/resource_builder.rb +0 -138
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
4
|
+
# source: envoy/config/route/v3/route_components.proto
|
|
5
|
+
|
|
6
|
+
require "google/protobuf"
|
|
7
|
+
|
|
8
|
+
require "envoy/config/common/mutation_rules/v3/mutation_rules_pb"
|
|
9
|
+
require "envoy/config/core/v3/base_pb"
|
|
10
|
+
require "envoy/config/core/v3/extension_pb"
|
|
11
|
+
require "envoy/config/core/v3/proxy_protocol_pb"
|
|
12
|
+
require "envoy/config/core/v3/substitution_format_string_pb"
|
|
13
|
+
require "envoy/type/matcher/v3/filter_state_pb"
|
|
14
|
+
require "envoy/type/matcher/v3/metadata_pb"
|
|
15
|
+
require "envoy/type/matcher/v3/regex_pb"
|
|
16
|
+
require "envoy/type/matcher/v3/string_pb"
|
|
17
|
+
require "envoy/type/metadata/v3/metadata_pb"
|
|
18
|
+
require "envoy/type/tracing/v3/custom_tag_pb"
|
|
19
|
+
require "envoy/type/v3/percent_pb"
|
|
20
|
+
require "envoy/type/v3/range_pb"
|
|
21
|
+
require "google/protobuf/any_pb"
|
|
22
|
+
require "google/protobuf/duration_pb"
|
|
23
|
+
require "google/protobuf/wrappers_pb"
|
|
24
|
+
require "xds/type/matcher/v3/matcher_pb"
|
|
25
|
+
require "envoy/annotations/deprecation_pb"
|
|
26
|
+
require "udpa/annotations/migrate_pb"
|
|
27
|
+
require "udpa/annotations/status_pb"
|
|
28
|
+
require "udpa/annotations/versioning_pb"
|
|
29
|
+
require "validate/validate_pb"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
descriptor_data = "\n,envoy/config/route/v3/route_components.proto\x12\x15\x65nvoy.config.route.v3\x1a:envoy/config/common/mutation_rules/v3/mutation_rules.proto\x1a\x1f\x65nvoy/config/core/v3/base.proto\x1a$envoy/config/core/v3/extension.proto\x1a)envoy/config/core/v3/proxy_protocol.proto\x1a\x35\x65nvoy/config/core/v3/substitution_format_string.proto\x1a(envoy/type/matcher/v3/filter_state.proto\x1a$envoy/type/matcher/v3/metadata.proto\x1a!envoy/type/matcher/v3/regex.proto\x1a\"envoy/type/matcher/v3/string.proto\x1a%envoy/type/metadata/v3/metadata.proto\x1a&envoy/type/tracing/v3/custom_tag.proto\x1a\x1b\x65nvoy/type/v3/percent.proto\x1a\x19\x65nvoy/type/v3/range.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a!xds/type/matcher/v3/matcher.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1eudpa/annotations/migrate.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\x81\r\n\x0bVirtualHost\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12#\n\x07\x64omains\x18\x02 \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\x08\x01\"\x08r\x06\xc0\x01\x02\xc8\x01\x00\x12\x45\n\x06routes\x18\x03 \x03(\x0b\x32\x1c.envoy.config.route.v3.RouteB\x17\xf2\x98\xfe\x8f\x05\x11\x12\x0froute_selection\x12\x46\n\x07matcher\x18\x15 \x01(\x0b\x32\x1c.xds.type.matcher.v3.MatcherB\x17\xf2\x98\xfe\x8f\x05\x11\x12\x0froute_selection\x12T\n\x0brequire_tls\x18\x04 \x01(\x0e\x32\x35.envoy.config.route.v3.VirtualHost.TlsRequirementTypeB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12?\n\x10virtual_clusters\x18\x05 \x03(\x0b\x32%.envoy.config.route.v3.VirtualCluster\x12\x35\n\x0brate_limits\x18\x06 \x03(\x0b\x32 .envoy.config.route.v3.RateLimit\x12R\n\x16request_headers_to_add\x18\x07 \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x35\n\x19request_headers_to_remove\x18\r \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\"\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12S\n\x17response_headers_to_add\x18\n \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x36\n\x1aresponse_headers_to_remove\x18\x0b \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\"\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12<\n\x04\x63ors\x18\x08 \x01(\x0b\x32!.envoy.config.route.v3.CorsPolicyB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12]\n\x17typed_per_filter_config\x18\x0f \x03(\x0b\x32<.envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntry\x12%\n\x1dinclude_request_attempt_count\x18\x0e \x01(\x08\x12)\n!include_attempt_count_in_response\x18\x13 \x01(\x08\x12\x38\n\x0cretry_policy\x18\x10 \x01(\x0b\x32\".envoy.config.route.v3.RetryPolicy\x12\x37\n\x19retry_policy_typed_config\x18\x14 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x38\n\x0chedge_policy\x18\x11 \x01(\x0b\x32\".envoy.config.route.v3.HedgePolicy\x12\'\n\x1finclude_is_timeout_retry_header\x18\x17 \x01(\x08\x12Q\n\x1eper_request_buffer_limit_bytes\x18\x12 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12I\n\x19request_body_buffer_limit\x18\x19 \x01(\x0b\x32\x1c.google.protobuf.UInt64ValueB\x08\xfa\x42\x05\x8a\x01\x02\x10\x00\x12W\n\x17request_mirror_policies\x18\x16 \x03(\x0b\x32\x36.envoy.config.route.v3.RouteAction.RequestMirrorPolicy\x12\x30\n\x08metadata\x18\x18 \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x1aQ\n\x19TypedPerFilterConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01\":\n\x12TlsRequirementType\x12\x08\n\x04NONE\x10\x00\x12\x11\n\rEXTERNAL_ONLY\x10\x01\x12\x07\n\x03\x41LL\x10\x02:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.route.VirtualHostJ\x04\x08\t\x10\nJ\x04\x08\x0c\x10\rR\x11per_filter_config\"\\\n\x0c\x46ilterAction\x12$\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32\x14.google.protobuf.Any:&\x9a\xc5\x88\x1e!\n\x1f\x65nvoy.api.v2.route.FilterAction\"9\n\tRouteList\x12,\n\x06routes\x18\x01 \x03(\x0b\x32\x1c.envoy.config.route.v3.Route\"\xe8\t\n\x05Route\x12\x0c\n\x04name\x18\x0e \x01(\t\x12:\n\x05match\x18\x01 \x01(\x0b\x32!.envoy.config.route.v3.RouteMatchB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x33\n\x05route\x18\x02 \x01(\x0b\x32\".envoy.config.route.v3.RouteActionH\x00\x12\x39\n\x08redirect\x18\x03 \x01(\x0b\x32%.envoy.config.route.v3.RedirectActionH\x00\x12\x46\n\x0f\x64irect_response\x18\x07 \x01(\x0b\x32+.envoy.config.route.v3.DirectResponseActionH\x00\x12<\n\rfilter_action\x18\x11 \x01(\x0b\x32#.envoy.config.route.v3.FilterActionH\x00\x12K\n\x15non_forwarding_action\x18\x12 \x01(\x0b\x32*.envoy.config.route.v3.NonForwardingActionH\x00\x12\x30\n\x08metadata\x18\x04 \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x12\x33\n\tdecorator\x18\x05 \x01(\x0b\x32 .envoy.config.route.v3.Decorator\x12W\n\x17typed_per_filter_config\x18\r \x03(\x0b\x32\x36.envoy.config.route.v3.Route.TypedPerFilterConfigEntry\x12R\n\x16request_headers_to_add\x18\t \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x35\n\x19request_headers_to_remove\x18\x0c \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\"\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12S\n\x17response_headers_to_add\x18\n \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x36\n\x1aresponse_headers_to_remove\x18\x0b \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\"\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12/\n\x07tracing\x18\x0f \x01(\x0b\x32\x1e.envoy.config.route.v3.Tracing\x12Q\n\x1eper_request_buffer_limit_bytes\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x13\n\x0bstat_prefix\x18\x13 \x01(\t\x12?\n\x19request_body_buffer_limit\x18\x14 \x01(\x0b\x32\x1c.google.protobuf.UInt64Value\x1aQ\n\x19TypedPerFilterConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01:\x1f\x9a\xc5\x88\x1e\x1a\n\x18\x65nvoy.api.v2.route.RouteB\r\n\x06\x61\x63tion\x12\x03\xf8\x42\x01J\x04\x08\x06\x10\x07J\x04\x08\x08\x10\tR\x11per_filter_config\"\xb6\t\n\x0fWeightedCluster\x12P\n\x08\x63lusters\x18\x01 \x03(\x0b\x32\x34.envoy.config.route.v3.WeightedCluster.ClusterWeightB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12?\n\x0ctotal_weight\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x1a\n\x12runtime_key_prefix\x18\x02 \x01(\t\x12\"\n\x0bheader_name\x18\x04 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00H\x00\x12\x35\n\x0fuse_hash_policy\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueH\x00\x1a\xd3\x06\n\rClusterWeight\x12\'\n\x04name\x18\x01 \x01(\tB\x19\xf2\x98\xfe\x8f\x05\x13\x12\x11\x63luster_specifier\x12<\n\x0e\x63luster_header\x18\x0c \x01(\tB$\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00\xf2\x98\xfe\x8f\x05\x13\x12\x11\x63luster_specifier\x12,\n\x06weight\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x36\n\x0emetadata_match\x18\x03 \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x12R\n\x16request_headers_to_add\x18\x04 \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x33\n\x19request_headers_to_remove\x18\t \x03(\tB\x10\xfa\x42\r\x92\x01\n\"\x08r\x06\xc0\x01\x01\xc8\x01\x00\x12S\n\x17response_headers_to_add\x18\x05 \x03(\x0b\x32\'.envoy.config.core.v3.HeaderValueOptionB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12\x34\n\x1aresponse_headers_to_remove\x18\x06 \x03(\tB\x10\xfa\x42\r\x92\x01\n\"\x08r\x06\xc0\x01\x01\xc8\x01\x00\x12o\n\x17typed_per_filter_config\x18\n \x03(\x0b\x32N.envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry\x12+\n\x14host_rewrite_literal\x18\x0b \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00H\x00\x1aQ\n\x19TypedPerFilterConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01:7\x9a\xc5\x88\x1e\x32\n0envoy.api.v2.route.WeightedCluster.ClusterWeightB\x18\n\x16host_rewrite_specifierJ\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tR\x11per_filter_config:)\x9a\xc5\x88\x1e$\n\"envoy.api.v2.route.WeightedClusterB\x18\n\x16random_value_specifier\"v\n\x16\x43lusterSpecifierPlugin\x12G\n\textension\x18\x01 \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfigB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x13\n\x0bis_optional\x18\x02 \x01(\x08\"\xfb\t\n\nRouteMatch\x12\x10\n\x06prefix\x18\x01 \x01(\tH\x00\x12\x0e\n\x04path\x18\x02 \x01(\tH\x00\x12\x43\n\nsafe_regex\x18\n \x01(\x0b\x32#.envoy.type.matcher.v3.RegexMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00\x12K\n\x0f\x63onnect_matcher\x18\x0c \x01(\x0b\x32\x30.envoy.config.route.v3.RouteMatch.ConnectMatcherH\x00\x12\x36\n\x15path_separated_prefix\x18\x0e \x01(\tB\x15\xfa\x42\x12r\x10\x32\x0e^[^?#]+[^?#/]$H\x00\x12G\n\x11path_match_policy\x18\x0f \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfigH\x00\x12\x32\n\x0e\x63\x61se_sensitive\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12H\n\x10runtime_fraction\x18\t \x01(\x0b\x32..envoy.config.core.v3.RuntimeFractionalPercent\x12\x35\n\x07headers\x18\x06 \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcher\x12\x46\n\x10query_parameters\x18\x07 \x03(\x0b\x32,.envoy.config.route.v3.QueryParameterMatcher\x12\x35\n\x07\x63ookies\x18\x11 \x03(\x0b\x32$.envoy.config.route.v3.CookieMatcher\x12\x45\n\x04grpc\x18\x08 \x01(\x0b\x32\x37.envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions\x12M\n\x0btls_context\x18\x0b \x01(\x0b\x32\x38.envoy.config.route.v3.RouteMatch.TlsContextMatchOptions\x12@\n\x10\x64ynamic_metadata\x18\r \x03(\x0b\x32&.envoy.type.matcher.v3.MetadataMatcher\x12?\n\x0c\x66ilter_state\x18\x10 \x03(\x0b\x32).envoy.type.matcher.v3.FilterStateMatcher\x1aS\n\x15GrpcRouteMatchOptions::\x9a\xc5\x88\x1e\x35\n3envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions\x1a\xb3\x01\n\x16TlsContextMatchOptions\x12-\n\tpresented\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12-\n\tvalidated\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue:;\x9a\xc5\x88\x1e\x36\n4envoy.api.v2.route.RouteMatch.TlsContextMatchOptions\x1a\x10\n\x0e\x43onnectMatcher:$\x9a\xc5\x88\x1e\x1f\n\x1d\x65nvoy.api.v2.route.RouteMatchB\x15\n\x0epath_specifier\x12\x03\xf8\x42\x01J\x04\x08\x05\x10\x06J\x04\x08\x03\x10\x04R\x05regex\"\xf4\x04\n\nCorsPolicy\x12G\n\x19\x61llow_origin_string_match\x18\x0b \x03(\x0b\x32$.envoy.type.matcher.v3.StringMatcher\x12\x15\n\rallow_methods\x18\x02 \x01(\t\x12\x15\n\rallow_headers\x18\x03 \x01(\t\x12\x16\n\x0e\x65xpose_headers\x18\x04 \x01(\t\x12\x0f\n\x07max_age\x18\x05 \x01(\t\x12\x35\n\x11\x61llow_credentials\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12H\n\x0e\x66ilter_enabled\x18\t \x01(\x0b\x32..envoy.config.core.v3.RuntimeFractionalPercentH\x00\x12\x46\n\x0eshadow_enabled\x18\n \x01(\x0b\x32..envoy.config.core.v3.RuntimeFractionalPercent\x12@\n\x1c\x61llow_private_network_access\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x43\n\x1f\x66orward_not_matching_preflights\x18\r \x01(\x0b\x32\x1a.google.protobuf.BoolValue:$\x9a\xc5\x88\x1e\x1f\n\x1d\x65nvoy.api.v2.route.CorsPolicyB\x13\n\x11\x65nabled_specifierJ\x04\x08\x01\x10\x02J\x04\x08\x08\x10\tJ\x04\x08\x07\x10\x08R\x0c\x61llow_originR\x12\x61llow_origin_regexR\x07\x65nabled\"\xb7\'\n\x0bRouteAction\x12\x1a\n\x07\x63luster\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\'\n\x0e\x63luster_header\x18\x02 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00H\x00\x12\x43\n\x11weighted_clusters\x18\x03 \x01(\x0b\x32&.envoy.config.route.v3.WeightedClusterH\x00\x12\"\n\x18\x63luster_specifier_plugin\x18% \x01(\tH\x00\x12X\n\x1finline_cluster_specifier_plugin\x18\' \x01(\x0b\x32-.envoy.config.route.v3.ClusterSpecifierPluginH\x00\x12q\n\x1f\x63luster_not_found_response_code\x18\x14 \x01(\x0e\x32>.envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCodeB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x36\n\x0emetadata_match\x18\x04 \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x12#\n\x0eprefix_rewrite\x18\x05 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00\x12\x45\n\rregex_rewrite\x18 \x01(\x0b\x32..envoy.type.matcher.v3.RegexMatchAndSubstitute\x12G\n\x13path_rewrite_policy\x18) \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12\x14\n\x0cpath_rewrite\x18- \x01(\t\x12+\n\x14host_rewrite_literal\x18\x06 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00H\x01\x12\x37\n\x11\x61uto_host_rewrite\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValueH\x01\x12*\n\x13host_rewrite_header\x18\x1d \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00H\x01\x12Q\n\x17host_rewrite_path_regex\x18# \x01(\x0b\x32..envoy.type.matcher.v3.RegexMatchAndSubstituteH\x01\x12\x16\n\x0chost_rewrite\x18, \x01(\tH\x01\x12\x1f\n\x17\x61ppend_x_forwarded_host\x18& \x01(\x08\x12*\n\x07timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12/\n\x0cidle_timeout\x18\x18 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x30\n\rflush_timeout\x18* \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x45\n\x11\x65\x61rly_data_policy\x18( \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12\x38\n\x0cretry_policy\x18\t \x01(\x0b\x32\".envoy.config.route.v3.RetryPolicy\x12\x37\n\x19retry_policy_typed_config\x18! \x01(\x0b\x32\x14.google.protobuf.Any\x12W\n\x17request_mirror_policies\x18\x1e \x03(\x0b\x32\x36.envoy.config.route.v3.RouteAction.RequestMirrorPolicy\x12\x41\n\x08priority\x18\x0b \x01(\x0e\x32%.envoy.config.core.v3.RoutingPriorityB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x35\n\x0brate_limits\x18\r \x03(\x0b\x32 .envoy.config.route.v3.RateLimit\x12G\n\x16include_vh_rate_limits\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x42\n\x0bhash_policy\x18\x0f \x03(\x0b\x32-.envoy.config.route.v3.RouteAction.HashPolicy\x12<\n\x04\x63ors\x18\x11 \x01(\x0b\x32!.envoy.config.route.v3.CorsPolicyB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12@\n\x10max_grpc_timeout\x18\x17 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x43\n\x13grpc_timeout_offset\x18\x1c \x01(\x0b\x32\x19.google.protobuf.DurationB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12I\n\x0fupgrade_configs\x18\x19 \x03(\x0b\x32\x30.envoy.config.route.v3.RouteAction.UpgradeConfig\x12O\n\x18internal_redirect_policy\x18\" \x01(\x0b\x32-.envoy.config.route.v3.InternalRedirectPolicy\x12h\n\x18internal_redirect_action\x18\x1a \x01(\x0e\x32\x39.envoy.config.route.v3.RouteAction.InternalRedirectActionB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12I\n\x16max_internal_redirects\x18\x1f \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x38\n\x0chedge_policy\x18\x1b \x01(\x0b\x32\".envoy.config.route.v3.HedgePolicy\x12Q\n\x13max_stream_duration\x18$ \x01(\x0b\x32\x34.envoy.config.route.v3.RouteAction.MaxStreamDuration\x1a\x85\x04\n\x13RequestMirrorPolicy\x12*\n\x07\x63luster\x18\x01 \x01(\tB\x19\xf2\x98\xfe\x8f\x05\x13\x12\x11\x63luster_specifier\x12<\n\x0e\x63luster_header\x18\x05 \x01(\tB$\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00\xf2\x98\xfe\x8f\x05\x13\x12\x11\x63luster_specifier\x12H\n\x10runtime_fraction\x18\x03 \x01(\x0b\x32..envoy.config.core.v3.RuntimeFractionalPercent\x12\x31\n\rtrace_sampled\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12)\n!disable_shadow_host_suffix_append\x18\x06 \x01(\x08\x12\x63\n\x19request_headers_mutations\x18\x07 \x03(\x0b\x32\x35.envoy.config.common.mutation_rules.v3.HeaderMutationB\t\xfa\x42\x06\x92\x01\x03\x10\xe8\x07\x12)\n\x14host_rewrite_literal\x18\x08 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00:9\x9a\xc5\x88\x1e\x34\n2envoy.api.v2.route.RouteAction.RequestMirrorPolicyJ\x04\x08\x02\x10\x03R\x0bruntime_key\x1a\xb0\n\n\nHashPolicy\x12\x46\n\x06header\x18\x01 \x01(\x0b\x32\x34.envoy.config.route.v3.RouteAction.HashPolicy.HeaderH\x00\x12\x46\n\x06\x63ookie\x18\x02 \x01(\x0b\x32\x34.envoy.config.route.v3.RouteAction.HashPolicy.CookieH\x00\x12\x63\n\x15\x63onnection_properties\x18\x03 \x01(\x0b\x32\x42.envoy.config.route.v3.RouteAction.HashPolicy.ConnectionPropertiesH\x00\x12W\n\x0fquery_parameter\x18\x05 \x01(\x0b\x32<.envoy.config.route.v3.RouteAction.HashPolicy.QueryParameterH\x00\x12Q\n\x0c\x66ilter_state\x18\x06 \x01(\x0b\x32\x39.envoy.config.route.v3.RouteAction.HashPolicy.FilterStateH\x00\x12\x10\n\x08terminal\x18\x04 \x01(\x08\x1a\xac\x01\n\x06Header\x12\"\n\x0bheader_name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12\x45\n\rregex_rewrite\x18\x02 \x01(\x0b\x32..envoy.type.matcher.v3.RegexMatchAndSubstitute:7\x9a\xc5\x88\x1e\x32\n0envoy.api.v2.route.RouteAction.HashPolicy.Header\x1aR\n\x0f\x43ookieAttribute\x12\x1f\n\x04name\x18\x01 \x01(\tB\x11\xfa\x42\x0er\x0c\x10\x01(\x80\x80\x01\xc0\x01\x01\xc8\x01\x00\x12\x1e\n\x05value\x18\x02 \x01(\tB\x0f\xfa\x42\x0cr\n(\x80\x80\x01\xc0\x01\x02\xc8\x01\x00\x1a\xe1\x01\n\x06\x43ookie\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12&\n\x03ttl\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04path\x18\x03 \x01(\t\x12Q\n\nattributes\x18\x04 \x03(\x0b\x32=.envoy.config.route.v3.RouteAction.HashPolicy.CookieAttribute:7\x9a\xc5\x88\x1e\x32\n0envoy.api.v2.route.RouteAction.HashPolicy.Cookie\x1ap\n\x14\x43onnectionProperties\x12\x11\n\tsource_ip\x18\x01 \x01(\x08:E\x9a\xc5\x88\x1e@\n>envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties\x1ah\n\x0eQueryParameter\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01:?\x9a\xc5\x88\x1e:\n8envoy.api.v2.route.RouteAction.HashPolicy.QueryParameter\x1a\x61\n\x0b\x46ilterState\x12\x14\n\x03key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01:<\x9a\xc5\x88\x1e\x37\n5envoy.api.v2.route.RouteAction.HashPolicy.FilterState:0\x9a\xc5\x88\x1e+\n)envoy.api.v2.route.RouteAction.HashPolicyB\x17\n\x10policy_specifier\x12\x03\xf8\x42\x01\x1a\xdd\x02\n\rUpgradeConfig\x12#\n\x0cupgrade_type\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x02\xc8\x01\x00\x12+\n\x07\x65nabled\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12V\n\x0e\x63onnect_config\x18\x03 \x01(\x0b\x32>.envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig\x1am\n\rConnectConfig\x12H\n\x15proxy_protocol_config\x18\x01 \x01(\x0b\x32).envoy.config.core.v3.ProxyProtocolConfig\x12\x12\n\nallow_post\x18\x02 \x01(\x08:3\x9a\xc5\x88\x1e.\n,envoy.api.v2.route.RouteAction.UpgradeConfig\x1a\xc6\x01\n\x11MaxStreamDuration\x12\x36\n\x13max_stream_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n\x17grpc_timeout_header_max\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12=\n\x1agrpc_timeout_header_offset\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"`\n\x1b\x43lusterNotFoundResponseCode\x12\x17\n\x13SERVICE_UNAVAILABLE\x10\x00\x12\r\n\tNOT_FOUND\x10\x01\x12\x19\n\x15INTERNAL_SERVER_ERROR\x10\x02\"^\n\x16InternalRedirectAction\x12\"\n\x1ePASS_THROUGH_INTERNAL_REDIRECT\x10\x00\x12\x1c\n\x18HANDLE_INTERNAL_REDIRECT\x10\x01\x1a\x02\x18\x01:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.route.RouteActionB\x18\n\x11\x63luster_specifier\x12\x03\xf8\x42\x01\x42\x18\n\x16host_rewrite_specifierJ\x04\x08\x0c\x10\rJ\x04\x08\x12\x10\x13J\x04\x08\x13\x10\x14J\x04\x08\x10\x10\x11J\x04\x08\x16\x10\x17J\x04\x08\x15\x10\x16J\x04\x08\n\x10\x0bR\x15request_mirror_policy\"\xdb\r\n\x0bRetryPolicy\x12\x10\n\x08retry_on\x18\x01 \x01(\t\x12\x46\n\x0bnum_retries\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x13\xf2\x98\xfe\x8f\x05\r\n\x0bmax_retries\x12\x32\n\x0fper_try_timeout\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14per_try_idle_timeout\x18\r \x01(\x0b\x32\x19.google.protobuf.Duration\x12H\n\x0eretry_priority\x18\x04 \x01(\x0b\x32\x30.envoy.config.route.v3.RetryPolicy.RetryPriority\x12S\n\x14retry_host_predicate\x18\x05 \x03(\x0b\x32\x35.envoy.config.route.v3.RetryPolicy.RetryHostPredicate\x12L\n\x18retry_options_predicates\x18\x0c \x03(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12)\n!host_selection_retry_max_attempts\x18\x06 \x01(\x03\x12\x1e\n\x16retriable_status_codes\x18\x07 \x03(\r\x12G\n\x0eretry_back_off\x18\x08 \x01(\x0b\x32/.envoy.config.route.v3.RetryPolicy.RetryBackOff\x12_\n\x1brate_limited_retry_back_off\x18\x0b \x01(\x0b\x32:.envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff\x12?\n\x11retriable_headers\x18\t \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcher\x12G\n\x19retriable_request_headers\x18\n \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcher\x1a\xa6\x01\n\rRetryPriority\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12,\n\x0ctyped_config\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00:3\x9a\xc5\x88\x1e.\n,envoy.api.v2.route.RetryPolicy.RetryPriorityB\r\n\x0b\x63onfig_typeJ\x04\x08\x02\x10\x03R\x06\x63onfig\x1a\xb0\x01\n\x12RetryHostPredicate\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12,\n\x0ctyped_config\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00:8\x9a\xc5\x88\x1e\x33\n1envoy.api.v2.route.RetryPolicy.RetryHostPredicateB\r\n\x0b\x63onfig_typeJ\x04\x08\x02\x10\x03R\x06\x63onfig\x1a\xbb\x01\n\x0cRetryBackOff\x12<\n\rbase_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\n\xfa\x42\x07\xaa\x01\x04\x08\x01*\x00\x12\x39\n\x0cmax_interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00:2\x9a\xc5\x88\x1e-\n+envoy.api.v2.route.RetryPolicy.RetryBackOff\x1az\n\x0bResetHeader\x12\x1b\n\x04name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12N\n\x06\x66ormat\x18\x02 \x01(\x0e\x32\x34.envoy.config.route.v3.RetryPolicy.ResetHeaderFormatB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x1a\xa5\x01\n\x17RateLimitedRetryBackOff\x12O\n\rreset_headers\x18\x01 \x03(\x0b\x32..envoy.config.route.v3.RetryPolicy.ResetHeaderB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x39\n\x0cmax_interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00\"4\n\x11ResetHeaderFormat\x12\x0b\n\x07SECONDS\x10\x00\x12\x12\n\x0eUNIX_TIMESTAMP\x10\x01:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.route.RetryPolicy\"\xdc\x01\n\x0bHedgePolicy\x12?\n\x10initial_requests\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02(\x01\x12\x43\n\x19\x61\x64\x64itional_request_chance\x18\x02 \x01(\x0b\x32 .envoy.type.v3.FractionalPercent\x12 \n\x18hedge_on_per_try_timeout\x18\x03 \x01(\x08:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.route.HedgePolicy\"\xe1\x04\n\x0eRedirectAction\x12\x18\n\x0ehttps_redirect\x18\x04 \x01(\x08H\x00\x12\x19\n\x0fscheme_redirect\x18\x07 \x01(\tH\x00\x12\"\n\rhost_redirect\x18\x01 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00\x12\x15\n\rport_redirect\x18\x08 \x01(\r\x12$\n\rpath_redirect\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00H\x01\x12%\n\x0eprefix_rewrite\x18\x05 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00H\x01\x12G\n\rregex_rewrite\x18\t \x01(\x0b\x32..envoy.type.matcher.v3.RegexMatchAndSubstituteH\x01\x12[\n\rresponse_code\x18\x03 \x01(\x0e\x32:.envoy.config.route.v3.RedirectAction.RedirectResponseCodeB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x13\n\x0bstrip_query\x18\x06 \x01(\x08\"w\n\x14RedirectResponseCode\x12\x15\n\x11MOVED_PERMANENTLY\x10\x00\x12\t\n\x05\x46OUND\x10\x01\x12\r\n\tSEE_OTHER\x10\x02\x12\x16\n\x12TEMPORARY_REDIRECT\x10\x03\x12\x16\n\x12PERMANENT_REDIRECT\x10\x04:(\x9a\xc5\x88\x1e#\n!envoy.api.v2.route.RedirectActionB\x1a\n\x18scheme_rewrite_specifierB\x18\n\x16path_rewrite_specifier\"\xd8\x01\n\x14\x44irectResponseAction\x12\x1b\n\x06status\x18\x01 \x01(\rB\x0b\xfa\x42\x08*\x06\x10\xd8\x04(\xc8\x01\x12.\n\x04\x62ody\x18\x02 \x01(\x0b\x32 .envoy.config.core.v3.DataSource\x12\x43\n\x0b\x62ody_format\x18\x03 \x01(\x0b\x32..envoy.config.core.v3.SubstitutionFormatString:.\x9a\xc5\x88\x1e)\n\'envoy.api.v2.route.DirectResponseAction\"\x15\n\x13NonForwardingAction\"{\n\tDecorator\x12\x1a\n\toperation\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12-\n\tpropagate\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue:#\x9a\xc5\x88\x1e\x1e\n\x1c\x65nvoy.api.v2.route.Decorator\"\xc4\x02\n\x07Tracing\x12\x39\n\x0f\x63lient_sampling\x18\x01 \x01(\x0b\x32 .envoy.type.v3.FractionalPercent\x12\x39\n\x0frandom_sampling\x18\x02 \x01(\x0b\x32 .envoy.type.v3.FractionalPercent\x12:\n\x10overall_sampling\x18\x03 \x01(\x0b\x32 .envoy.type.v3.FractionalPercent\x12\x35\n\x0b\x63ustom_tags\x18\x04 \x03(\x0b\x32 .envoy.type.tracing.v3.CustomTag\x12\x11\n\toperation\x18\x05 \x01(\t\x12\x1a\n\x12upstream_operation\x18\x06 \x01(\t:!\x9a\xc5\x88\x1e\x1c\n\x1a\x65nvoy.api.v2.route.Tracing\"\xa5\x01\n\x0eVirtualCluster\x12\x35\n\x07headers\x18\x04 \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcher\x12\x15\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01:(\x9a\xc5\x88\x1e#\n!envoy.api.v2.route.VirtualClusterJ\x04\x08\x01\x10\x02J\x04\x08\x03\x10\x04R\x07patternR\x06method\"\xdf\x1b\n\tRateLimit\x12\x34\n\x05stage\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\n\x12\x13\n\x0b\x64isable_key\x18\x02 \x01(\t\x12\x42\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\'.envoy.config.route.v3.RateLimit.ActionB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x38\n\x05limit\x18\x04 \x01(\x0b\x32).envoy.config.route.v3.RateLimit.Override\x12@\n\x0bhits_addend\x18\x05 \x01(\x0b\x32+.envoy.config.route.v3.RateLimit.HitsAddend\x12\x1c\n\x14\x61pply_on_stream_done\x18\x06 \x01(\x08\x1a\xc3\x16\n\x06\x41\x63tion\x12O\n\x0esource_cluster\x18\x01 \x01(\x0b\x32\x35.envoy.config.route.v3.RateLimit.Action.SourceClusterH\x00\x12Y\n\x13\x64\x65stination_cluster\x18\x02 \x01(\x0b\x32:.envoy.config.route.v3.RateLimit.Action.DestinationClusterH\x00\x12Q\n\x0frequest_headers\x18\x03 \x01(\x0b\x32\x36.envoy.config.route.v3.RateLimit.Action.RequestHeadersH\x00\x12S\n\x10query_parameters\x18\x0c \x01(\x0b\x32\x37.envoy.config.route.v3.RateLimit.Action.QueryParametersH\x00\x12O\n\x0eremote_address\x18\x04 \x01(\x0b\x32\x35.envoy.config.route.v3.RateLimit.Action.RemoteAddressH\x00\x12I\n\x0bgeneric_key\x18\x05 \x01(\x0b\x32\x32.envoy.config.route.v3.RateLimit.Action.GenericKeyH\x00\x12V\n\x12header_value_match\x18\x06 \x01(\x0b\x32\x38.envoy.config.route.v3.RateLimit.Action.HeaderValueMatchH\x00\x12\x66\n\x10\x64ynamic_metadata\x18\x07 \x01(\x0b\x32\x37.envoy.config.route.v3.RateLimit.Action.DynamicMetaDataB\x11\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\xb8\xee\xf2\xd2\x05\x01H\x00\x12\x44\n\x08metadata\x18\x08 \x01(\x0b\x32\x30.envoy.config.route.v3.RateLimit.Action.MetaDataH\x00\x12?\n\textension\x18\t \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfigH\x00\x12\\\n\x15masked_remote_address\x18\n \x01(\x0b\x32;.envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddressH\x00\x12g\n\x1bquery_parameter_value_match\x18\x0b \x01(\x0b\x32@.envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatchH\x00\x1aI\n\rSourceCluster:8\x9a\xc5\x88\x1e\x33\n1envoy.api.v2.route.RateLimit.Action.SourceCluster\x1aS\n\x12\x44\x65stinationCluster:=\x9a\xc5\x88\x1e\x38\n6envoy.api.v2.route.RateLimit.Action.DestinationCluster\x1a\xa8\x01\n\x0eRequestHeaders\x12\"\n\x0bheader_name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12\x1f\n\x0e\x64\x65scriptor_key\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x16\n\x0eskip_if_absent\x18\x03 \x01(\x08:9\x9a\xc5\x88\x1e\x34\n2envoy.api.v2.route.RateLimit.Action.RequestHeaders\x1aq\n\x0fQueryParameters\x12%\n\x14query_parameter_name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x1f\n\x0e\x64\x65scriptor_key\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x16\n\x0eskip_if_absent\x18\x03 \x01(\x08\x1aI\n\rRemoteAddress:8\x9a\xc5\x88\x1e\x33\n1envoy.api.v2.route.RateLimit.Action.RemoteAddress\x1a\x9c\x01\n\x13MaskedRemoteAddress\x12\x41\n\x12v4_prefix_mask_len\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18 \x12\x42\n\x12v6_prefix_mask_len\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x08\xfa\x42\x05*\x03\x18\x80\x01\x1a\x95\x01\n\nGenericKey\x12!\n\x10\x64\x65scriptor_value\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x15\n\rdefault_value\x18\x03 \x01(\t\x12\x16\n\x0e\x64\x65scriptor_key\x18\x02 \x01(\t:5\x9a\xc5\x88\x1e\x30\n.envoy.api.v2.route.RateLimit.Action.GenericKey\x1a\x94\x02\n\x10HeaderValueMatch\x12!\n\x10\x64\x65scriptor_value\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x15\n\rdefault_value\x18\x05 \x01(\t\x12\x16\n\x0e\x64\x65scriptor_key\x18\x04 \x01(\t\x12\x30\n\x0c\x65xpect_match\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12?\n\x07headers\x18\x03 \x03(\x0b\x32$.envoy.config.route.v3.HeaderMatcherB\x08\xfa\x42\x05\x92\x01\x02\x08\x01:;\x9a\xc5\x88\x1e\x36\n4envoy.api.v2.route.RateLimit.Action.HeaderValueMatch\x1a\x8e\x01\n\x0f\x44ynamicMetaData\x12\x1f\n\x0e\x64\x65scriptor_key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x43\n\x0cmetadata_key\x18\x02 \x01(\x0b\x32#.envoy.type.metadata.v3.MetadataKeyB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x15\n\rdefault_value\x18\x03 \x01(\t\x1a\x9a\x02\n\x08MetaData\x12\x1f\n\x0e\x64\x65scriptor_key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x43\n\x0cmetadata_key\x18\x02 \x01(\x0b\x32#.envoy.type.metadata.v3.MetadataKeyB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x15\n\rdefault_value\x18\x03 \x01(\t\x12Q\n\x06source\x18\x04 \x01(\x0e\x32\x37.envoy.config.route.v3.RateLimit.Action.MetaData.SourceB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x16\n\x0eskip_if_absent\x18\x05 \x01(\x08\"&\n\x06Source\x12\x0b\n\x07\x44YNAMIC\x10\x00\x12\x0f\n\x0bROUTE_ENTRY\x10\x01\x1a\xf0\x01\n\x18QueryParameterValueMatch\x12!\n\x10\x64\x65scriptor_value\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x15\n\rdefault_value\x18\x05 \x01(\t\x12\x16\n\x0e\x64\x65scriptor_key\x18\x04 \x01(\t\x12\x30\n\x0c\x65xpect_match\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12P\n\x10query_parameters\x18\x03 \x03(\x0b\x32,.envoy.config.route.v3.QueryParameterMatcherB\x08\xfa\x42\x05\x92\x01\x02\x08\x01:*\x9a\xc5\x88\x1e%\n#envoy.api.v2.route.RateLimit.ActionB\x17\n\x10\x61\x63tion_specifier\x12\x03\xf8\x42\x01\x1a\xd4\x01\n\x08Override\x12U\n\x10\x64ynamic_metadata\x18\x01 \x01(\x0b\x32\x39.envoy.config.route.v3.RateLimit.Override.DynamicMetadataH\x00\x1aV\n\x0f\x44ynamicMetadata\x12\x43\n\x0cmetadata_key\x18\x01 \x01(\x0b\x32#.envoy.type.metadata.v3.MetadataKeyB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x42\x19\n\x12override_specifier\x12\x03\xf8\x42\x01\x1ag\n\nHitsAddend\x12\x39\n\x06number\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt64ValueB\x0b\xfa\x42\x08\x32\x06\x18\x80\x94\xeb\xdc\x03\x12\x1e\n\x06\x66ormat\x18\x02 \x01(\tB\x0e\xfa\x42\x0br\t:\x01%B\x01%\xd0\x01\x01:#\x9a\xc5\x88\x1e\x1e\n\x1c\x65nvoy.api.v2.route.RateLimit\"\xcc\x04\n\rHeaderMatcher\x12\x1b\n\x04name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12\"\n\x0b\x65xact_match\x18\x04 \x01(\tB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12L\n\x10safe_regex_match\x18\x0b \x01(\x0b\x32#.envoy.type.matcher.v3.RegexMatcherB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12\x30\n\x0brange_match\x18\x06 \x01(\x0b\x32\x19.envoy.type.v3.Int64RangeH\x00\x12\x17\n\rpresent_match\x18\x07 \x01(\x08H\x00\x12*\n\x0cprefix_match\x18\t \x01(\tB\x12\x18\x01\xfa\x42\x04r\x02\x10\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12*\n\x0csuffix_match\x18\n \x01(\tB\x12\x18\x01\xfa\x42\x04r\x02\x10\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12,\n\x0e\x63ontains_match\x18\x0c \x01(\tB\x12\x18\x01\xfa\x42\x04r\x02\x10\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12<\n\x0cstring_match\x18\r \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcherH\x00\x12\x14\n\x0cinvert_match\x18\x08 \x01(\x08\x12%\n\x1dtreat_missing_header_as_empty\x18\x0e \x01(\x08:\'\x9a\xc5\x88\x1e\"\n envoy.api.v2.route.HeaderMatcherB\x18\n\x16header_match_specifierJ\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06R\x0bregex_match\"\x80\x02\n\x15QueryParameterMatcher\x12\x18\n\x04name\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01(\x80\x08\x12\x46\n\x0cstring_match\x18\x05 \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00\x12\x17\n\rpresent_match\x18\x06 \x01(\x08H\x00:/\x9a\xc5\x88\x1e*\n(envoy.api.v2.route.QueryParameterMatcherB!\n\x1fquery_parameter_match_specifierJ\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05R\x05valueR\x05regex\"\x85\x01\n\rCookieMatcher\x12\x18\n\x04name\x18\x01 \x01(\tB\n\xfa\x42\x07r\x05\x10\x01(\x80\x08\x12\x44\n\x0cstring_match\x18\x02 \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x14\n\x0cinvert_match\x18\x03 \x01(\x08\"\x9c\x02\n\x16InternalRedirectPolicy\x12<\n\x16max_internal_redirects\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12)\n\x17redirect_response_codes\x18\x02 \x03(\rB\x08\xfa\x42\x05\x92\x01\x02\x10\x05\x12>\n\npredicates\x18\x03 \x03(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12#\n\x1b\x61llow_cross_scheme_redirect\x18\x04 \x01(\x08\x12\x34\n\x18response_headers_to_copy\x18\x05 \x03(\tB\x12\xfa\x42\x0f\x92\x01\x0c\x18\x01\"\x08r\x06\xc0\x01\x01\xc8\x01\x00\"[\n\x0c\x46ilterConfig\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x13\n\x0bis_optional\x18\x02 \x01(\x08\x12\x10\n\x08\x64isabled\x18\x03 \x01(\x08\x42\x8b\x01\n#io.envoyproxy.envoy.config.route.v3B\x14RouteComponentsProtoP\x01ZDgithub.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
|
|
33
|
+
|
|
34
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
35
|
+
pool.add_serialized_file(descriptor_data)
|
|
36
|
+
|
|
37
|
+
module Envoy
|
|
38
|
+
module Config
|
|
39
|
+
module Route
|
|
40
|
+
module V3
|
|
41
|
+
VirtualHost = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.VirtualHost").msgclass
|
|
42
|
+
VirtualHost::TlsRequirementType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.VirtualHost.TlsRequirementType").enummodule
|
|
43
|
+
FilterAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.FilterAction").msgclass
|
|
44
|
+
RouteList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteList").msgclass
|
|
45
|
+
Route = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.Route").msgclass
|
|
46
|
+
WeightedCluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.WeightedCluster").msgclass
|
|
47
|
+
WeightedCluster::ClusterWeight = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.WeightedCluster.ClusterWeight").msgclass
|
|
48
|
+
ClusterSpecifierPlugin = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.ClusterSpecifierPlugin").msgclass
|
|
49
|
+
RouteMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteMatch").msgclass
|
|
50
|
+
RouteMatch::GrpcRouteMatchOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions").msgclass
|
|
51
|
+
RouteMatch::TlsContextMatchOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteMatch.TlsContextMatchOptions").msgclass
|
|
52
|
+
RouteMatch::ConnectMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteMatch.ConnectMatcher").msgclass
|
|
53
|
+
CorsPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.CorsPolicy").msgclass
|
|
54
|
+
RouteAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction").msgclass
|
|
55
|
+
RouteAction::RequestMirrorPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.RequestMirrorPolicy").msgclass
|
|
56
|
+
RouteAction::HashPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy").msgclass
|
|
57
|
+
RouteAction::HashPolicy::Header = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.Header").msgclass
|
|
58
|
+
RouteAction::HashPolicy::CookieAttribute = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.CookieAttribute").msgclass
|
|
59
|
+
RouteAction::HashPolicy::Cookie = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.Cookie").msgclass
|
|
60
|
+
RouteAction::HashPolicy::ConnectionProperties = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.ConnectionProperties").msgclass
|
|
61
|
+
RouteAction::HashPolicy::QueryParameter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.QueryParameter").msgclass
|
|
62
|
+
RouteAction::HashPolicy::FilterState = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.HashPolicy.FilterState").msgclass
|
|
63
|
+
RouteAction::UpgradeConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.UpgradeConfig").msgclass
|
|
64
|
+
RouteAction::UpgradeConfig::ConnectConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig").msgclass
|
|
65
|
+
RouteAction::MaxStreamDuration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.MaxStreamDuration").msgclass
|
|
66
|
+
RouteAction::ClusterNotFoundResponseCode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCode").enummodule
|
|
67
|
+
RouteAction::InternalRedirectAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RouteAction.InternalRedirectAction").enummodule
|
|
68
|
+
RetryPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy").msgclass
|
|
69
|
+
RetryPolicy::RetryPriority = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.RetryPriority").msgclass
|
|
70
|
+
RetryPolicy::RetryHostPredicate = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.RetryHostPredicate").msgclass
|
|
71
|
+
RetryPolicy::RetryBackOff = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.RetryBackOff").msgclass
|
|
72
|
+
RetryPolicy::ResetHeader = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.ResetHeader").msgclass
|
|
73
|
+
RetryPolicy::RateLimitedRetryBackOff = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff").msgclass
|
|
74
|
+
RetryPolicy::ResetHeaderFormat = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RetryPolicy.ResetHeaderFormat").enummodule
|
|
75
|
+
HedgePolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.HedgePolicy").msgclass
|
|
76
|
+
RedirectAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RedirectAction").msgclass
|
|
77
|
+
RedirectAction::RedirectResponseCode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RedirectAction.RedirectResponseCode").enummodule
|
|
78
|
+
DirectResponseAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.DirectResponseAction").msgclass
|
|
79
|
+
NonForwardingAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.NonForwardingAction").msgclass
|
|
80
|
+
Decorator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.Decorator").msgclass
|
|
81
|
+
Tracing = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.Tracing").msgclass
|
|
82
|
+
VirtualCluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.VirtualCluster").msgclass
|
|
83
|
+
RateLimit = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit").msgclass
|
|
84
|
+
RateLimit::Action = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action").msgclass
|
|
85
|
+
RateLimit::Action::SourceCluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.SourceCluster").msgclass
|
|
86
|
+
RateLimit::Action::DestinationCluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.DestinationCluster").msgclass
|
|
87
|
+
RateLimit::Action::RequestHeaders = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.RequestHeaders").msgclass
|
|
88
|
+
RateLimit::Action::QueryParameters = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.QueryParameters").msgclass
|
|
89
|
+
RateLimit::Action::RemoteAddress = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.RemoteAddress").msgclass
|
|
90
|
+
RateLimit::Action::MaskedRemoteAddress = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddress").msgclass
|
|
91
|
+
RateLimit::Action::GenericKey = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.GenericKey").msgclass
|
|
92
|
+
RateLimit::Action::HeaderValueMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.HeaderValueMatch").msgclass
|
|
93
|
+
RateLimit::Action::DynamicMetaData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.DynamicMetaData").msgclass
|
|
94
|
+
RateLimit::Action::MetaData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.MetaData").msgclass
|
|
95
|
+
RateLimit::Action::MetaData::Source = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.MetaData.Source").enummodule
|
|
96
|
+
RateLimit::Action::QueryParameterValueMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Action.QueryParameterValueMatch").msgclass
|
|
97
|
+
RateLimit::Override = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Override").msgclass
|
|
98
|
+
RateLimit::Override::DynamicMetadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.Override.DynamicMetadata").msgclass
|
|
99
|
+
RateLimit::HitsAddend = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.RateLimit.HitsAddend").msgclass
|
|
100
|
+
HeaderMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.HeaderMatcher").msgclass
|
|
101
|
+
QueryParameterMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.QueryParameterMatcher").msgclass
|
|
102
|
+
CookieMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.CookieMatcher").msgclass
|
|
103
|
+
InternalRedirectPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.InternalRedirectPolicy").msgclass
|
|
104
|
+
FilterConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.route.v3.FilterConfig").msgclass
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
4
|
+
# source: envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto
|
|
5
|
+
|
|
6
|
+
require "google/protobuf"
|
|
7
|
+
|
|
8
|
+
require "envoy/extensions/load_balancing_policies/common/v3/common_pb"
|
|
9
|
+
require "google/protobuf/duration_pb"
|
|
10
|
+
require "google/protobuf/wrappers_pb"
|
|
11
|
+
require "udpa/annotations/status_pb"
|
|
12
|
+
require "validate/validate_pb"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
descriptor_data = "\nsenvoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.proto\x12Lenvoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3\x1a?envoy/extensions/load_balancing_policies/common/v3/common.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\x83\x05\n\x1c\x43lientSideWeightedRoundRobin\x12:\n\x16\x65nable_oob_load_report\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x37\n\x14oob_reporting_period\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x32\n\x0f\x62lackout_period\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12;\n\x18weight_expiration_period\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14weight_update_period\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12J\n\x19\x65rror_utilization_penalty\x18\x06 \x01(\x0b\x32\x1b.google.protobuf.FloatValueB\n\xfa\x42\x07\n\x05-\x00\x00\x00\x00\x12.\n&metric_names_for_computing_utilization\x18\x07 \x03(\t\x12^\n\x11slow_start_config\x18\x08 \x01(\x0b\x32\x43.envoy.extensions.load_balancing_policies.common.v3.SlowStartConfig\x12h\n\x14oob_reporting_config\x18\t \x01(\x0b\x32J.envoy.extensions.load_balancing_policies.common.v3.OrcaOobReportingConfigB\xa2\x02\nZio.envoyproxy.envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3B!ClientSideWeightedRoundRobinProtoP\x01Z\x96\x01github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3;client_side_weighted_round_robinv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
|
|
16
|
+
|
|
17
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
18
|
+
pool.add_serialized_file(descriptor_data)
|
|
19
|
+
|
|
20
|
+
module Envoy
|
|
21
|
+
module Extensions
|
|
22
|
+
module LoadBalancingPolicies
|
|
23
|
+
module ClientSideWeightedRoundRobin
|
|
24
|
+
module V3
|
|
25
|
+
ClientSideWeightedRoundRobin = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3.ClientSideWeightedRoundRobin").msgclass
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
4
|
+
# source: envoy/extensions/load_balancing_policies/common/v3/common.proto
|
|
5
|
+
|
|
6
|
+
require "google/protobuf"
|
|
7
|
+
|
|
8
|
+
require "envoy/config/core/v3/base_pb"
|
|
9
|
+
require "envoy/config/route/v3/route_components_pb"
|
|
10
|
+
require "envoy/type/v3/percent_pb"
|
|
11
|
+
require "google/protobuf/duration_pb"
|
|
12
|
+
require "google/protobuf/struct_pb"
|
|
13
|
+
require "google/protobuf/wrappers_pb"
|
|
14
|
+
require "envoy/annotations/deprecation_pb"
|
|
15
|
+
require "udpa/annotations/status_pb"
|
|
16
|
+
require "validate/validate_pb"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
descriptor_data = "\n?envoy/extensions/load_balancing_policies/common/v3/common.proto\x12\x32\x65nvoy.extensions.load_balancing_policies.common.v3\x1a\x1f\x65nvoy/config/core/v3/base.proto\x1a,envoy/config/route/v3/route_components.proto\x1a\x1b\x65nvoy/type/v3/percent.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\xa4\x07\n\x10LocalityLbConfig\x12v\n\x14zone_aware_lb_config\x18\x01 \x01(\x0b\x32V.envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfigH\x00\x12\x84\x01\n\x1blocality_weighted_lb_config\x18\x02 \x01(\x0b\x32].envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.LocalityWeightedLbConfigH\x00\x1a\xd2\x04\n\x11ZoneAwareLbConfig\x12/\n\x0frouting_enabled\x18\x01 \x01(\x0b\x32\x16.envoy.type.v3.Percent\x12\x36\n\x10min_cluster_size\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt64Value\x12\x1d\n\x15\x66\x61il_traffic_on_panic\x18\x03 \x01(\x08\x12\x32\n\x1d\x66orce_locality_direct_routing\x18\x04 \x01(\x08\x42\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x7f\n\x10\x66orce_local_zone\x18\x05 \x01(\x0b\x32\x65.envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.ForceLocalZone\x12|\n\x0elocality_basis\x18\x06 \x01(\x0e\x32\x64.envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.LocalityBasis\x1a@\n\x0e\x46orceLocalZone\x12.\n\x08min_size\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\"@\n\rLocalityBasis\x12\x15\n\x11HEALTHY_HOSTS_NUM\x10\x00\x12\x18\n\x14HEALTHY_HOSTS_WEIGHT\x10\x01\x1a\x1a\n\x18LocalityWeightedLbConfigB \n\x19locality_config_specifier\x12\x03\xf8\x42\x01\"\xb4\x01\n\x0fSlowStartConfig\x12\x34\n\x11slow_start_window\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\naggression\x18\x02 \x01(\x0b\x32#.envoy.config.core.v3.RuntimeDouble\x12\x32\n\x12min_weight_percent\x18\x03 \x01(\x0b\x32\x16.envoy.type.v3.Percent\"\xc5\x01\n\x19\x43onsistentHashingLbConfig\x12 \n\x18use_hostname_for_hashing\x18\x01 \x01(\x08\x12\x42\n\x13hash_balance_factor\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02(d\x12\x42\n\x0bhash_policy\x18\x03 \x03(\x0b\x32-.envoy.config.route.v3.RouteAction.HashPolicy\"\x99\x01\n\x16OrcaOobReportingConfig\x12\x1d\n\nport_value\x18\x01 \x01(\rB\t\xfa\x42\x06*\x04\x18\xff\xff\x03\x12\x1e\n\tauthority\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00\x12@\n\x1ftransport_socket_match_criteria\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructB\xbd\x01\n@io.envoyproxy.envoy.extensions.load_balancing_policies.common.v3B\x0b\x43ommonProtoP\x01Zbgithub.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/common/v3;commonv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
|
|
20
|
+
|
|
21
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
22
|
+
pool.add_serialized_file(descriptor_data)
|
|
23
|
+
|
|
24
|
+
module Envoy
|
|
25
|
+
module Extensions
|
|
26
|
+
module LoadBalancingPolicies
|
|
27
|
+
module Common
|
|
28
|
+
module V3
|
|
29
|
+
LocalityLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig").msgclass
|
|
30
|
+
LocalityLbConfig::ZoneAwareLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig").msgclass
|
|
31
|
+
LocalityLbConfig::ZoneAwareLbConfig::ForceLocalZone = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.ForceLocalZone").msgclass
|
|
32
|
+
LocalityLbConfig::ZoneAwareLbConfig::LocalityBasis = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.ZoneAwareLbConfig.LocalityBasis").enummodule
|
|
33
|
+
LocalityLbConfig::LocalityWeightedLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.LocalityLbConfig.LocalityWeightedLbConfig").msgclass
|
|
34
|
+
SlowStartConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.SlowStartConfig").msgclass
|
|
35
|
+
ConsistentHashingLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.ConsistentHashingLbConfig").msgclass
|
|
36
|
+
OrcaOobReportingConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.extensions.load_balancing_policies.common.v3.OrcaOobReportingConfig").msgclass
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
4
|
+
# source: envoy/type/tracing/v3/custom_tag.proto
|
|
5
|
+
|
|
6
|
+
require "google/protobuf"
|
|
7
|
+
|
|
8
|
+
require "envoy/type/metadata/v3/metadata_pb"
|
|
9
|
+
require "udpa/annotations/status_pb"
|
|
10
|
+
require "udpa/annotations/versioning_pb"
|
|
11
|
+
require "validate/validate_pb"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
descriptor_data = "\n&envoy/type/tracing/v3/custom_tag.proto\x12\x15\x65nvoy.type.tracing.v3\x1a%envoy/type/metadata/v3/metadata.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xe0\x06\n\tCustomTag\x12\x14\n\x03tag\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12;\n\x07literal\x18\x02 \x01(\x0b\x32(.envoy.type.tracing.v3.CustomTag.LiteralH\x00\x12\x43\n\x0b\x65nvironment\x18\x03 \x01(\x0b\x32,.envoy.type.tracing.v3.CustomTag.EnvironmentH\x00\x12\x41\n\x0erequest_header\x18\x04 \x01(\x0b\x32\'.envoy.type.tracing.v3.CustomTag.HeaderH\x00\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32).envoy.type.tracing.v3.CustomTag.MetadataH\x00\x12\x0f\n\x05value\x18\x06 \x01(\tH\x00\x1aQ\n\x07Literal\x12\x16\n\x05value\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01:.\x9a\xc5\x88\x1e)\n\'envoy.type.tracing.v2.CustomTag.Literal\x1ao\n\x0b\x45nvironment\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x15\n\rdefault_value\x18\x02 \x01(\t:2\x9a\xc5\x88\x1e-\n+envoy.type.tracing.v2.CustomTag.Environment\x1ak\n\x06Header\x12\x1b\n\x04name\x18\x01 \x01(\tB\r\xfa\x42\nr\x08\x10\x01\xc0\x01\x01\xc8\x01\x00\x12\x15\n\rdefault_value\x18\x02 \x01(\t:-\x9a\xc5\x88\x1e(\n&envoy.type.tracing.v2.CustomTag.Header\x1a\xc1\x01\n\x08Metadata\x12\x32\n\x04kind\x18\x01 \x01(\x0b\x32$.envoy.type.metadata.v3.MetadataKind\x12\x39\n\x0cmetadata_key\x18\x02 \x01(\x0b\x32#.envoy.type.metadata.v3.MetadataKey\x12\x15\n\rdefault_value\x18\x03 \x01(\t:/\x9a\xc5\x88\x1e*\n(envoy.type.tracing.v2.CustomTag.Metadata:&\x9a\xc5\x88\x1e!\n\x1f\x65nvoy.type.tracing.v2.CustomTagB\x0b\n\x04type\x12\x03\xf8\x42\x01\x42\x87\x01\n#io.envoyproxy.envoy.type.tracing.v3B\x0e\x43ustomTagProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/tracing/v3;tracingv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
|
|
15
|
+
|
|
16
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
17
|
+
pool.add_serialized_file(descriptor_data)
|
|
18
|
+
|
|
19
|
+
module Envoy
|
|
20
|
+
module Type
|
|
21
|
+
module Tracing
|
|
22
|
+
module V3
|
|
23
|
+
CustomTag = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag").msgclass
|
|
24
|
+
CustomTag::Literal = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag.Literal").msgclass
|
|
25
|
+
CustomTag::Environment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag.Environment").msgclass
|
|
26
|
+
CustomTag::Header = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag.Header").msgclass
|
|
27
|
+
CustomTag::Metadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.tracing.v3.CustomTag.Metadata").msgclass
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
4
|
+
# source: xds/data/orca/v3/orca_load_report.proto
|
|
5
|
+
|
|
6
|
+
require "google/protobuf"
|
|
7
|
+
|
|
8
|
+
require "validate/validate_pb"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
descriptor_data = "\n\'xds/data/orca/v3/orca_load_report.proto\x12\x10xds.data.orca.v3\x1a\x17validate/validate.proto\"\x89\x05\n\x0eOrcaLoadReport\x12\'\n\x0f\x63pu_utilization\x18\x01 \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x30\n\x0fmem_utilization\x18\x02 \x01(\x01\x42\x17\xfa\x42\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x0f\n\x03rps\x18\x03 \x01(\x04\x42\x02\x18\x01\x12G\n\x0crequest_cost\x18\x04 \x03(\x0b\x32\x31.xds.data.orca.v3.OrcaLoadReport.RequestCostEntry\x12\x64\n\x0butilization\x18\x05 \x03(\x0b\x32\x31.xds.data.orca.v3.OrcaLoadReport.UtilizationEntryB\x1c\xfa\x42\x19\x9a\x01\x16*\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00\x12&\n\x0erps_fractional\x18\x06 \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x1b\n\x03\x65ps\x18\x07 \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x12I\n\rnamed_metrics\x18\x08 \x03(\x0b\x32\x32.xds.data.orca.v3.OrcaLoadReport.NamedMetricsEntry\x12/\n\x17\x61pplication_utilization\x18\t \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x32\n\x10RequestCostEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x1a\x32\n\x10UtilizationEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x1a\x33\n\x11NamedMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x42]\n\x1b\x63om.github.xds.data.orca.v3B\x13OrcaLoadReportProtoP\x01Z\'github.com/cncf/xds/go/xds/data/orca/v3b\x06proto3"
|
|
12
|
+
|
|
13
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
14
|
+
pool.add_serialized_file(descriptor_data)
|
|
15
|
+
|
|
16
|
+
module Xds
|
|
17
|
+
module Data
|
|
18
|
+
module Orca
|
|
19
|
+
module V3
|
|
20
|
+
OrcaLoadReport = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("xds.data.orca.v3.OrcaLoadReport").msgclass
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Released under the MIT License.
|
|
4
|
+
# Copyright, 2026, by Samuel Williams.
|
|
5
|
+
|
|
6
|
+
require "protocol/grpc/interface"
|
|
7
|
+
require "xds/service/orca/v3/orca_pb"
|
|
8
|
+
|
|
9
|
+
module Xds
|
|
10
|
+
module Service
|
|
11
|
+
module Orca
|
|
12
|
+
module V3
|
|
13
|
+
# Interface definition for the out-of-band ORCA load reporting service.
|
|
14
|
+
class OpenRcaService < Protocol::GRPC::Interface
|
|
15
|
+
rpc :StreamCoreMetrics,
|
|
16
|
+
request_class: OrcaLoadReportRequest,
|
|
17
|
+
response_class: Xds::Data::Orca::V3::OrcaLoadReport,
|
|
18
|
+
streaming: :server_streaming
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
4
|
+
# source: xds/service/orca/v3/orca.proto
|
|
5
|
+
|
|
6
|
+
require "google/protobuf"
|
|
7
|
+
|
|
8
|
+
require "xds/data/orca/v3/orca_load_report_pb"
|
|
9
|
+
require "google/protobuf/duration_pb"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
descriptor_data = "\n\x1exds/service/orca/v3/orca.proto\x12\x13xds.service.orca.v3\x1a\'xds/data/orca/v3/orca_load_report.proto\x1a\x1egoogle/protobuf/duration.proto\"g\n\x15OrcaLoadReportRequest\x12\x32\n\x0freport_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1a\n\x12request_cost_names\x18\x02 \x03(\t2u\n\x0eOpenRcaService\x12\x63\n\x11StreamCoreMetrics\x12*.xds.service.orca.v3.OrcaLoadReportRequest\x1a .xds.data.orca.v3.OrcaLoadReport0\x01\x42Y\n\x1e\x63om.github.xds.service.orca.v3B\tOrcaProtoP\x01Z*github.com/cncf/xds/go/xds/service/orca/v3b\x06proto3"
|
|
13
|
+
|
|
14
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
15
|
+
pool.add_serialized_file(descriptor_data)
|
|
16
|
+
|
|
17
|
+
module Xds
|
|
18
|
+
module Service
|
|
19
|
+
module Orca
|
|
20
|
+
module V3
|
|
21
|
+
OrcaLoadReportRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("xds.service.orca.v3.OrcaLoadReportRequest").msgclass
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.config.common.mutation_rules.v3;
|
|
4
|
+
|
|
5
|
+
import "envoy/config/core/v3/base.proto";
|
|
6
|
+
import "envoy/type/matcher/v3/regex.proto";
|
|
7
|
+
import "envoy/type/matcher/v3/string.proto";
|
|
8
|
+
|
|
9
|
+
import "google/protobuf/wrappers.proto";
|
|
10
|
+
|
|
11
|
+
import "udpa/annotations/status.proto";
|
|
12
|
+
import "validate/validate.proto";
|
|
13
|
+
|
|
14
|
+
option java_package = "io.envoyproxy.envoy.config.common.mutation_rules.v3";
|
|
15
|
+
option java_outer_classname = "MutationRulesProto";
|
|
16
|
+
option java_multiple_files = true;
|
|
17
|
+
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/common/mutation_rules/v3;mutation_rulesv3";
|
|
18
|
+
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|
19
|
+
|
|
20
|
+
// [#protodoc-title: Header mutation rules]
|
|
21
|
+
|
|
22
|
+
// The HeaderMutationRules structure specifies what headers may be
|
|
23
|
+
// manipulated by a processing filter. This set of rules makes it
|
|
24
|
+
// possible to control which modifications a filter may make.
|
|
25
|
+
//
|
|
26
|
+
// By default, an external processing server may add, modify, or remove
|
|
27
|
+
// any header except for an "Envoy internal" header (which is typically
|
|
28
|
+
// denoted by an x-envoy prefix) or specific headers that may affect
|
|
29
|
+
// further filter processing:
|
|
30
|
+
//
|
|
31
|
+
// * ``host``
|
|
32
|
+
// * ``:authority``
|
|
33
|
+
// * ``:scheme``
|
|
34
|
+
// * ``:method``
|
|
35
|
+
//
|
|
36
|
+
// Every attempt to add, change, append, or remove a header will be
|
|
37
|
+
// tested against the rules here. Disallowed header mutations will be
|
|
38
|
+
// ignored unless ``disallow_is_error`` is set to true.
|
|
39
|
+
//
|
|
40
|
+
// Attempts to remove headers are further constrained -- regardless of the
|
|
41
|
+
// settings, system-defined headers (that start with ``:``) and the ``host``
|
|
42
|
+
// header may never be removed.
|
|
43
|
+
//
|
|
44
|
+
// In addition, a counter will be incremented whenever a mutation is
|
|
45
|
+
// rejected. In the ext_proc filter, that counter is named
|
|
46
|
+
// ``rejected_header_mutations``.
|
|
47
|
+
// [#next-free-field: 8]
|
|
48
|
+
message HeaderMutationRules {
|
|
49
|
+
// By default, certain headers that could affect processing of subsequent
|
|
50
|
+
// filters or request routing cannot be modified. These headers are
|
|
51
|
+
// ``host``, ``:authority``, ``:scheme``, and ``:method``. Setting this parameter
|
|
52
|
+
// to true allows these headers to be modified as well.
|
|
53
|
+
google.protobuf.BoolValue allow_all_routing = 1;
|
|
54
|
+
|
|
55
|
+
// If true, allow modification of envoy internal headers. By default, these
|
|
56
|
+
// start with ``x-envoy`` but this may be overridden in the ``Bootstrap``
|
|
57
|
+
// configuration using the
|
|
58
|
+
// :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`
|
|
59
|
+
// field. Default is false.
|
|
60
|
+
google.protobuf.BoolValue allow_envoy = 2;
|
|
61
|
+
|
|
62
|
+
// If true, prevent modification of any system header, defined as a header
|
|
63
|
+
// that starts with a ``:`` character, regardless of any other settings.
|
|
64
|
+
// A processing server may still override the ``:status`` of an HTTP response
|
|
65
|
+
// using an ``ImmediateResponse`` message. Default is false.
|
|
66
|
+
google.protobuf.BoolValue disallow_system = 3;
|
|
67
|
+
|
|
68
|
+
// If true, prevent modifications of all header values, regardless of any
|
|
69
|
+
// other settings. A processing server may still override the ``:status``
|
|
70
|
+
// of an HTTP response using an ``ImmediateResponse`` message. Default is false.
|
|
71
|
+
google.protobuf.BoolValue disallow_all = 4;
|
|
72
|
+
|
|
73
|
+
// If set, specifically allow any header that matches this regular
|
|
74
|
+
// expression. This overrides all other settings except for
|
|
75
|
+
// ``disallow_expression``.
|
|
76
|
+
type.matcher.v3.RegexMatcher allow_expression = 5;
|
|
77
|
+
|
|
78
|
+
// If set, specifically disallow any header that matches this regular
|
|
79
|
+
// expression regardless of any other settings.
|
|
80
|
+
type.matcher.v3.RegexMatcher disallow_expression = 6;
|
|
81
|
+
|
|
82
|
+
// If true, and if the rules in this list cause a header mutation to be
|
|
83
|
+
// disallowed, then the filter using this configuration will terminate the
|
|
84
|
+
// request with a 500 error. In addition, regardless of the setting of this
|
|
85
|
+
// parameter, any attempt to set, add, or modify a disallowed header will
|
|
86
|
+
// cause the ``rejected_header_mutations`` counter to be incremented.
|
|
87
|
+
// Default is false.
|
|
88
|
+
google.protobuf.BoolValue disallow_is_error = 7;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// The HeaderMutation structure specifies an action that may be taken on HTTP
|
|
92
|
+
// headers.
|
|
93
|
+
message HeaderMutation {
|
|
94
|
+
message RemoveOnMatch {
|
|
95
|
+
// A string matcher that will be applied to the header key. If the header key
|
|
96
|
+
// matches, the header will be removed.
|
|
97
|
+
type.matcher.v3.StringMatcher key_matcher = 1 [(validate.rules).message = {required: true}];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
oneof action {
|
|
101
|
+
option (validate.required) = true;
|
|
102
|
+
|
|
103
|
+
// Remove the specified header if it exists.
|
|
104
|
+
string remove = 1
|
|
105
|
+
[(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
|
|
106
|
+
|
|
107
|
+
// Append new header by the specified HeaderValueOption.
|
|
108
|
+
core.v3.HeaderValueOption append = 2;
|
|
109
|
+
|
|
110
|
+
// Remove the header if the key matches the specified string matcher.
|
|
111
|
+
RemoveOnMatch remove_on_match = 3;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3;
|
|
4
|
+
|
|
5
|
+
import "envoy/extensions/load_balancing_policies/common/v3/common.proto";
|
|
6
|
+
|
|
7
|
+
import "google/protobuf/duration.proto";
|
|
8
|
+
import "google/protobuf/wrappers.proto";
|
|
9
|
+
|
|
10
|
+
import "udpa/annotations/status.proto";
|
|
11
|
+
import "validate/validate.proto";
|
|
12
|
+
|
|
13
|
+
option java_package = "io.envoyproxy.envoy.extensions.load_balancing_policies.client_side_weighted_round_robin.v3";
|
|
14
|
+
option java_outer_classname = "ClientSideWeightedRoundRobinProto";
|
|
15
|
+
option java_multiple_files = true;
|
|
16
|
+
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3;client_side_weighted_round_robinv3";
|
|
17
|
+
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|
18
|
+
|
|
19
|
+
// [#protodoc-title: Client-Side Weighted Round Robin Load Balancing Policy]
|
|
20
|
+
// [#extension: envoy.load_balancing_policies.client_side_weighted_round_robin]
|
|
21
|
+
|
|
22
|
+
// Configuration for the client_side_weighted_round_robin LB policy.
|
|
23
|
+
//
|
|
24
|
+
// This policy differs from the built-in ROUND_ROBIN policy in terms of
|
|
25
|
+
// how the endpoint weights are determined. In the ROUND_ROBIN policy,
|
|
26
|
+
// the endpoint weights are sent by the control plane via EDS. However,
|
|
27
|
+
// in this policy, the endpoint weights are instead determined via qps (queries
|
|
28
|
+
// per second), eps (errors per second), and utilization metrics sent by the
|
|
29
|
+
// endpoint using the Open Request Cost Aggregation (ORCA) protocol. Utilization
|
|
30
|
+
// is determined by using the ORCA application_utilization field, if set, or
|
|
31
|
+
// else falling back to the cpu_utilization field. All queries count toward qps,
|
|
32
|
+
// regardless of result. Only failed queries count toward eps. A config
|
|
33
|
+
// parameter error_utilization_penalty controls the penalty to adjust endpoint
|
|
34
|
+
// weights using eps and qps. The weight of a given endpoint is computed as:
|
|
35
|
+
// ``qps / (utilization + eps/qps * error_utilization_penalty)``.
|
|
36
|
+
//
|
|
37
|
+
// Note that Envoy will forward the ORCA response headers/trailers from the upstream
|
|
38
|
+
// cluster to the downstream client. This means that if the downstream client is also
|
|
39
|
+
// configured to use ``client_side_weighted_round_robin`` it will load balance against
|
|
40
|
+
// Envoy based on upstream weights. This can happen when Envoy is used as a reverse proxy.
|
|
41
|
+
// To avoid this issue you can configure the :ref:`header_mutation filter <envoy_v3_api_msg_extensions.filters.http.header_mutation.v3.HeaderMutation>` to remove
|
|
42
|
+
// the ORCA payload from the response headers/trailers.
|
|
43
|
+
//
|
|
44
|
+
// See the :ref:`load balancing architecture
|
|
45
|
+
// overview<arch_overview_load_balancing_types>` for more information.
|
|
46
|
+
//
|
|
47
|
+
// [#next-free-field: 10]
|
|
48
|
+
message ClientSideWeightedRoundRobin {
|
|
49
|
+
// Whether to enable out-of-band utilization reporting collection from
|
|
50
|
+
// the endpoints. By default, per-request utilization reporting is used.
|
|
51
|
+
google.protobuf.BoolValue enable_oob_load_report = 1;
|
|
52
|
+
|
|
53
|
+
// Load reporting interval to request from the server. Note that the
|
|
54
|
+
// server may not provide reports as frequently as the client requests.
|
|
55
|
+
// Used only when enable_oob_load_report is true. Default is 10 seconds.
|
|
56
|
+
google.protobuf.Duration oob_reporting_period = 2;
|
|
57
|
+
|
|
58
|
+
// A given endpoint must report load metrics continuously for at least
|
|
59
|
+
// this long before the endpoint weight will be used. This avoids
|
|
60
|
+
// churn when the set of endpoint addresses changes. Takes effect
|
|
61
|
+
// both immediately after we establish a connection to an endpoint and
|
|
62
|
+
// after weight_expiration_period has caused us to stop using the most
|
|
63
|
+
// recent load metrics. Default is 10 seconds.
|
|
64
|
+
google.protobuf.Duration blackout_period = 3;
|
|
65
|
+
|
|
66
|
+
// If a given endpoint has not reported load metrics in this long,
|
|
67
|
+
// then we stop using the reported weight. This ensures that we do
|
|
68
|
+
// not continue to use very stale weights. Once we stop using a stale
|
|
69
|
+
// value, if we later start seeing fresh reports again, the
|
|
70
|
+
// blackout_period applies. Defaults to 3 minutes.
|
|
71
|
+
google.protobuf.Duration weight_expiration_period = 4;
|
|
72
|
+
|
|
73
|
+
// How often endpoint weights are recalculated. Values less than 100ms are
|
|
74
|
+
// capped at 100ms. Default is 1 second.
|
|
75
|
+
google.protobuf.Duration weight_update_period = 5;
|
|
76
|
+
|
|
77
|
+
// The multiplier used to adjust endpoint weights with the error rate
|
|
78
|
+
// calculated as eps/qps. Configuration is rejected if this value is negative.
|
|
79
|
+
// Default is 1.0.
|
|
80
|
+
google.protobuf.FloatValue error_utilization_penalty = 6 [(validate.rules).float = {gte: 0.0}];
|
|
81
|
+
|
|
82
|
+
// By default, endpoint weight is computed based on the :ref:`application_utilization <envoy_v3_api_field_.xds.data.orca.v3.OrcaLoadReport.application_utilization>` field reported by the endpoint.
|
|
83
|
+
// If that field is not set, then utilization will instead be computed by taking the max of the values of the metrics specified here.
|
|
84
|
+
// For map fields in the ORCA proto, the string will be of the form ``<map_field_name>.<map_key>``. For example, the string ``named_metrics.foo`` will mean to look for the key ``foo`` in the ORCA :ref:`named_metrics <envoy_v3_api_field_.xds.data.orca.v3.OrcaLoadReport.named_metrics>` field.
|
|
85
|
+
// If none of the specified metrics are present in the load report, then :ref:`cpu_utilization <envoy_v3_api_field_.xds.data.orca.v3.OrcaLoadReport.cpu_utilization>` is used instead.
|
|
86
|
+
repeated string metric_names_for_computing_utilization = 7;
|
|
87
|
+
|
|
88
|
+
// Configuration for slow start mode.
|
|
89
|
+
// If this configuration is not set, slow start will not be not enabled.
|
|
90
|
+
common.v3.SlowStartConfig slow_start_config = 8;
|
|
91
|
+
|
|
92
|
+
// Optional overrides for the OOB reporting connection (alternative port,
|
|
93
|
+
// ``:authority``, transport socket selection). Honored only when
|
|
94
|
+
// ``enable_oob_load_report`` is true.
|
|
95
|
+
common.v3.OrcaOobReportingConfig oob_reporting_config = 9;
|
|
96
|
+
}
|