api: minified v2 -> v3alpha upgrade via type dependency analysis. (#8529)

This patch moves away from the paradigm of sed-style upgrading of every v2
package to v3alpha. Instead, an additional type analysis phase is
performed prior to protoxform by a protoc plugin known as the "type
whisperer".

The type whisperer produces structured type dependency information for
each .proto. The tools/type_whisperer/typedb_gen.py tool then knits
these together to provide an API-wide type dependency graph. This is
then used to determine which types need upgrading (either they have
breaking changes or transitively depend on types with such changes).
Only packages with upgraded types now undergo the v2 -> v3alpha
transition.

The API type database is checked into
source/common/config/api_type_db.pb. This may seem a strange location,
but in the future we will include the type database as a build artifact
for the Envoy binary, as it will be used by the reflection-based version
converter to find the type upgrade path for input proto.

Risk level: Low (the v3alpha protos are not used yet).
Testing: fix_format, manual inspection of diffs, bazel test //test/...,
docs build.

Part of #8082
Fixes #8490

Signed-off-by: Harvey Tuch <htuch@google.com>

Mirrored from https://github.com/envoyproxy/envoy @ ad57b58cfbb256af41a467260dce2a8013b7a7fa
master-ci-test
data-plane-api(CircleCI) 5 years ago
parent 0cac03fc44
commit 4f2a5fb69a
  1. 7
      docs/BUILD
  2. 2
      envoy/admin/v3alpha/BUILD
  3. 22
      envoy/admin/v3alpha/clusters.proto
  4. 32
      envoy/admin/v3alpha/config_dump.proto
  5. 2
      envoy/api/v2/core/address.proto
  6. 6
      envoy/api/v2/endpoint/load_report.proto
  7. 10
      envoy/api/v2/lds.proto
  8. 8
      envoy/api/v2/rds.proto
  9. 4
      envoy/api/v3alpha/BUILD
  10. 45
      envoy/api/v3alpha/auth/cert.proto
  11. 112
      envoy/api/v3alpha/cds.proto
  12. 13
      envoy/api/v3alpha/cluster/circuit_breaker.proto
  13. 12
      envoy/api/v3alpha/cluster/outlier_detection.proto
  14. 2
      envoy/api/v3alpha/core/BUILD
  15. 14
      envoy/api/v3alpha/core/address.proto
  16. 17
      envoy/api/v3alpha/core/base.proto
  17. 6
      envoy/api/v3alpha/core/config_source.proto
  18. 9
      envoy/api/v3alpha/core/grpc_service.proto
  19. 6
      envoy/api/v3alpha/core/health_check.proto
  20. 19
      envoy/api/v3alpha/discovery.proto
  21. 8
      envoy/api/v3alpha/eds.proto
  22. 4
      envoy/api/v3alpha/endpoint/endpoint.proto
  23. 6
      envoy/api/v3alpha/endpoint/load_report.proto
  24. 48
      envoy/api/v3alpha/lds.proto
  25. 2
      envoy/api/v3alpha/listener/listener.proto
  26. 17
      envoy/api/v3alpha/rds.proto
  27. 5
      envoy/api/v3alpha/route/BUILD
  28. 117
      envoy/api/v3alpha/route/route.proto
  29. 4
      envoy/api/v3alpha/srds.proto
  30. 3
      envoy/config/bootstrap/v3alpha/BUILD
  31. 29
      envoy/config/bootstrap/v3alpha/bootstrap.proto
  32. 2
      envoy/config/filter/accesslog/v3alpha/BUILD
  33. 4
      envoy/config/filter/accesslog/v3alpha/accesslog.proto
  34. 13
      envoy/config/filter/dubbo/router/v3alpha/router.proto
  35. 5
      envoy/config/filter/fault/v3alpha/BUILD
  36. 7
      envoy/config/filter/fault/v3alpha/fault.proto
  37. 38
      envoy/config/filter/http/adaptive_concurrency/v2alpha/adaptive_concurrency.proto
  38. 5
      envoy/config/filter/http/adaptive_concurrency/v3alpha/BUILD
  39. 50
      envoy/config/filter/http/adaptive_concurrency/v3alpha/adaptive_concurrency.proto
  40. 7
      envoy/config/filter/http/buffer/v3alpha/BUILD
  41. 34
      envoy/config/filter/http/buffer/v3alpha/buffer.proto
  42. 2
      envoy/config/filter/http/csrf/v3alpha/BUILD
  43. 8
      envoy/config/filter/http/csrf/v3alpha/csrf.proto
  44. 4
      envoy/config/filter/http/ext_authz/v3alpha/BUILD
  45. 35
      envoy/config/filter/http/ext_authz/v3alpha/ext_authz.proto
  46. 2
      envoy/config/filter/http/fault/v3alpha/BUILD
  47. 4
      envoy/config/filter/http/fault/v3alpha/fault.proto
  48. 2
      envoy/config/filter/http/grpc_http1_reverse_bridge/v2alpha1/config.proto
  49. 7
      envoy/config/filter/http/grpc_http1_reverse_bridge/v3alpha/BUILD
  50. 26
      envoy/config/filter/http/grpc_http1_reverse_bridge/v3alpha/config.proto
  51. 7
      envoy/config/filter/http/gzip/v3alpha/BUILD
  52. 73
      envoy/config/filter/http/gzip/v3alpha/gzip.proto
  53. 92
      envoy/config/filter/http/header_to_metadata/v3alpha/header_to_metadata.proto
  54. 2
      envoy/config/filter/http/health_check/v3alpha/BUILD
  55. 4
      envoy/config/filter/http/health_check/v3alpha/health_check.proto
  56. 7
      envoy/config/filter/http/lua/v3alpha/BUILD
  57. 20
      envoy/config/filter/http/lua/v3alpha/lua.proto
  58. 7
      envoy/config/filter/http/original_src/v3alpha/BUILD
  59. 22
      envoy/config/filter/http/original_src/v3alpha/original_src.proto
  60. 7
      envoy/config/filter/http/squash/v3alpha/BUILD
  61. 52
      envoy/config/filter/http/squash/v3alpha/squash.proto
  62. 7
      envoy/config/filter/http/transcoder/v3alpha/BUILD
  63. 152
      envoy/config/filter/http/transcoder/v3alpha/transcoder.proto
  64. 7
      envoy/config/filter/listener/original_src/v3alpha/BUILD
  65. 26
      envoy/config/filter/listener/original_src/v3alpha/original_src.proto
  66. 4
      envoy/config/filter/network/dubbo_proxy/v3alpha/BUILD
  67. 8
      envoy/config/filter/network/dubbo_proxy/v3alpha/route.proto
  68. 3
      envoy/config/filter/network/http_connection_manager/v3alpha/BUILD
  69. 23
      envoy/config/filter/network/http_connection_manager/v3alpha/http_connection_manager.proto
  70. 14
      envoy/config/filter/network/redis_proxy/v3alpha/redis_proxy.proto
  71. 1
      envoy/config/filter/network/tcp_proxy/v3alpha/BUILD
  72. 1
      envoy/config/filter/network/tcp_proxy/v3alpha/tcp_proxy.proto
  73. 2
      envoy/config/filter/network/thrift_proxy/v3alpha/route.proto
  74. 5
      envoy/config/filter/network/thrift_proxy/v3alpha/thrift_proxy.proto
  75. 2
      envoy/config/filter/thrift/rate_limit/v3alpha/rate_limit.proto
  76. 7
      envoy/config/filter/thrift/router/v3alpha/BUILD
  77. 13
      envoy/config/filter/thrift/router/v3alpha/router.proto
  78. 7
      envoy/config/health_checker/redis/v3alpha/BUILD
  79. 18
      envoy/config/health_checker/redis/v3alpha/redis.proto
  80. 7
      envoy/config/listener/v3alpha/BUILD
  81. 24
      envoy/config/listener/v3alpha/api_listener.proto
  82. 2
      envoy/config/metrics/v3alpha/BUILD
  83. 8
      envoy/config/metrics/v3alpha/stats.proto
  84. 7
      envoy/config/overload/v3alpha/BUILD
  85. 78
      envoy/config/overload/v3alpha/overload.proto
  86. 2
      envoy/config/rbac/v2/rbac.proto
  87. 2
      envoy/config/rbac/v3alpha/BUILD
  88. 18
      envoy/config/rbac/v3alpha/rbac.proto
  89. 7
      envoy/config/resource_monitor/fixed_heap/v3alpha/BUILD
  90. 18
      envoy/config/resource_monitor/fixed_heap/v3alpha/fixed_heap.proto
  91. 7
      envoy/config/resource_monitor/injected_resource/v3alpha/BUILD
  92. 19
      envoy/config/resource_monitor/injected_resource/v3alpha/injected_resource.proto
  93. 6
      envoy/config/transport_socket/alts/v2alpha/alts.proto
  94. 7
      envoy/config/transport_socket/alts/v3alpha/BUILD
  95. 23
      envoy/config/transport_socket/alts/v3alpha/alts.proto
  96. 7
      envoy/data/cluster/v3alpha/BUILD
  97. 130
      envoy/data/cluster/v3alpha/outlier_detection_event.proto
  98. 5
      envoy/data/core/v3alpha/health_check_event.proto
  99. 2
      envoy/service/auth/v3alpha/BUILD
  100. 4
      envoy/service/auth/v3alpha/external_auth.proto
  101. Some files were not shown because too many files have changed in this diff Show More

@ -29,11 +29,13 @@ proto_library(
"//envoy/config/filter/accesslog/v2:pkg",
"//envoy/config/filter/dubbo/router/v2alpha1:pkg",
"//envoy/config/filter/fault/v2:pkg",
"//envoy/config/filter/http/adaptive_concurrency/v2alpha:pkg",
"//envoy/config/filter/http/buffer/v2:pkg",
"//envoy/config/filter/http/csrf/v2:pkg",
"//envoy/config/filter/http/dynamic_forward_proxy/v2alpha:pkg",
"//envoy/config/filter/http/ext_authz/v2:pkg",
"//envoy/config/filter/http/fault/v2:pkg",
"//envoy/config/filter/http/grpc_http1_reverse_bridge/v2alpha1:pkg",
"//envoy/config/filter/http/gzip/v2:pkg",
"//envoy/config/filter/http/header_to_metadata/v2:pkg",
"//envoy/config/filter/http/health_check/v2:pkg",
@ -62,6 +64,7 @@ proto_library(
"//envoy/config/filter/thrift/router/v2alpha1:pkg",
"//envoy/config/grpc_credential/v2alpha:pkg",
"//envoy/config/health_checker/redis/v2:pkg",
"//envoy/config/listener/v2:pkg",
"//envoy/config/metrics/v2:pkg",
"//envoy/config/overload/v2alpha:pkg",
"//envoy/config/ratelimit/v2:pkg",
@ -69,6 +72,7 @@ proto_library(
"//envoy/config/resource_monitor/fixed_heap/v2alpha:pkg",
"//envoy/config/resource_monitor/injected_resource/v2alpha:pkg",
"//envoy/config/trace/v2:pkg",
"//envoy/config/transport_socket/alts/v2alpha:pkg",
"//envoy/config/transport_socket/tap/v2alpha:pkg",
"//envoy/data/accesslog/v2:pkg",
"//envoy/data/cluster/v2alpha:pkg",
@ -77,8 +81,11 @@ proto_library(
"//envoy/service/accesslog/v2:pkg",
"//envoy/service/auth/v2:pkg",
"//envoy/service/discovery/v2:pkg",
"//envoy/service/load_stats/v2:pkg",
"//envoy/service/metrics/v2:pkg",
"//envoy/service/ratelimit/v2:pkg",
"//envoy/service/tap/v2alpha:pkg",
"//envoy/service/trace/v2:pkg",
"//envoy/type:pkg",
"//envoy/type/matcher:pkg",
],

@ -11,6 +11,6 @@ api_proto_package(
"//envoy/api/v3alpha/core:pkg",
"//envoy/config/bootstrap/v3alpha:pkg",
"//envoy/service/tap/v3alpha:pkg",
"//envoy/type:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -9,7 +9,7 @@ option java_package = "io.envoyproxy.envoy.admin.v3alpha";
import "envoy/admin/v3alpha/metrics.proto";
import "envoy/api/v3alpha/core/address.proto";
import "envoy/api/v3alpha/core/health_check.proto";
import "envoy/type/percent.proto";
import "envoy/type/v3alpha/percent.proto";
// [#protodoc-title: Clusters]
@ -30,10 +30,10 @@ message ClusterStatus {
// The success rate threshold used in the last interval.
// If
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_api.v3alpha.cluster.OutlierDetection.split_external_local_origin_errors>`
// is *false*, all errors: externally and locally generated were used to calculate the threshold.
// If
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_api.v3alpha.cluster.OutlierDetection.split_external_local_origin_errors>`
// is *true*, only externally generated errors were used to calculate the threshold.
// The threshold is used to eject hosts based on their success rate. See
// :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for details.
@ -45,7 +45,7 @@ message ClusterStatus {
// 2. The threshold is computed to be < 0 because a negative value implies that there was no
// threshold for that interval.
// 3. Outlier detection is not enabled for this cluster.
type.Percent success_rate_ejection_threshold = 3;
type.v3alpha.Percent success_rate_ejection_threshold = 3;
// Mapping from host address to the host's current status.
repeated HostStatus host_statuses = 4;
@ -53,7 +53,7 @@ message ClusterStatus {
// The success rate threshold used in the last interval when only locally originated failures were
// taken into account and externally originated errors were treated as success.
// This field should be interpretted only when
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_api.v3alpha.cluster.OutlierDetection.split_external_local_origin_errors>`
// is *true*. The threshold is used to eject hosts based on their success rate.
// See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for
// details.
@ -65,7 +65,7 @@ message ClusterStatus {
// 2. The threshold is computed to be < 0 because a negative value implies that there was no
// threshold for that interval.
// 3. Outlier detection is not enabled for this cluster.
type.Percent local_origin_success_rate_ejection_threshold = 5;
type.v3alpha.Percent local_origin_success_rate_ejection_threshold = 5;
}
// Current state of a particular host.
@ -81,10 +81,10 @@ message HostStatus {
// Request success rate for this host over the last calculated interval.
// If
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_api.v3alpha.cluster.OutlierDetection.split_external_local_origin_errors>`
// is *false*, all errors: externally and locally generated were used in success rate
// calculation. If
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_api.v3alpha.cluster.OutlierDetection.split_external_local_origin_errors>`
// is *true*, only externally generated errors were used in success rate calculation.
// See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for
// details.
@ -92,7 +92,7 @@ message HostStatus {
// Note: the message will not be present if host did not have enough request volume to calculate
// success rate or the cluster did not have enough hosts to run through success rate outlier
// ejection.
type.Percent success_rate = 4;
type.v3alpha.Percent success_rate = 4;
// The host's weight. If not configured, the value defaults to 1.
uint32 weight = 5;
@ -107,7 +107,7 @@ message HostStatus {
// interval when only locally originated errors are taken into account and externally originated
// errors were treated as success.
// This field should be interpretted only when
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_api.v3alpha.cluster.OutlierDetection.split_external_local_origin_errors>`
// is *true*.
// See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for
// details.
@ -115,7 +115,7 @@ message HostStatus {
// Note: the message will not be present if host did not have enough request volume to calculate
// success rate or the cluster did not have enough hosts to run through success rate outlier
// ejection.
type.Percent local_origin_success_rate = 8;
type.v3alpha.Percent local_origin_success_rate = 8;
}
// Health status for a host.

@ -61,9 +61,9 @@ message ListenersConfigDump {
// Describes a dynamically loaded cluster via the LDS API.
message DynamicListener {
// This is the per-resource version information. This version is currently taken from the
// :ref:`version_info <envoy_api_field_DiscoveryResponse.version_info>` field at the time
// that the listener was loaded. In the future, discrete per-listener versions may be supported
// by the API.
// :ref:`version_info <envoy_api_field_api.v3alpha.DiscoveryResponse.version_info>` field at the
// time that the listener was loaded. In the future, discrete per-listener versions may be
// supported by the API.
string version_info = 1;
// The listener config.
@ -73,9 +73,9 @@ message ListenersConfigDump {
google.protobuf.Timestamp last_updated = 3;
}
// This is the :ref:`version_info <envoy_api_field_DiscoveryResponse.version_info>` in the
// last processed LDS discovery response. If there are only static bootstrap listeners, this field
// will be "".
// This is the :ref:`version_info <envoy_api_field_api.v3alpha.DiscoveryResponse.version_info>` in
// the last processed LDS discovery response. If there are only static bootstrap listeners, this
// field will be "".
string version_info = 1;
// The statically loaded listener configs.
@ -114,9 +114,9 @@ message ClustersConfigDump {
// Describes a dynamically loaded cluster via the CDS API.
message DynamicCluster {
// This is the per-resource version information. This version is currently taken from the
// :ref:`version_info <envoy_api_field_DiscoveryResponse.version_info>` field at the time
// that the cluster was loaded. In the future, discrete per-cluster versions may be supported by
// the API.
// :ref:`version_info <envoy_api_field_api.v3alpha.DiscoveryResponse.version_info>` field at the
// time that the cluster was loaded. In the future, discrete per-cluster versions may be
// supported by the API.
string version_info = 1;
// The cluster config.
@ -126,9 +126,9 @@ message ClustersConfigDump {
google.protobuf.Timestamp last_updated = 3;
}
// This is the :ref:`version_info <envoy_api_field_DiscoveryResponse.version_info>` in the
// last processed CDS discovery response. If there are only static bootstrap clusters, this field
// will be "".
// This is the :ref:`version_info <envoy_api_field_api.v3alpha.DiscoveryResponse.version_info>` in
// the last processed CDS discovery response. If there are only static bootstrap clusters, this
// field will be "".
string version_info = 1;
// The statically loaded cluster configs.
@ -161,8 +161,8 @@ message RoutesConfigDump {
message DynamicRouteConfig {
// This is the per-resource version information. This version is currently taken from the
// :ref:`version_info <envoy_api_field_DiscoveryResponse.version_info>` field at the time that
// the route configuration was loaded.
// :ref:`version_info <envoy_api_field_api.v3alpha.DiscoveryResponse.version_info>` field at the
// time that the route configuration was loaded.
string version_info = 1;
// The route config.
@ -200,8 +200,8 @@ message ScopedRoutesConfigDump {
string name = 1;
// This is the per-resource version information. This version is currently taken from the
// :ref:`version_info <envoy_api_field_DiscoveryResponse.version_info>` field at the time that
// the scoped routes configuration was loaded.
// :ref:`version_info <envoy_api_field_api.v3alpha.DiscoveryResponse.version_info>` field at the
// time that the scoped routes configuration was loaded.
string version_info = 2;
// The scoped route configurations.

@ -25,8 +25,6 @@ message Pipe {
message SocketAddress {
enum Protocol {
TCP = 0;
// [#not-implemented-hide:]
UDP = 1;
}

@ -16,7 +16,7 @@ import "validate/validate.proto";
// These are stats Envoy reports to GLB every so often. Report frequency is
// defined by
// :ref:`LoadStatsResponse.load_reporting_interval<envoy_api_field_load_stats.LoadStatsResponse.load_reporting_interval>`.
// :ref:`LoadStatsResponse.load_reporting_interval<envoy_api_field_service.load_stats.v2.LoadStatsResponse.load_reporting_interval>`.
// Stats per upstream region/zone and optionally per subzone.
// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
message UpstreamLocalityStats {
@ -45,7 +45,7 @@ message UpstreamLocalityStats {
// Endpoint granularity stats information for this locality. This information
// is populated if the Server requests it by setting
// :ref:`LoadStatsResponse.report_endpoint_granularity<envoy_api_field_load_stats.LoadStatsResponse.report_endpoint_granularity>`.
// :ref:`LoadStatsResponse.report_endpoint_granularity<envoy_api_field_service.load_stats.v2.LoadStatsResponse.report_endpoint_granularity>`.
repeated UpstreamEndpointStats upstream_endpoint_stats = 7;
// [#not-implemented-hide:] The priority of the endpoint group these metrics
@ -106,7 +106,7 @@ message EndpointLoadMetricStats {
}
// Per cluster load stats. Envoy reports these stats a management server in a
// :ref:`LoadStatsRequest<envoy_api_msg_load_stats.LoadStatsRequest>`
// :ref:`LoadStatsRequest<envoy_api_msg_service.load_stats.v2.LoadStatsRequest>`
// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
// Next ID: 7
message ClusterStats {

@ -127,8 +127,8 @@ message Listener {
// filters are processed sequentially right after a socket has been accepted by the listener, and
// before a connection is created.
// UDP Listener filters can be specified when the protocol in the listener socket address in
// :ref:`protocol <envoy_api_field_core.SocketAddress.protocol>` is :ref:'UDP
// <envoy_api_field_core.Protocol.UDP>`.
// :ref:`protocol <envoy_api_field_core.SocketAddress.protocol>` is :ref:`UDP
// <envoy_api_enum_value_core.SocketAddress.Protocol.UDP>`.
// UDP listeners currently support a single filter.
repeated listener.ListenerFilter listener_filters = 9;
@ -195,9 +195,9 @@ message Listener {
core.TrafficDirection traffic_direction = 16;
// If the protocol in the listener socket address in :ref:`protocol
// <envoy_api_field_core.SocketAddress.protocol>` is :ref:'UDP
// <envoy_api_field_core.Protocol.UDP>`, this field specifies the actual udp listener to create,
// i.e. :ref:`udp_listener_name
// <envoy_api_field_core.SocketAddress.protocol>` is :ref:`UDP
// <envoy_api_enum_value_core.SocketAddress.Protocol.UDP>`, this field specifies the actual udp
// listener to create, i.e. :ref:`udp_listener_name
// <envoy_api_field_listener.UdpListenerConfig.udp_listener_name>` = "raw_udp_listener" for
// creating a packet-oriented UDP listener. If not present, treat it as "raw_udp_listener".
listener.UdpListenerConfig udp_listener_config = 18;

@ -44,13 +44,13 @@ service RouteDiscoveryService {
// Virtual Host Discovery Service (VHDS) is used to dynamically update the list of virtual hosts for
// a given RouteConfiguration. If VHDS is configured a virtual host list update will be triggered
// during the processing of an HTTP request if a route for the request cannot be resolved. The
// :ref:`resource_names_subscribe <envoy_api_msg_DeltaDiscoveryRequest.resource_names_subscribe>`
// :ref:`resource_names_subscribe <envoy_api_field_DeltaDiscoveryRequest.resource_names_subscribe>`
// field contains a list of virtual host names or aliases to track. The contents of an alias would
// be the contents of a *host* or *authority* header used to make an http request. An xDS server
// will match an alias to a virtual host based on the content of :ref:`domains'
// <envoy_api_msg_route.VirtualHost.domains>` field. The *resource_names_unsubscribe* field contains
// a list of virtual host names that have been :ref:`unsubscribed <xds_protocol_unsubscribe>`
// from the routing table associated with the RouteConfiguration.
// <envoy_api_field_route.VirtualHost.domains>` field. The *resource_names_unsubscribe* field
// contains a list of virtual host names that have been :ref:`unsubscribed
// <xds_protocol_unsubscribe>` from the routing table associated with the RouteConfiguration.
service VirtualHostDiscoveryService {
rpc DeltaVirtualHosts(stream DeltaDiscoveryRequest) returns (stream DeltaDiscoveryResponse) {
}

@ -13,7 +13,7 @@ api_proto_package(
"//envoy/api/v3alpha/endpoint:pkg",
"//envoy/api/v3alpha/listener:pkg",
"//envoy/api/v3alpha/route:pkg",
"//envoy/config/listener/v3alpha:pkg",
"//envoy/type:pkg",
"//envoy/config/listener/v2:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -124,12 +124,12 @@ message TlsCertificate {
core.DataSource private_key = 2;
// BoringSSL private key method provider. This is an alternative to :ref:`private_key
// <envoy_api_field_auth.TlsCertificate.private_key>` field. This can't be
// <envoy_api_field_api.v3alpha.auth.TlsCertificate.private_key>` field. This can't be
// marked as ``oneof`` due to API compatibility reasons. Setting both :ref:`private_key
// <envoy_api_field_auth.TlsCertificate.private_key>` and
// <envoy_api_field_api.v3alpha.auth.TlsCertificate.private_key>` and
// :ref:`private_key_provider
// <envoy_api_field_auth.TlsCertificate.private_key_provider>` fields will result in an
// error.
// <envoy_api_field_api.v3alpha.auth.TlsCertificate.private_key_provider>` fields will result in
// an error.
PrivateKeyProvider private_key_provider = 6;
// The password to decrypt the TLS private key. If this field is not set, it is assumed that the
@ -149,10 +149,11 @@ message TlsSessionTicketKeys {
// All keys are candidates for decrypting received tickets. This allows for easy rotation of keys
// by, for example, putting the new key first, and the previous key second.
//
// If :ref:`session_ticket_keys <envoy_api_field_auth.DownstreamTlsContext.session_ticket_keys>`
// is not specified, the TLS library will still support resuming sessions via tickets, but it will
// use an internally-generated and managed key, so sessions cannot be resumed across hot restarts
// or on different hosts.
// If :ref:`session_ticket_keys
// <envoy_api_field_api.v3alpha.auth.DownstreamTlsContext.session_ticket_keys>` is not specified,
// the TLS library will still support resuming sessions via tickets, but it will use an
// internally-generated and managed key, so sessions cannot be resumed across hot restarts or on
// different hosts.
//
// Each key must contain exactly 80 bytes of cryptographically-secure random data. For
// example, the output of ``openssl rand 80``.
@ -176,14 +177,14 @@ message CertificateValidationContext {
// for listeners). If not specified and a peer certificate is presented it will not be
// verified. By default, a client certificate is optional, unless one of the additional
// options (:ref:`require_client_certificate
// <envoy_api_field_auth.DownstreamTlsContext.require_client_certificate>`,
// <envoy_api_field_api.v3alpha.auth.DownstreamTlsContext.require_client_certificate>`,
// :ref:`verify_certificate_spki
// <envoy_api_field_auth.CertificateValidationContext.verify_certificate_spki>`,
// <envoy_api_field_api.v3alpha.auth.CertificateValidationContext.verify_certificate_spki>`,
// :ref:`verify_certificate_hash
// <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>`, or
// <envoy_api_field_api.v3alpha.auth.CertificateValidationContext.verify_certificate_hash>`, or
// :ref:`verify_subject_alt_name
// <envoy_api_field_auth.CertificateValidationContext.verify_subject_alt_name>`) is also
// specified.
// <envoy_api_field_api.v3alpha.auth.CertificateValidationContext.verify_subject_alt_name>`) is
// also specified.
//
// It can optionally contain certificate revocation lists, in which case Envoy will verify
// that the presented peer certificate has not been revoked by one of the included CRLs.
@ -211,15 +212,16 @@ message CertificateValidationContext {
//
// When both:
// :ref:`verify_certificate_hash
// <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>` and
// <envoy_api_field_api.v3alpha.auth.CertificateValidationContext.verify_certificate_hash>` and
// :ref:`verify_certificate_spki
// <envoy_api_field_auth.CertificateValidationContext.verify_certificate_spki>` are specified,
// a hash matching value from either of the lists will result in the certificate being accepted.
// <envoy_api_field_api.v3alpha.auth.CertificateValidationContext.verify_certificate_spki>` are
// specified, a hash matching value from either of the lists will result in the certificate being
// accepted.
//
// .. attention::
//
// This option is preferred over :ref:`verify_certificate_hash
// <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>`,
// <envoy_api_field_api.v3alpha.auth.CertificateValidationContext.verify_certificate_hash>`,
// because SPKI is tied to a private key, so it doesn't change when the certificate
// is renewed using the same private key.
repeated string verify_certificate_spki = 3
@ -247,10 +249,11 @@ message CertificateValidationContext {
//
// When both:
// :ref:`verify_certificate_hash
// <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>` and
// <envoy_api_field_api.v3alpha.auth.CertificateValidationContext.verify_certificate_hash>` and
// :ref:`verify_certificate_spki
// <envoy_api_field_auth.CertificateValidationContext.verify_certificate_spki>` are specified,
// a hash matching value from either of the lists will result in the certificate being accepted.
// <envoy_api_field_api.v3alpha.auth.CertificateValidationContext.verify_certificate_spki>` are
// specified, a hash matching value from either of the lists will result in the certificate being
// accepted.
repeated string verify_certificate_hash = 2
[(validate.rules).repeated = {items {string {min_bytes: 64 max_bytes: 95}}}];
@ -261,7 +264,7 @@ message CertificateValidationContext {
//
// Subject Alternative Names are easily spoofable and verifying only them is insecure,
// therefore this option must be used together with :ref:`trusted_ca
// <envoy_api_field_auth.CertificateValidationContext.trusted_ca>`.
// <envoy_api_field_api.v3alpha.auth.CertificateValidationContext.trusted_ca>`.
repeated string verify_subject_alt_name = 4;
// [#not-implemented-hide:] Must present a signed time-stamped OCSP response.

@ -18,7 +18,7 @@ import "envoy/api/v3alpha/core/health_check.proto";
import "envoy/api/v3alpha/core/protocol.proto";
import "envoy/api/v3alpha/discovery.proto";
import "envoy/api/v3alpha/eds.proto";
import "envoy/type/percent.proto";
import "envoy/type/v3alpha/percent.proto";
import "google/api/annotations.proto";
import "google/protobuf/any.proto";
@ -113,7 +113,8 @@ message Cluster {
CLUSTER_PROVIDED = 6;
// [#not-implemented-hide:] Use the new :ref:`load_balancing_policy
// <envoy_api_field_Cluster.load_balancing_policy>` field to determine the LB policy.
// <envoy_api_field_api.v3alpha.Cluster.load_balancing_policy>` field to determine the LB
// policy.
// [#next-major-version: In the v3 API, we should consider deprecating the lb_policy field
// and instead using the new load_balancing_policy field as the one and only mechanism for
// configuring this.]
@ -126,8 +127,8 @@ message Cluster {
// specified, the DNS resolver will first perform a lookup for addresses in
// the IPv6 family and fallback to a lookup for addresses in the IPv4 family.
// For cluster types other than
// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>` and
// :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`,
// :ref:`STRICT_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STRICT_DNS>` and
// :ref:`LOGICAL_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.LOGICAL_DNS>`,
// this setting is
// ignored.
enum DnsLookupFamily {
@ -138,8 +139,8 @@ message Cluster {
enum ClusterProtocolSelection {
// Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2).
// If :ref:`http2_protocol_options <envoy_api_field_Cluster.http2_protocol_options>` are
// present, HTTP2 will be used, otherwise HTTP1.1 will be used.
// If :ref:`http2_protocol_options <envoy_api_field_api.v3alpha.Cluster.http2_protocol_options>`
// are present, HTTP2 will be used, otherwise HTTP1.1 will be used.
USE_CONFIGURED_PROTOCOL = 0;
// Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection.
@ -228,17 +229,17 @@ message Cluster {
// The behavior used when no endpoint subset matches the selected route's
// metadata. The value defaults to
// :ref:`NO_FALLBACK<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
// :ref:`NO_FALLBACK<envoy_api_enum_value_api.v3alpha.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
LbSubsetFallbackPolicy fallback_policy = 1 [(validate.rules).enum = {defined_only: true}];
// Specifies the default subset of endpoints used during fallback if
// fallback_policy is
// :ref:`DEFAULT_SUBSET<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.DEFAULT_SUBSET>`.
// :ref:`DEFAULT_SUBSET<envoy_api_enum_value_api.v3alpha.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.DEFAULT_SUBSET>`.
// Each field in default_subset is
// compared to the matching LbEndpoint.Metadata under the *envoy.lb*
// namespace. It is valid for no hosts to match, in which case the behavior
// is the same as a fallback_policy of
// :ref:`NO_FALLBACK<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
// :ref:`NO_FALLBACK<envoy_api_enum_value_api.v3alpha.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
google.protobuf.Struct default_subset = 2;
// For each entry, LbEndpoint.Metadata's
@ -315,16 +316,16 @@ message Cluster {
// Minimum hash ring size. The larger the ring is (that is, the more hashes there are for each
// provided host) the better the request distribution will reflect the desired weights. Defaults
// to 1024 entries, and limited to 8M entries. See also
// :ref:`maximum_ring_size<envoy_api_field_Cluster.RingHashLbConfig.maximum_ring_size>`.
// :ref:`maximum_ring_size<envoy_api_field_api.v3alpha.Cluster.RingHashLbConfig.maximum_ring_size>`.
google.protobuf.UInt64Value minimum_ring_size = 1 [(validate.rules).uint64 = {lte: 8388608}];
// The hash function used to hash hosts onto the ketama ring. The value defaults to
// :ref:`XX_HASH<envoy_api_enum_value_Cluster.RingHashLbConfig.HashFunction.XX_HASH>`.
// :ref:`XX_HASH<envoy_api_enum_value_api.v3alpha.Cluster.RingHashLbConfig.HashFunction.XX_HASH>`.
HashFunction hash_function = 3 [(validate.rules).enum = {defined_only: true}];
// Maximum hash ring size. Defaults to 8M entries, and limited to 8M entries, but can be lowered
// to further constrain resource use. See also
// :ref:`minimum_ring_size<envoy_api_field_Cluster.RingHashLbConfig.minimum_ring_size>`.
// :ref:`minimum_ring_size<envoy_api_field_api.v3alpha.Cluster.RingHashLbConfig.minimum_ring_size>`.
google.protobuf.UInt64Value maximum_ring_size = 4 [(validate.rules).uint64 = {lte: 8388608}];
}
@ -353,7 +354,7 @@ message Cluster {
// if zone aware routing is configured. If not specified, the default is 100%.
// * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
// * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
type.Percent routing_enabled = 1;
type.v3alpha.Percent routing_enabled = 1;
// Configures minimum upstream cluster size required for zone aware routing
// If upstream cluster size is less than specified, zone aware routing is not performed
@ -380,7 +381,7 @@ message Cluster {
//
// .. note::
// The specified percent will be truncated to the nearest 1%.
type.Percent healthy_panic_threshold = 1;
type.v3alpha.Percent healthy_panic_threshold = 1;
oneof locality_config_specifier {
ZoneAwareLbConfig zone_aware_lb_config = 2;
@ -433,7 +434,7 @@ message Cluster {
message RefreshRate {
// Specifies the base interval between refreshes. This parameter is required and must be greater
// than zero and less than
// :ref:`max_interval <envoy_api_field_Cluster.RefreshRate.max_interval>`.
// :ref:`max_interval <envoy_api_field_api.v3alpha.Cluster.RefreshRate.max_interval>`.
google.protobuf.Duration base_interval = 1 [(validate.rules).duration = {
required: true
gt {nanos: 1000000}
@ -441,8 +442,9 @@ message Cluster {
// Specifies the maximum interval between refreshes. This parameter is optional, but must be
// greater than or equal to the
// :ref:`base_interval <envoy_api_field_Cluster.RefreshRate.base_interval>` if set. The default
// is 10 times the :ref:`base_interval <envoy_api_field_Cluster.RefreshRate.base_interval>`.
// :ref:`base_interval <envoy_api_field_api.v3alpha.Cluster.RefreshRate.base_interval>` if set.
// The default is 10 times the :ref:`base_interval
// <envoy_api_field_api.v3alpha.Cluster.RefreshRate.base_interval>`.
google.protobuf.Duration max_interval = 2 [(validate.rules).duration = {gt {nanos: 1000000}}];
}
@ -450,9 +452,9 @@ message Cluster {
// Configuration to use different transport sockets for different endpoints.
// The entry of *envoy.transport_socket* in the
// :ref:`LbEndpoint.Metadata <envoy_api_field_endpoint.LbEndpoint.metadata>`
// :ref:`LbEndpoint.Metadata <envoy_api_field_api.v3alpha.endpoint.LbEndpoint.metadata>`
// is used to match against the transport sockets as they appear in the list. The first
// :ref:`match <envoy_api_msg_Cluster.TransportSocketMatch>` is used.
// :ref:`match <envoy_api_msg_api.v3alpha.Cluster.TransportSocketMatch>` is used.
// For example, with the following match
//
// .. code-block:: yaml
@ -472,9 +474,9 @@ message Cluster {
// Connections to the endpoints whose metadata value under *envoy.transport_socket*
// having "acceptMTLS"/"true" key/value pair use the "enableMTLS" socket configuration.
//
// If a :ref:`socket match <envoy_api_msg_Cluster.TransportSocketMatch>` with empty match
// criteria is provided, that always match any endpoint. For example, the "defaultToPlaintext"
// socket match in case above.
// If a :ref:`socket match <envoy_api_msg_api.v3alpha.Cluster.TransportSocketMatch>` with empty
// match criteria is provided, that always match any endpoint. For example, the
// "defaultToPlaintext" socket match in case above.
//
// If an endpoint metadata's value under *envoy.transport_socket* does not match any
// *TransportSocketMatch*, socket configuration fallbacks to use the *tls_context* or
@ -499,7 +501,7 @@ message Cluster {
// Supplies the name of the cluster which must be unique across all clusters.
// The cluster name is used when emitting
// :ref:`statistics <config_cluster_manager_cluster_stats>` if :ref:`alt_stat_name
// <envoy_api_field_Cluster.alt_stat_name>` is not provided.
// <envoy_api_field_api.v3alpha.Cluster.alt_stat_name>` is not provided.
// Any ``:`` in the cluster name will be converted to ``_`` when emitting statistics.
string name = 1 [(validate.rules).string = {min_bytes: 1}];
@ -533,31 +535,31 @@ message Cluster {
LbPolicy lb_policy = 6 [(validate.rules).enum = {defined_only: true}];
// If the service discovery type is
// :ref:`STATIC<envoy_api_enum_value_Cluster.DiscoveryType.STATIC>`,
// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`,
// :ref:`STATIC<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STATIC>`,
// :ref:`STRICT_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STRICT_DNS>`
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.LOGICAL_DNS>`,
// then hosts is required.
//
// .. attention::
//
// **This field is deprecated**. Set the
// :ref:`load_assignment<envoy_api_field_Cluster.load_assignment>` field instead.
// :ref:`load_assignment<envoy_api_field_api.v3alpha.Cluster.load_assignment>` field instead.
//
repeated core.Address hosts = 7;
// Setting this is required for specifying members of
// :ref:`STATIC<envoy_api_enum_value_Cluster.DiscoveryType.STATIC>`,
// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>` clusters.
// This field supersedes :ref:`hosts<envoy_api_field_Cluster.hosts>` field.
// :ref:`STATIC<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STATIC>`,
// :ref:`STRICT_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STRICT_DNS>`
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.LOGICAL_DNS>`
// clusters. This field supersedes :ref:`hosts<envoy_api_field_api.v3alpha.Cluster.hosts>` field.
// [#comment:TODO(dio): Deprecate the hosts field and add it to :ref:`deprecated log<deprecated>`
// once load_assignment is implemented.]
//
// .. attention::
//
// Setting this allows non-EDS cluster types to contain embedded EDS equivalent
// :ref:`endpoint assignments<envoy_api_msg_ClusterLoadAssignment>`.
// Setting this overrides :ref:`hosts<envoy_api_field_Cluster.hosts>` values.
// :ref:`endpoint assignments<envoy_api_msg_api.v3alpha.ClusterLoadAssignment>`.
// Setting this overrides :ref:`hosts<envoy_api_field_api.v3alpha.Cluster.hosts>` values.
//
ClusterLoadAssignment load_assignment = 33;
@ -582,8 +584,8 @@ message Cluster {
// .. attention::
//
// Server certificate verification is not enabled by default. Configure
// :ref:`trusted_ca<envoy_api_field_auth.CertificateValidationContext.trusted_ca>` to enable
// verification.
// :ref:`trusted_ca<envoy_api_field_api.v3alpha.auth.CertificateValidationContext.trusted_ca>`
// to enable verification.
auth.UpstreamTlsContext tls_context = 11;
// Additional options when handling HTTP requests upstream. These options will be applicable to
@ -614,24 +616,24 @@ message Cluster {
map<string, google.protobuf.Any> typed_extension_protocol_options = 36;
// If the DNS refresh rate is specified and the cluster type is either
// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`,
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`,
// :ref:`STRICT_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STRICT_DNS>`,
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.LOGICAL_DNS>`,
// this value is used as the clusters DNS refresh
// rate. If this setting is not specified, the value defaults to 5000ms. For
// cluster types other than
// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`
// and :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`
// :ref:`STRICT_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STRICT_DNS>`
// and :ref:`LOGICAL_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.LOGICAL_DNS>`
// this setting is ignored.
google.protobuf.Duration dns_refresh_rate = 16 [(validate.rules).duration = {gt {}}];
// If the DNS failure refresh rate is specified and the cluster type is either
// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`,
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`,
// :ref:`STRICT_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STRICT_DNS>`,
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.LOGICAL_DNS>`,
// this is used as the clusters DNS refresh rate when requests are failing. If this setting is
// not specified, the failure refresh rate defaults to the DNS refresh rate. For cluster types
// other than :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>` and
// :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>` this setting is
// ignored.
// other than :ref:`STRICT_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STRICT_DNS>`
// and :ref:`LOGICAL_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.LOGICAL_DNS>` this
// setting is ignored.
//
// Note: Currently, DNS failures and empty DNS responses are not treated differently and this
// configuration is applied in both situations.
@ -644,18 +646,18 @@ message Cluster {
// The DNS IP address resolution policy. If this setting is not specified, the
// value defaults to
// :ref:`AUTO<envoy_api_enum_value_Cluster.DnsLookupFamily.AUTO>`.
// :ref:`AUTO<envoy_api_enum_value_api.v3alpha.Cluster.DnsLookupFamily.AUTO>`.
DnsLookupFamily dns_lookup_family = 17 [(validate.rules).enum = {defined_only: true}];
// If DNS resolvers are specified and the cluster type is either
// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`,
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`,
// :ref:`STRICT_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STRICT_DNS>`,
// or :ref:`LOGICAL_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.LOGICAL_DNS>`,
// this value is used to specify the clusters dns resolvers.
// If this setting is not specified, the value defaults to the default
// resolver, which uses /etc/resolv.conf for configuration. For cluster types
// other than
// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`
// and :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`
// :ref:`STRICT_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.STRICT_DNS>`
// and :ref:`LOGICAL_DNS<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.LOGICAL_DNS>`
// this setting is ignored.
repeated core.Address dns_resolvers = 18;
@ -665,7 +667,7 @@ message Cluster {
cluster.OutlierDetection outlier_detection = 19;
// The interval for removing stale hosts from a cluster type
// :ref:`ORIGINAL_DST<envoy_api_enum_value_Cluster.DiscoveryType.ORIGINAL_DST>`.
// :ref:`ORIGINAL_DST<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.ORIGINAL_DST>`.
// Hosts are considered stale if they have not been used
// as upstream destinations during this interval. New hosts are added
// to original destination clusters on demand as new connections are
@ -675,7 +677,7 @@ message Cluster {
// them remain open, saving the latency that would otherwise be spent
// on opening new connections. If this setting is not specified, the
// value defaults to 5000ms. For cluster types other than
// :ref:`ORIGINAL_DST<envoy_api_enum_value_Cluster.DiscoveryType.ORIGINAL_DST>`
// :ref:`ORIGINAL_DST<envoy_api_enum_value_api.v3alpha.Cluster.DiscoveryType.ORIGINAL_DST>`
// this setting is ignored.
google.protobuf.Duration cleanup_interval = 20 [(validate.rules).duration = {gt {}}];
@ -689,8 +691,8 @@ message Cluster {
// Optional configuration for the load balancing algorithm selected by
// LbPolicy. Currently only
// :ref:`RING_HASH<envoy_api_enum_value_Cluster.LbPolicy.RING_HASH>` and
// :ref:`LEAST_REQUEST<envoy_api_enum_value_Cluster.LbPolicy.LEAST_REQUEST>`
// :ref:`RING_HASH<envoy_api_enum_value_api.v3alpha.Cluster.LbPolicy.RING_HASH>` and
// :ref:`LEAST_REQUEST<envoy_api_enum_value_api.v3alpha.Cluster.LbPolicy.LEAST_REQUEST>`
// has additional configuration options.
// Specifying ring_hash_lb_config or least_request_lb_config without setting the corresponding
// LbPolicy will generate an error at runtime.
@ -753,8 +755,8 @@ message Cluster {
repeated cluster.Filter filters = 40;
// [#not-implemented-hide:] New mechanism for LB policy configuration. Used only if the
// :ref:`lb_policy<envoy_api_field_Cluster.lb_policy>` field has the value
// :ref:`LOAD_BALANCING_POLICY_CONFIG<envoy_api_enum_value_Cluster.LbPolicy.LOAD_BALANCING_POLICY_CONFIG>`.
// :ref:`lb_policy<envoy_api_field_api.v3alpha.Cluster.lb_policy>` field has the value
// :ref:`LOAD_BALANCING_POLICY_CONFIG<envoy_api_enum_value_api.v3alpha.Cluster.LbPolicy.LOAD_BALANCING_POLICY_CONFIG>`.
LoadBalancingPolicy load_balancing_policy = 41;
// [#not-implemented-hide:]

@ -16,9 +16,9 @@ import "google/protobuf/wrappers.proto";
// specified individually for each defined priority.
message CircuitBreakers {
// A Thresholds defines CircuitBreaker settings for a
// :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`.
// :ref:`RoutingPriority<envoy_api_enum_api.v3alpha.core.RoutingPriority>`.
message Thresholds {
// The :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`
// The :ref:`RoutingPriority<envoy_api_enum_api.v3alpha.core.RoutingPriority>`
// the specified CircuitBreaker settings apply to.
// [#comment:TODO(htuch): add (validate.rules).enum.defined_only = true once
// https://github.com/lyft/protoc-gen-validate/issues/42 is resolved.]
@ -53,10 +53,11 @@ message CircuitBreakers {
google.protobuf.UInt32Value max_connection_pools = 7;
}
// If multiple :ref:`Thresholds<envoy_api_msg_cluster.CircuitBreakers.Thresholds>`
// are defined with the same :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`,
// the first one in the list is used. If no Thresholds is defined for a given
// :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`, the default values
// If multiple :ref:`Thresholds<envoy_api_msg_api.v3alpha.cluster.CircuitBreakers.Thresholds>`
// are defined with the same
// :ref:`RoutingPriority<envoy_api_enum_api.v3alpha.core.RoutingPriority>`, the first one in the
// list is used. If no Thresholds is defined for a given
// :ref:`RoutingPriority<envoy_api_enum_api.v3alpha.core.RoutingPriority>`, the default values
// are used.
repeated Thresholds thresholds = 1;
}

@ -79,16 +79,16 @@ message OutlierDetection {
// Determines whether to distinguish local origin failures from external errors. If set to true
// the following configuration parameters are taken into account:
// :ref:`consecutive_local_origin_failure<envoy_api_field_cluster.OutlierDetection.consecutive_local_origin_failure>`,
// :ref:`enforcing_consecutive_local_origin_failure<envoy_api_field_cluster.OutlierDetection.enforcing_consecutive_local_origin_failure>`
// :ref:`consecutive_local_origin_failure<envoy_api_field_api.v3alpha.cluster.OutlierDetection.consecutive_local_origin_failure>`,
// :ref:`enforcing_consecutive_local_origin_failure<envoy_api_field_api.v3alpha.cluster.OutlierDetection.enforcing_consecutive_local_origin_failure>`
// and
// :ref:`enforcing_local_origin_success_rate<envoy_api_field_cluster.OutlierDetection.enforcing_local_origin_success_rate>`.
// :ref:`enforcing_local_origin_success_rate<envoy_api_field_api.v3alpha.cluster.OutlierDetection.enforcing_local_origin_success_rate>`.
// Defaults to false.
bool split_external_local_origin_errors = 12;
// The number of consecutive locally originated failures before ejection
// occurs. Defaults to 5. Parameter takes effect only when
// :ref:`split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// :ref:`split_external_local_origin_errors<envoy_api_field_api.v3alpha.cluster.OutlierDetection.split_external_local_origin_errors>`
// is set to true.
google.protobuf.UInt32Value consecutive_local_origin_failure = 13;
@ -96,7 +96,7 @@ message OutlierDetection {
// is detected through consecutive locally originated failures. This setting can be
// used to disable ejection or to ramp it up slowly. Defaults to 100.
// Parameter takes effect only when
// :ref:`split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// :ref:`split_external_local_origin_errors<envoy_api_field_api.v3alpha.cluster.OutlierDetection.split_external_local_origin_errors>`
// is set to true.
google.protobuf.UInt32Value enforcing_consecutive_local_origin_failure = 14
[(validate.rules).uint32 = {lte: 100}];
@ -105,7 +105,7 @@ message OutlierDetection {
// is detected through success rate statistics for locally originated errors.
// This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
// Parameter takes effect only when
// :ref:`split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// :ref:`split_external_local_origin_errors<envoy_api_field_api.v3alpha.cluster.OutlierDetection.split_external_local_origin_errors>`
// is set to true.
google.protobuf.UInt32Value enforcing_local_origin_success_rate = 15
[(validate.rules).uint32 = {lte: 100}];

@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = ["//envoy/type:pkg"],
deps = ["//envoy/type/v3alpha:pkg"],
)

@ -25,8 +25,6 @@ message Pipe {
message SocketAddress {
enum Protocol {
TCP = 0;
// [#not-implemented-hide:]
UDP = 1;
}
@ -36,13 +34,13 @@ message SocketAddress {
// to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::``
// to bind to any address. [#comment:TODO(zuercher) reinstate when implemented:
// It is possible to distinguish a Listener address via the prefix/suffix matching
// in :ref:`FilterChainMatch <envoy_api_msg_listener.FilterChainMatch>`.] When used
// within an upstream :ref:`BindConfig <envoy_api_msg_core.BindConfig>`, the address
// in :ref:`FilterChainMatch <envoy_api_msg_api.v3alpha.listener.FilterChainMatch>`.] When used
// within an upstream :ref:`BindConfig <envoy_api_msg_api.v3alpha.core.BindConfig>`, the address
// controls the source address of outbound connections. For :ref:`clusters
// <envoy_api_msg_Cluster>`, the cluster type determines whether the
// <envoy_api_msg_api.v3alpha.Cluster>`, the cluster type determines whether the
// address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS
// (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized
// via :ref:`resolver_name <envoy_api_field_core.SocketAddress.resolver_name>`.
// via :ref:`resolver_name <envoy_api_field_api.v3alpha.core.SocketAddress.resolver_name>`.
string address = 2 [(validate.rules).string = {min_bytes: 1}];
oneof port_specifier {
@ -51,7 +49,7 @@ message SocketAddress {
uint32 port_value = 3 [(validate.rules).uint32 = {lte: 65535}];
// This is only valid if :ref:`resolver_name
// <envoy_api_field_core.SocketAddress.resolver_name>` is specified below and the
// <envoy_api_field_api.v3alpha.core.SocketAddress.resolver_name>` is specified below and the
// named resolver is capable of named port resolution.
string named_port = 4;
}
@ -92,7 +90,7 @@ message BindConfig {
// Whether to set the *IP_FREEBIND* option when creating the socket. When this
// flag is set to true, allows the :ref:`source_address
// <envoy_api_field_UpstreamBindConfig.source_address>` to be an IP address
// <envoy_api_field_api.v3alpha.UpstreamBindConfig.source_address>` to be an IP address
// that is not configured on the system running Envoy. When this flag is set
// to false, the option *IP_FREEBIND* is disabled on the socket. When this
// flag is not set (default), the socket is not modified, i.e. the option is

@ -7,7 +7,7 @@ option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.api.v3alpha.core";
import "envoy/api/v3alpha/core/http_uri.proto";
import "envoy/type/percent.proto";
import "envoy/type/v3alpha/percent.proto";
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
@ -57,14 +57,15 @@ enum TrafficDirection {
// Identifies location of where either Envoy runs or where upstream hosts run.
message Locality {
// Region this :ref:`zone <envoy_api_field_core.Locality.zone>` belongs to.
// Region this :ref:`zone <envoy_api_field_api.v3alpha.core.Locality.zone>` belongs to.
string region = 1;
// Defines the local service zone where Envoy is running. Though optional, it
// should be set if discovery service routing is used and the discovery
// service exposes :ref:`zone data <envoy_api_field_endpoint.LocalityLbEndpoints.locality>`,
// either in this message or via :option:`--service-zone`. The meaning of zone
// is context dependent, e.g. `Availability Zone (AZ)
// service exposes :ref:`zone data
// <envoy_api_field_api.v3alpha.endpoint.LocalityLbEndpoints.locality>`, either in this message or
// via :option:`--service-zone`. The meaning of zone is context dependent, e.g. `Availability Zone
// (AZ)
// <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html>`_
// on AWS, `Zone <https://cloud.google.com/compute/docs/regions-zones/>`_ on
// GCP, etc.
@ -91,7 +92,7 @@ message Node {
// Defines the local service cluster name where Envoy is running. Though
// optional, it should be set if any of the following features are used:
// :ref:`statsd <arch_overview_statistics>`, :ref:`health check cluster
// verification <envoy_api_field_core.HealthCheck.HttpHealthCheck.service_name>`,
// verification <envoy_api_field_api.v3alpha.core.HealthCheck.HttpHealthCheck.service_name>`,
// :ref:`runtime override directory <envoy_api_msg_config.bootstrap.v3alpha.Runtime>`,
// :ref:`user agent addition
// <envoy_api_field_config.filter.network.http_connection_manager.v3alpha.HttpConnectionManager.add_user_agent>`,
@ -228,7 +229,7 @@ message AsyncDataSource {
}
// Configuration for transport socket in :ref:`listeners <config_listeners>` and
// :ref:`clusters <envoy_api_msg_Cluster>`. If the configuration is
// :ref:`clusters <envoy_api_msg_api.v3alpha.Cluster>`. If the configuration is
// empty, a default transport socket implementation and configuration will be
// chosen based on the platform and existence of tls_context.
message TransportSocket {
@ -288,7 +289,7 @@ message SocketOption {
// specified via a runtime key.
message RuntimeFractionalPercent {
// Default value if the runtime value's for the numerator/denominator keys are not available.
type.FractionalPercent default_value = 1 [(validate.rules).message = {required: true}];
type.v3alpha.FractionalPercent default_value = 1 [(validate.rules).message = {required: true}];
// Runtime key for a YAML representation of a FractionalPercent.
string runtime_key = 2;

@ -72,14 +72,14 @@ message ApiConfigSource {
}
// Aggregated Discovery Service (ADS) options. This is currently empty, but when
// set in :ref:`ConfigSource <envoy_api_msg_core.ConfigSource>` can be used to
// set in :ref:`ConfigSource <envoy_api_msg_api.v3alpha.core.ConfigSource>` can be used to
// specify that ADS is to be used.
message AggregatedConfigSource {
}
// [#not-implemented-hide:]
// Self-referencing config source options. This is currently empty, but when
// set in :ref:`ConfigSource <envoy_api_msg_core.ConfigSource>` can be used to
// set in :ref:`ConfigSource <envoy_api_msg_api.v3alpha.core.ConfigSource>` can be used to
// specify that other data can be obtained from the same server.
message SelfConfigSource {
}
@ -97,7 +97,7 @@ message RateLimitSettings {
// Configuration for :ref:`listeners <config_listeners>`, :ref:`clusters
// <config_cluster_manager>`, :ref:`routes
// <envoy_api_msg_RouteConfiguration>`, :ref:`endpoints
// <envoy_api_msg_api.v3alpha.RouteConfiguration>`, :ref:`endpoints
// <arch_overview_service_discovery>` etc. may either be sourced from the
// filesystem or from an xDS API source. Filesystem configs are watched with
// inotify for updates.

@ -18,12 +18,12 @@ import "validate/validate.proto";
// [#protodoc-title: gRPC services]
// gRPC service configuration. This is used by :ref:`ApiConfigSource
// <envoy_api_msg_core.ApiConfigSource>` and filter configurations.
// <envoy_api_msg_api.v3alpha.core.ApiConfigSource>` and filter configurations.
message GrpcService {
message EnvoyGrpc {
// The name of the upstream gRPC cluster. SSL credentials will be supplied
// in the :ref:`Cluster <envoy_api_msg_Cluster>` :ref:`tls_context
// <envoy_api_field_Cluster.tls_context>`.
// in the :ref:`Cluster <envoy_api_msg_api.v3alpha.Cluster>` :ref:`tls_context
// <envoy_api_field_api.v3alpha.Cluster.tls_context>`.
string cluster_name = 1 [(validate.rules).string = {min_bytes: 1}];
}
@ -115,7 +115,8 @@ message GrpcService {
// The target URI when using the `Google C++ gRPC client
// <https://github.com/grpc/grpc>`_. SSL credentials will be supplied in
// :ref:`channel_credentials <envoy_api_field_core.GrpcService.GoogleGrpc.channel_credentials>`.
// :ref:`channel_credentials
// <envoy_api_field_api.v3alpha.core.GrpcService.GoogleGrpc.channel_credentials>`.
string target_uri = 1 [(validate.rules).string = {min_bytes: 1}];
ChannelCredentials channel_credentials = 2;

@ -7,7 +7,7 @@ option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.api.v3alpha.core";
import "envoy/api/v3alpha/core/base.proto";
import "envoy/type/range.proto";
import "envoy/type/v3alpha/range.proto";
import "google/protobuf/any.proto";
import "google/protobuf/duration.proto";
@ -99,8 +99,8 @@ message HealthCheck {
// Specifies a list of HTTP response statuses considered healthy. If provided, replaces default
// 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open
// semantics of :ref:`Int64Range <envoy_api_msg_type.Int64Range>`.
repeated type.Int64Range expected_statuses = 9;
// semantics of :ref:`Int64Range <envoy_api_msg_type.v3alpha.Int64Range>`.
repeated type.v3alpha.Int64Range expected_statuses = 9;
}
message TcpHealthCheck {

@ -37,7 +37,7 @@ message DiscoveryRequest {
repeated string resource_names = 3;
// Type of the resource that is being requested, e.g.
// "type.googleapis.com/envoy.api.v3alpha.ClusterLoadAssignment". This is implicit
// "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment". This is implicit
// in requests made via singleton xDS APIs such as CDS, LDS, etc. but is
// required for ADS.
string type_url = 4;
@ -49,10 +49,11 @@ message DiscoveryRequest {
// delta, where it is populated only for new explicit ACKs).
string response_nonce = 5;
// This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_DiscoveryResponse>`
// failed to update configuration. The *message* field in *error_details* provides the Envoy
// internal exception related to the failure. It is only intended for consumption during manual
// debugging, the string provided is not guaranteed to be stable across Envoy versions.
// This is populated when the previous :ref:`DiscoveryResponse
// <envoy_api_msg_api.v3alpha.DiscoveryResponse>` failed to update configuration. The *message*
// field in *error_details* provides the Envoy internal exception related to the failure. It is
// only intended for consumption during manual debugging, the string provided is not guaranteed to
// be stable across Envoy versions.
google.rpc.Status error_detail = 6;
}
@ -135,7 +136,7 @@ message DeltaDiscoveryRequest {
core.Node node = 1;
// Type of the resource that is being requested, e.g.
// "type.googleapis.com/envoy.api.v3alpha.ClusterLoadAssignment".
// "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment".
string type_url = 2;
// DeltaDiscoveryRequests allow the client to add or remove individual
@ -180,9 +181,9 @@ message DeltaDiscoveryRequest {
// Otherwise (unlike in DiscoveryRequest) response_nonce must be omitted.
string response_nonce = 6;
// This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_DiscoveryResponse>`
// failed to update configuration. The *message* field in *error_details*
// provides the Envoy internal exception related to the failure.
// This is populated when the previous :ref:`DiscoveryResponse
// <envoy_api_msg_api.v3alpha.DiscoveryResponse>` failed to update configuration. The *message*
// field in *error_details* provides the Envoy internal exception related to the failure.
google.rpc.Status error_detail = 7;
}

@ -9,7 +9,7 @@ option java_generic_services = true;
import "envoy/api/v3alpha/discovery.proto";
import "envoy/api/v3alpha/endpoint/endpoint.proto";
import "envoy/type/percent.proto";
import "envoy/type/v3alpha/percent.proto";
import "google/api/annotations.proto";
import "google/protobuf/duration.proto";
@ -54,7 +54,7 @@ message ClusterLoadAssignment {
string category = 1 [(validate.rules).string = {min_bytes: 1}];
// Percentage of traffic that should be dropped for the category.
type.FractionalPercent drop_percentage = 2;
type.v3alpha.FractionalPercent drop_percentage = 2;
}
reserved 1;
@ -115,9 +115,9 @@ message ClusterLoadAssignment {
}
// Name of the cluster. This will be the :ref:`service_name
// <envoy_api_field_Cluster.EdsClusterConfig.service_name>` value if specified
// <envoy_api_field_api.v3alpha.Cluster.EdsClusterConfig.service_name>` value if specified
// in the cluster :ref:`EdsClusterConfig
// <envoy_api_msg_Cluster.EdsClusterConfig>`.
// <envoy_api_msg_api.v3alpha.Cluster.EdsClusterConfig>`.
string cluster_name = 1 [(validate.rules).string = {min_bytes: 1}];
// List of endpoints to load balance to.

@ -35,7 +35,7 @@ message Endpoint {
//
// The form of host address depends on the given cluster type. For STATIC or EDS,
// it is expected to be a direct IP address (or something resolvable by the
// specified :ref:`resolver <envoy_api_field_core.SocketAddress.resolver_name>`
// specified :ref:`resolver <envoy_api_field_api.v3alpha.core.SocketAddress.resolver_name>`
// in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
// and will be resolved via DNS.
core.Address address = 1;
@ -67,7 +67,7 @@ message LbEndpoint {
// name should be specified as *envoy.lb*. An example boolean key-value pair
// is *canary*, providing the optional canary status of the upstream host.
// This may be matched against in a route's
// :ref:`RouteAction <envoy_api_msg_route.RouteAction>` metadata_match field
// :ref:`RouteAction <envoy_api_msg_api.v3alpha.route.RouteAction>` metadata_match field
// to subset the endpoints considered in cluster load balancing.
core.Metadata metadata = 3;

@ -16,7 +16,7 @@ import "validate/validate.proto";
// These are stats Envoy reports to GLB every so often. Report frequency is
// defined by
// :ref:`LoadStatsResponse.load_reporting_interval<envoy_api_field_load_stats.LoadStatsResponse.load_reporting_interval>`.
// :ref:`LoadStatsResponse.load_reporting_interval<envoy_api_field_service.load_stats.v3alpha.LoadStatsResponse.load_reporting_interval>`.
// Stats per upstream region/zone and optionally per subzone.
// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
message UpstreamLocalityStats {
@ -45,7 +45,7 @@ message UpstreamLocalityStats {
// Endpoint granularity stats information for this locality. This information
// is populated if the Server requests it by setting
// :ref:`LoadStatsResponse.report_endpoint_granularity<envoy_api_field_load_stats.LoadStatsResponse.report_endpoint_granularity>`.
// :ref:`LoadStatsResponse.report_endpoint_granularity<envoy_api_field_service.load_stats.v3alpha.LoadStatsResponse.report_endpoint_granularity>`.
repeated UpstreamEndpointStats upstream_endpoint_stats = 7;
// [#not-implemented-hide:] The priority of the endpoint group these metrics
@ -106,7 +106,7 @@ message EndpointLoadMetricStats {
}
// Per cluster load stats. Envoy reports these stats a management server in a
// :ref:`LoadStatsRequest<envoy_api_msg_load_stats.LoadStatsRequest>`
// :ref:`LoadStatsRequest<envoy_api_msg_service.load_stats.v3alpha.LoadStatsRequest>`
// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
// Next ID: 7
message ClusterStats {

@ -12,7 +12,7 @@ import "envoy/api/v3alpha/core/base.proto";
import "envoy/api/v3alpha/discovery.proto";
import "envoy/api/v3alpha/listener/listener.proto";
import "envoy/api/v3alpha/listener/udp_listener_config.proto";
import "envoy/config/listener/v3alpha/api_listener.proto";
import "envoy/config/listener/v2/api_listener.proto";
import "google/api/annotations.proto";
import "google/protobuf/duration.proto";
@ -85,9 +85,9 @@ message Listener {
core.Address address = 2 [(validate.rules).message = {required: true}];
// A list of filter chains to consider for this listener. The
// :ref:`FilterChain <envoy_api_msg_listener.FilterChain>` with the most specific
// :ref:`FilterChainMatch <envoy_api_msg_listener.FilterChainMatch>` criteria is used on a
// connection.
// :ref:`FilterChain <envoy_api_msg_api.v3alpha.listener.FilterChain>` with the most specific
// :ref:`FilterChainMatch <envoy_api_msg_api.v3alpha.listener.FilterChainMatch>` criteria is used
// on a connection.
//
// Example using SNI for filter chain selection can be found in the
// :ref:`FAQ entry <faq_how_to_setup_sni>`.
@ -108,12 +108,12 @@ message Listener {
// Listener filters have the opportunity to manipulate and augment the connection metadata that
// is used in connection filter chain matching, for example. These filters are run before any in
// :ref:`filter_chains <envoy_api_field_Listener.filter_chains>`. Order matters as the
// :ref:`filter_chains <envoy_api_field_api.v3alpha.Listener.filter_chains>`. Order matters as the
// filters are processed sequentially right after a socket has been accepted by the listener, and
// before a connection is created.
// UDP Listener filters can be specified when the protocol in the listener socket address in
// :ref:`protocol <envoy_api_field_core.SocketAddress.protocol>` is :ref:'UDP
// <envoy_api_field_core.Protocol.UDP>`.
// :ref:`protocol <envoy_api_field_api.v3alpha.core.SocketAddress.protocol>` is :ref:`UDP
// <envoy_api_enum_value_api.v3alpha.core.SocketAddress.Protocol.UDP>`.
// UDP listeners currently support a single filter.
repeated listener.ListenerFilter listener_filters = 9;
@ -137,15 +137,14 @@ message Listener {
// *iptables* *TPROXY* target, in which case the original source and destination addresses and
// ports are preserved on accepted connections. This flag should be used in combination with
// :ref:`an original_dst <config_listener_filters_original_dst>` :ref:`listener filter
// <envoy_api_field_Listener.listener_filters>` to mark the connections' local addresses as
// "restored." This can be used to hand off each redirected connection to another listener
// associated with the connection's destination address. Direct connections to the socket without
// using *TPROXY* cannot be distinguished from connections redirected using *TPROXY* and are
// therefore treated as if they were redirected.
// When this flag is set to false, the listener's socket is explicitly reset as non-transparent.
// Setting this flag requires Envoy to run with the *CAP_NET_ADMIN* capability.
// When this flag is not set (default), the socket is not modified, i.e. the transparent option
// is neither set nor reset.
// <envoy_api_field_api.v3alpha.Listener.listener_filters>` to mark the connections' local
// addresses as "restored." This can be used to hand off each redirected connection to another
// listener associated with the connection's destination address. Direct connections to the socket
// without using *TPROXY* cannot be distinguished from connections redirected using *TPROXY* and
// are therefore treated as if they were redirected. When this flag is set to false, the
// listener's socket is explicitly reset as non-transparent. Setting this flag requires Envoy to
// run with the *CAP_NET_ADMIN* capability. When this flag is not set (default), the socket is not
// modified, i.e. the transparent option is neither set nor reset.
google.protobuf.BoolValue transparent = 10;
// Whether the listener should set the *IP_FREEBIND* socket option. When this
@ -180,23 +179,24 @@ message Listener {
core.TrafficDirection traffic_direction = 16;
// If the protocol in the listener socket address in :ref:`protocol
// <envoy_api_field_core.SocketAddress.protocol>` is :ref:'UDP
// <envoy_api_field_core.Protocol.UDP>`, this field specifies the actual udp listener to create,
// i.e. :ref:`udp_listener_name
// <envoy_api_field_listener.UdpListenerConfig.udp_listener_name>` = "raw_udp_listener" for
// creating a packet-oriented UDP listener. If not present, treat it as "raw_udp_listener".
// <envoy_api_field_api.v3alpha.core.SocketAddress.protocol>` is :ref:`UDP
// <envoy_api_enum_value_api.v3alpha.core.SocketAddress.Protocol.UDP>`, this field specifies the
// actual udp listener to create, i.e. :ref:`udp_listener_name
// <envoy_api_field_api.v3alpha.listener.UdpListenerConfig.udp_listener_name>` =
// "raw_udp_listener" for creating a packet-oriented UDP listener. If not present, treat it as
// "raw_udp_listener".
listener.UdpListenerConfig udp_listener_config = 18;
// [#not-implemented-hide:]
// Used to represent an API listener, which is used in non-proxy clients. The type of API
// exposed to the non-proxy application depends on the type of API listener.
// When this field is set, no other field except for :ref:`name<envoy_api_field_Listener.name>`
// should be set.
// When this field is set, no other field except for
// :ref:`name<envoy_api_field_api.v3alpha.Listener.name>` should be set.
// [#next-major-version: In the v3 API, instead of this messy approach where the socket
// listener fields are directly in the top-level Listener message and the API listener types
// are in the ApiListener message, the socket listener messages should be in their own message,
// and the top-level Listener should essentially be a oneof that selects between the
// socket listener and the various types of API listener. That way, a given Listener message
// can structurally only contain the fields of the relevant type.]
config.listener.v3alpha.ApiListener api_listener = 19;
config.listener.v2.ApiListener api_listener = 19;
}

@ -182,7 +182,7 @@ message FilterChain {
// [#not-implemented-hide:] filter chain metadata.
core.Metadata metadata = 5;
// See :ref:`base.TransportSocket<envoy_api_msg_core.TransportSocket>` description.
// See :ref:`base.TransportSocket<envoy_api_msg_api.v3alpha.core.TransportSocket>` description.
core.TransportSocket transport_socket = 6;
// [#not-implemented-hide:] The unique name (or empty) by which this filter chain is known. If no

@ -44,13 +44,14 @@ service RouteDiscoveryService {
// Virtual Host Discovery Service (VHDS) is used to dynamically update the list of virtual hosts for
// a given RouteConfiguration. If VHDS is configured a virtual host list update will be triggered
// during the processing of an HTTP request if a route for the request cannot be resolved. The
// :ref:`resource_names_subscribe <envoy_api_msg_DeltaDiscoveryRequest.resource_names_subscribe>`
// field contains a list of virtual host names or aliases to track. The contents of an alias would
// be the contents of a *host* or *authority* header used to make an http request. An xDS server
// will match an alias to a virtual host based on the content of :ref:`domains'
// <envoy_api_msg_route.VirtualHost.domains>` field. The *resource_names_unsubscribe* field contains
// a list of virtual host names that have been :ref:`unsubscribed <xds_protocol_unsubscribe>`
// from the routing table associated with the RouteConfiguration.
// :ref:`resource_names_subscribe
// <envoy_api_field_api.v3alpha.DeltaDiscoveryRequest.resource_names_subscribe>` field contains a
// list of virtual host names or aliases to track. The contents of an alias would be the contents of
// a *host* or *authority* header used to make an http request. An xDS server will match an alias to
// a virtual host based on the content of :ref:`domains'
// <envoy_api_field_api.v3alpha.route.VirtualHost.domains>` field. The *resource_names_unsubscribe*
// field contains a list of virtual host names that have been :ref:`unsubscribed
// <xds_protocol_unsubscribe>` from the routing table associated with the RouteConfiguration.
service VirtualHostDiscoveryService {
rpc DeltaVirtualHosts(stream DeltaDiscoveryRequest) returns (stream DeltaDiscoveryResponse) {
}
@ -61,7 +62,7 @@ message RouteConfiguration {
// The name of the route configuration. For example, it might match
// :ref:`route_config_name
// <envoy_api_field_config.filter.network.http_connection_manager.v3alpha.Rds.route_config_name>`
// in :ref:`envoy_api_msg_config.filter.network.http_connection_manager.v3alpha.Rds`.
// in :ref:`envoy_api_msg_config.filter.network.http_connection_manager.v2.Rds`.
string name = 1;
// An array of virtual hosts that make up the route table.

@ -6,8 +6,9 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/api/v3alpha/core:pkg",
"//envoy/type:pkg",
"//envoy/type/matcher:pkg",
"//envoy/type/matcher/v3alpha:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -6,11 +6,12 @@ option java_outer_classname = "RouteProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.api.v3alpha.route";
import "envoy/api/v2/core/base.proto";
import "envoy/api/v3alpha/core/base.proto";
import "envoy/type/matcher/regex.proto";
import "envoy/type/matcher/string.proto";
import "envoy/type/percent.proto";
import "envoy/type/range.proto";
import "envoy/type/matcher/v3alpha/regex.proto";
import "envoy/type/matcher/v3alpha/string.proto";
import "envoy/type/v3alpha/percent.proto";
import "envoy/type/v3alpha/range.proto";
import "google/protobuf/any.proto";
import "google/protobuf/duration.proto";
@ -153,7 +154,7 @@ message VirtualHost {
// .. attention::
//
// Envoy supports routing on HTTP method via :ref:`header matching
// <envoy_api_msg_route.HeaderMatcher>`.
// <envoy_api_msg_api.v3alpha.route.HeaderMatcher>`.
// [#comment:next free field: 15]
message Route {
reserved 6;
@ -232,10 +233,10 @@ message Route {
Tracing tracing = 15;
}
// Compared to the :ref:`cluster <envoy_api_field_route.RouteAction.cluster>` field that specifies a
// single upstream cluster as the target of a request, the :ref:`weighted_clusters
// <envoy_api_field_route.RouteAction.weighted_clusters>` option allows for specification of
// multiple upstream clusters along with weights that indicate the percentage of
// Compared to the :ref:`cluster <envoy_api_field_api.v3alpha.route.RouteAction.cluster>` field that
// specifies a single upstream cluster as the target of a request, the :ref:`weighted_clusters
// <envoy_api_field_api.v3alpha.route.RouteAction.weighted_clusters>` option allows for
// specification of multiple upstream clusters along with weights that indicate the percentage of
// traffic to be forwarded to each cluster. The router selects an upstream cluster based on the
// weights.
// [#comment:next free field: 11]
@ -248,16 +249,17 @@ message WeightedCluster {
string name = 1 [(validate.rules).string = {min_bytes: 1}];
// An integer between 0 and :ref:`total_weight
// <envoy_api_field_route.WeightedCluster.total_weight>`. When a request matches the route,
// the choice of an upstream cluster is determined by its weight. The sum of weights across all
// entries in the clusters array must add up to the total_weight, which defaults to 100.
// <envoy_api_field_api.v3alpha.route.WeightedCluster.total_weight>`. When a request matches the
// route, the choice of an upstream cluster is determined by its weight. The sum of weights
// across all entries in the clusters array must add up to the total_weight, which defaults to
// 100.
google.protobuf.UInt32Value weight = 2;
// Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in
// the upstream cluster with metadata matching what is set in this field will be considered for
// load balancing. Note that this will be merged with what's provided in :ref:
// `RouteAction.MetadataMatch <envoy_api_field_route.RouteAction.metadata_match>`, with values
// here taking precedence. The filter name should be specified as *envoy.lb*.
// `RouteAction.MetadataMatch <envoy_api_field_api.v3alpha.route.RouteAction.metadata_match>`,
// with values here taking precedence. The filter name should be specified as *envoy.lb*.
core.Metadata metadata_match = 3;
// Specifies a list of headers to be added to requests when this cluster is selected
@ -352,7 +354,7 @@ message RouteMatch {
// path_specifier entirely and just rely on a set of header matchers which can already match
// on :path, etc. The issue with that is it is unclear how to generically deal with query string
// stripping. This needs more thought.]
type.matcher.RegexMatcher safe_regex = 10 [(validate.rules).message = {required: true}];
type.matcher.v3alpha.RegexMatcher safe_regex = 10 [(validate.rules).message = {required: true}];
}
// Indicates that prefix/path matching should be case insensitive. The default
@ -405,7 +407,7 @@ message CorsPolicy {
// Specifies string patterns that match allowed origins. An origin is allowed if any of the
// string matchers match.
repeated type.matcher.StringMatcher allow_origin_string_match = 11;
repeated type.matcher.v3alpha.StringMatcher allow_origin_string_match = 11;
// Specifies the content for the *access-control-allow-methods* header.
string allow_methods = 2;
@ -431,7 +433,7 @@ message CorsPolicy {
// .. note::
//
// This field defaults to 100/:ref:`HUNDRED
// <envoy_api_enum_type.FractionalPercent.DenominatorType>`.
// <envoy_api_enum_type.v3alpha.FractionalPercent.DenominatorType>`.
core.RuntimeFractionalPercent filter_enabled = 9;
}
@ -444,7 +446,7 @@ message CorsPolicy {
// .. note::
//
// This field defaults to 100/:ref:`HUNDRED
// <envoy_api_enum_type.FractionalPercent.DenominatorType>`.
// <envoy_api_enum_type.v3alpha.FractionalPercent.DenominatorType>`.
core.RuntimeFractionalPercent shadow_enabled = 10;
}
@ -481,8 +483,8 @@ message RouteAction {
string cluster = 1 [(validate.rules).string = {min_bytes: 1}];
// If both :ref:`runtime_key
// <envoy_api_field_route.RouteAction.RequestMirrorPolicy.runtime_key>` and this field are not
// specified, all requests to the target cluster will be mirrored.
// <envoy_api_field_api.v3alpha.route.RouteAction.RequestMirrorPolicy.runtime_key>` and this
// field are not specified, all requests to the target cluster will be mirrored.
//
// If specified, this field takes precedence over the `runtime_key` field and requests must also
// fall under the percentage of matches indicated by this field.
@ -494,12 +496,12 @@ message RouteAction {
// .. note::
//
// Parsing this field is implemented such that the runtime key's data may be represented
// as a :ref:`FractionalPercent <envoy_api_msg_type.FractionalPercent>` proto represented
// as JSON/YAML and may also be represented as an integer with the assumption that the value
// is an integral percentage out of 100. For instance, a runtime key lookup returning the
// value "42" would parse as a `FractionalPercent` whose numerator is 42 and denominator is
// HUNDRED. This is behaviour is different to that of the deprecated `runtime_key` field,
// where the implicit denominator is 10000.
// as a :ref:`FractionalPercent <envoy_api_msg_type.v3alpha.FractionalPercent>` proto
// represented as JSON/YAML and may also be represented as an integer with the assumption that
// the value is an integral percentage out of 100. For instance, a runtime key lookup
// returning the value "42" would parse as a `FractionalPercent` whose numerator is 42 and
// denominator is HUNDRED. This is behaviour is different to that of the deprecated
// `runtime_key` field, where the implicit denominator is 10000.
core.RuntimeFractionalPercent runtime_fraction = 3;
}
@ -634,8 +636,9 @@ message RouteAction {
// Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints
// in the upstream cluster with metadata matching what's set in this field will be considered
// for load balancing. If using :ref:`weighted_clusters
// <envoy_api_field_route.RouteAction.weighted_clusters>`, metadata will be merged, with values
// provided there taking precedence. The filter name should be specified as *envoy.lb*.
// <envoy_api_field_api.v3alpha.route.RouteAction.weighted_clusters>`, metadata will be merged,
// with values provided there taking precedence. The filter name should be specified as
// *envoy.lb*.
core.Metadata metadata_match = 4;
// Indicates that during forwarding, the matched prefix (or path) should be
@ -647,10 +650,10 @@ message RouteAction {
// .. attention::
//
// Pay careful attention to the use of trailing slashes in the
// :ref:`route's match <envoy_api_field_route.Route.match>` prefix value.
// :ref:`route's match <envoy_api_field_api.v3alpha.route.Route.match>` prefix value.
// Stripping a prefix from a path requires multiple Routes to handle all cases. For example,
// rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single
// :ref:`Route <envoy_api_msg_route.Route>`, as shown by the below config entries:
// :ref:`Route <envoy_api_msg_api.v3alpha.route.Route>`, as shown by the below config entries:
//
// .. code-block:: yaml
//
@ -710,9 +713,9 @@ message RouteAction {
// connection manager stream idle timeout is configured.
//
// The idle timeout is distinct to :ref:`timeout
// <envoy_api_field_route.RouteAction.timeout>`, which provides an upper bound
// <envoy_api_field_api.v3alpha.route.RouteAction.timeout>`, which provides an upper bound
// on the upstream response time; :ref:`idle_timeout
// <envoy_api_field_route.RouteAction.idle_timeout>` instead bounds the amount
// <envoy_api_field_api.v3alpha.route.RouteAction.idle_timeout>` instead bounds the amount
// of time the request's stream may be idle.
//
// After header decoding, the idle timeout will apply on downstream and
@ -742,8 +745,8 @@ message RouteAction {
// Specifies if the rate limit filter should include the virtual host rate
// limits. By default, if the route configured rate limits, the virtual host
// :ref:`rate_limits <envoy_api_field_route.VirtualHost.rate_limits>` are not applied to the
// request.
// :ref:`rate_limits <envoy_api_field_api.v3alpha.route.VirtualHost.rate_limits>` are not applied
// to the request.
google.protobuf.BoolValue include_vh_rate_limits = 14;
// Specifies a list of hash policies to use for ring hash load balancing. Each
@ -766,11 +769,11 @@ message RouteAction {
// If present, and the request is a gRPC request, use the
// `grpc-timeout header <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_,
// or its default value (infinity) instead of
// :ref:`timeout <envoy_api_field_route.RouteAction.timeout>`, but limit the applied timeout
// to the maximum value specified here. If configured as 0, the maximum allowed timeout for
// gRPC requests is infinity. If not configured at all, the `grpc-timeout` header is not used
// :ref:`timeout <envoy_api_field_api.v3alpha.route.RouteAction.timeout>`, but limit the applied
// timeout to the maximum value specified here. If configured as 0, the maximum allowed timeout
// for gRPC requests is infinity. If not configured at all, the `grpc-timeout` header is not used
// and gRPC requests time out like any other requests using
// :ref:`timeout <envoy_api_field_route.RouteAction.timeout>` or its default.
// :ref:`timeout <envoy_api_field_api.v3alpha.route.RouteAction.timeout>` or its default.
// This can be used to prevent unexpected upstream request timeouts due to potentially long
// time gaps between gRPC request and response in gRPC streaming mode.
google.protobuf.Duration max_grpc_timeout = 23;
@ -851,7 +854,7 @@ message RetryPolicy {
// .. note::
//
// If left unspecified, Envoy will use the global
// :ref:`route timeout <envoy_api_field_route.RouteAction.timeout>` for the request.
// :ref:`route timeout <envoy_api_field_api.v3alpha.route.RouteAction.timeout>` for the request.
// Consequently, when using a :ref:`5xx <config_http_filters_router_x-envoy-retry-on>` based
// retry policy, a request that times out will not be retried as the total timeout budget
// would have been exhausted.
@ -904,7 +907,7 @@ message HedgePolicy {
// on top of what is specified by initial_requests.
// Defaults to 0.
// [#not-implemented-hide:]
type.FractionalPercent additional_request_chance = 2;
type.v3alpha.FractionalPercent additional_request_chance = 2;
// Indicates that a hedged request should be sent when the per-try timeout
// is hit. This will only occur if the retry policy also indicates that a
@ -912,7 +915,7 @@ message HedgePolicy {
// Once a timed out request is retried due to per try timeout, the router
// filter will ensure that it is not retried again even if the returned
// response headers would otherwise be retried according the specified
// :ref:`RetryPolicy <envoy_api_msg_route.RetryPolicy>`.
// :ref:`RetryPolicy <envoy_api_msg_api.v3alpha.route.RetryPolicy>`.
// Defaults to false.
bool hedge_on_per_try_timeout = 3;
}
@ -965,7 +968,8 @@ message RedirectAction {
// .. attention::
//
// Pay attention to the use of trailing slashes as mentioned in
// :ref:`RouteAction's prefix_rewrite <envoy_api_field_route.RouteAction.prefix_rewrite>`.
// :ref:`RouteAction's prefix_rewrite
// <envoy_api_field_api.v3alpha.route.RouteAction.prefix_rewrite>`.
string prefix_rewrite = 5;
}
@ -1012,14 +1016,14 @@ message Tracing {
// 'tracing.client_sampling' in the :ref:`HTTP Connection Manager
// <config_http_conn_man_runtime>`.
// Default: 100%
type.FractionalPercent client_sampling = 1;
type.v3alpha.FractionalPercent client_sampling = 1;
// Target percentage of requests managed by this HTTP connection manager that will be randomly
// selected for trace generation, if not requested by the client or not forced. This field is
// a direct analog for the runtime variable 'tracing.random_sampling' in the
// :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`.
// Default: 100%
type.FractionalPercent random_sampling = 2;
type.v3alpha.FractionalPercent random_sampling = 2;
// Target percentage of requests managed by this HTTP connection manager that will be traced
// after all other sampling checks have been applied (client-directed, force tracing, random
@ -1029,7 +1033,7 @@ message Tracing {
// analog for the runtime variable 'tracing.global_enabled' in the
// :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`.
// Default: 100%
type.FractionalPercent overall_sampling = 3;
type.v3alpha.FractionalPercent overall_sampling = 3;
}
// A virtual cluster is a way of specifying a regex matching rule against
@ -1085,14 +1089,16 @@ message RateLimit {
// ("destination_cluster", "<routed target cluster>")
//
// Once a request matches against a route table rule, a routed cluster is determined by one of
// the following :ref:`route table configuration <envoy_api_msg_RouteConfiguration>`
// the following :ref:`route table configuration <envoy_api_msg_api.v3alpha.RouteConfiguration>`
// settings:
//
// * :ref:`cluster <envoy_api_field_route.RouteAction.cluster>` indicates the upstream cluster
// * :ref:`cluster <envoy_api_field_api.v3alpha.route.RouteAction.cluster>` indicates the
// upstream cluster
// to route to.
// * :ref:`weighted_clusters <envoy_api_field_route.RouteAction.weighted_clusters>`
// * :ref:`weighted_clusters <envoy_api_field_api.v3alpha.route.RouteAction.weighted_clusters>`
// chooses a cluster randomly from a set of clusters with attributed weight.
// * :ref:`cluster_header <envoy_api_field_route.RouteAction.cluster_header>` indicates which
// * :ref:`cluster_header <envoy_api_field_api.v3alpha.route.RouteAction.cluster_header>`
// indicates which
// header in the request contains the target cluster.
message DestinationCluster {
}
@ -1218,9 +1224,9 @@ message RateLimit {
//
// .. attention::
// In the absence of any header match specifier, match will default to :ref:`present_match
// <envoy_api_field_route.HeaderMatcher.present_match>`. i.e, a request that has the :ref:`name
// <envoy_api_field_route.HeaderMatcher.name>` header will match, regardless of the header's
// value.
// <envoy_api_field_api.v3alpha.route.HeaderMatcher.present_match>`. i.e, a request that has the
// :ref:`name <envoy_api_field_api.v3alpha.route.HeaderMatcher.name>` header will match,
// regardless of the header's value.
//
// [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.]
message HeaderMatcher {
@ -1239,7 +1245,7 @@ message HeaderMatcher {
// If specified, this regex string is a regular expression rule which implies the entire request
// header value must match the regex. The rule will not match if only a subsequence of the
// request header value matches the regex.
type.matcher.RegexMatcher safe_regex_match = 11;
type.matcher.v3alpha.RegexMatcher safe_regex_match = 11;
// If specified, header match will be performed based on range.
// The rule will match if the request header value is within this range.
@ -1252,7 +1258,7 @@ message HeaderMatcher {
//
// * For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9,
// "-1somestring"
type.Int64Range range_match = 6;
type.v3alpha.Int64Range range_match = 6;
// If specified, header match will be performed based on whether the header is in the
// request.
@ -1297,7 +1303,8 @@ message QueryParameterMatcher {
oneof query_parameter_match_specifier {
// Specifies whether a query parameter value should match against a string.
type.matcher.StringMatcher string_match = 5 [(validate.rules).message = {required: true}];
type.matcher.v3alpha.StringMatcher string_match = 5
[(validate.rules).message = {required: true}];
// Specifies whether a query parameter should be present.
bool present_match = 6;

@ -21,7 +21,7 @@ import "validate/validate.proto";
// resources. Each ScopedRouteConfiguration resource represents a "routing
// scope" containing a mapping that allows the HTTP connection manager to
// dynamically assign a routing table (specified via a
// :ref:`RouteConfiguration<envoy_api_msg_RouteConfiguration>` message) to each
// :ref:`RouteConfiguration<envoy_api_msg_api.v3alpha.RouteConfiguration>` message) to each
// HTTP request.
service ScopedRoutesDiscoveryService {
rpc StreamScopedRoutes(stream DiscoveryRequest) returns (stream DiscoveryResponse) {
@ -39,7 +39,7 @@ service ScopedRoutesDiscoveryService {
}
// Specifies a routing scope, which associates a
// :ref:`Key<envoy_api_msg_ScopedRouteConfiguration.Key>` to a
// :ref:`Key<envoy_api_msg_api.v3alpha.ScopedRouteConfiguration.Key>` to a
// :ref:`envoy_api_msg_RouteConfiguration` (identified by its resource name).
//
// The HTTP connection manager builds up a table consisting of these Key to

@ -9,8 +9,9 @@ api_proto_package(
"//envoy/api/v3alpha:pkg",
"//envoy/api/v3alpha/auth:pkg",
"//envoy/api/v3alpha/core:pkg",
"//envoy/config/bootstrap/v2:pkg",
"//envoy/config/metrics/v3alpha:pkg",
"//envoy/config/overload/v3alpha:pkg",
"//envoy/config/overload/v2alpha:pkg",
"//envoy/config/trace/v3alpha:pkg",
],
)

@ -12,8 +12,9 @@ import "envoy/api/v3alpha/core/address.proto";
import "envoy/api/v3alpha/core/base.proto";
import "envoy/api/v3alpha/core/config_source.proto";
import "envoy/api/v3alpha/lds.proto";
import "envoy/config/bootstrap/v2/bootstrap.proto";
import "envoy/config/metrics/v3alpha/stats.proto";
import "envoy/config/overload/v3alpha/overload.proto";
import "envoy/config/overload/v2alpha/overload.proto";
import "envoy/config/trace/v3alpha/trace.proto";
import "google/protobuf/duration.proto";
@ -30,7 +31,7 @@ import "validate/validate.proto";
// Bootstrap :ref:`configuration overview <config_overview_v2_bootstrap>`.
message Bootstrap {
message StaticResources {
// Static :ref:`Listeners <envoy_api_msg_Listener>`. These listeners are
// Static :ref:`Listeners <envoy_api_msg_api.v3alpha.Listener>`. These listeners are
// available regardless of LDS configuration.
repeated api.v3alpha.Listener listeners = 1;
@ -42,28 +43,28 @@ message Bootstrap {
repeated api.v3alpha.Cluster clusters = 2;
// These static secrets can be used by :ref:`SdsSecretConfig
// <envoy_api_msg_auth.SdsSecretConfig>`
// <envoy_api_msg_api.v3alpha.auth.SdsSecretConfig>`
repeated api.v3alpha.auth.Secret secrets = 3;
}
message DynamicResources {
reserved 4;
// All :ref:`Listeners <envoy_api_msg_Listener>` are provided by a single
// All :ref:`Listeners <envoy_api_msg_api.v3alpha.Listener>` are provided by a single
// :ref:`LDS <arch_overview_dynamic_config_lds>` configuration source.
api.v3alpha.core.ConfigSource lds_config = 1;
// All post-bootstrap :ref:`Cluster <envoy_api_msg_Cluster>` definitions are
// All post-bootstrap :ref:`Cluster <envoy_api_msg_api.v3alpha.Cluster>` definitions are
// provided by a single :ref:`CDS <arch_overview_dynamic_config_cds>`
// configuration source.
api.v3alpha.core.ConfigSource cds_config = 2;
// A single :ref:`ADS <config_overview_v2_ads>` source may be optionally
// specified. This must have :ref:`api_type
// <envoy_api_field_core.ApiConfigSource.api_type>` :ref:`GRPC
// <envoy_api_enum_value_core.ApiConfigSource.ApiType.GRPC>`. Only
// :ref:`ConfigSources <envoy_api_msg_core.ConfigSource>` that have
// the :ref:`ads <envoy_api_field_core.ConfigSource.ads>` field set will be
// <envoy_api_field_api.v3alpha.core.ApiConfigSource.api_type>` :ref:`GRPC
// <envoy_api_enum_value_api.v3alpha.core.ApiConfigSource.ApiType.GRPC>`. Only
// :ref:`ConfigSources <envoy_api_msg_api.v3alpha.core.ConfigSource>` that have
// the :ref:`ads <envoy_api_field_api.v3alpha.core.ConfigSource.ads>` field set will be
// streamed on the ADS channel.
api.v3alpha.core.ApiConfigSource ads_config = 3;
}
@ -87,7 +88,7 @@ message Bootstrap {
ClusterManager cluster_manager = 4;
// Health discovery service config option.
// (:ref:`core.ApiConfigSource <envoy_api_msg_core.ApiConfigSource>`)
// (:ref:`core.ApiConfigSource <envoy_api_msg_api.v3alpha.core.ApiConfigSource>`)
api.v3alpha.core.ApiConfigSource hds_config = 14;
// Optional file system path to search for startup flag files.
@ -125,7 +126,7 @@ message Bootstrap {
Admin admin = 12;
// Optional overload manager configuration.
overload.v3alpha.OverloadManager overload_manager = 15;
overload.v2alpha.OverloadManager overload_manager = 15;
// Enable :ref:`stats for event dispatcher <operations_performance>`, defaults to false.
// Note that this records a value for each iteration of the event loop on every thread. This
@ -184,7 +185,7 @@ message ClusterManager {
// this configuration). In order to enable :ref:`zone aware routing
// <arch_overview_load_balancing_zone_aware_routing>` this option must be set.
// If *local_cluster_name* is defined then :ref:`clusters
// <envoy_api_msg_Cluster>` must be defined in the :ref:`Bootstrap
// <envoy_api_msg_api.v3alpha.Cluster>` must be defined in the :ref:`Bootstrap
// static cluster resources
// <envoy_api_field_config.bootstrap.v3alpha.Bootstrap.StaticResources.clusters>`. This is
// unrelated to the :option:`--service-cluster` option which does not `affect zone aware routing
@ -200,8 +201,8 @@ message ClusterManager {
// A management server endpoint to stream load stats to via
// *StreamLoadStats*. This must have :ref:`api_type
// <envoy_api_field_core.ApiConfigSource.api_type>` :ref:`GRPC
// <envoy_api_enum_value_core.ApiConfigSource.ApiType.GRPC>`.
// <envoy_api_field_api.v3alpha.core.ApiConfigSource.api_type>` :ref:`GRPC
// <envoy_api_enum_value_api.v3alpha.core.ApiConfigSource.ApiType.GRPC>`.
api.v3alpha.core.ApiConfigSource load_stats_config = 4;
}

@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v3alpha/core:pkg",
"//envoy/api/v3alpha/route:pkg",
"//envoy/type:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -8,7 +8,7 @@ option java_package = "io.envoyproxy.envoy.config.filter.accesslog.v3alpha";
import "envoy/api/v3alpha/core/base.proto";
import "envoy/api/v3alpha/route/route.proto";
import "envoy/type/percent.proto";
import "envoy/type/v3alpha/percent.proto";
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
@ -133,7 +133,7 @@ message RuntimeFilter {
string runtime_key = 1 [(validate.rules).string = {min_bytes: 1}];
// The default sampling percentage. If not specified, defaults to 0% with denominator of 100.
type.FractionalPercent percent_sampled = 2;
type.v3alpha.FractionalPercent percent_sampled = 2;
// By default, sampling pivots on the header
// :ref:`x-request-id<config_http_conn_man_headers_x-request-id>` being present. If

@ -1,13 +0,0 @@
syntax = "proto3";
package envoy.config.filter.dubbo.router.v3alpha;
option java_outer_classname = "RouterProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.dubbo.router.v3alpha";
// [#protodoc-title: Router]
// Dubbo router :ref:`configuration overview <config_dubbo_filters_router>`.
message Router {
}

@ -5,5 +5,8 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = ["//envoy/type:pkg"],
deps = [
"//envoy/config/filter/fault/v2:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -6,7 +6,8 @@ option java_outer_classname = "FaultProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.fault.v3alpha";
import "envoy/type/percent.proto";
import "envoy/config/filter/fault/v2/fault.proto";
import "envoy/type/v3alpha/percent.proto";
import "google/protobuf/duration.proto";
@ -48,7 +49,7 @@ message FaultDelay {
}
// The percentage of operations/connections/requests on which the delay will be injected.
type.FractionalPercent percentage = 4;
type.v3alpha.FractionalPercent percentage = 4;
}
// Describes a rate limit to be applied.
@ -76,5 +77,5 @@ message FaultRateLimit {
}
// The percentage of operations/connections/requests on which the rate limit will be injected.
type.FractionalPercent percentage = 2;
type.v3alpha.FractionalPercent percentage = 2;
}

@ -2,63 +2,65 @@ syntax = "proto3";
package envoy.config.filter.http.adaptive_concurrency.v2alpha;
option java_package = "io.envoyproxy.envoy.config.filter.http.adaptive_concurrency.v2alpha";
option java_outer_classname = "AdaptiveConcurrencyProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.adaptive_concurrency.v2alpha";
import "envoy/api/v2/core/base.proto";
import "envoy/type/percent.proto";
import "google/protobuf/duration.proto";
import "google/api/annotations.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
import "validate/validate.proto";
// Configuration parameters for the gradient controller.
message GradientControllerConfig {
// The percentile to use when summarizing aggregated samples. Defaults to p50.
envoy.type.Percent sample_aggregate_percentile = 1;
// Parameters controlling the periodic recalculation of the concurrency limit from sampled request
// latencies.
message ConcurrencyLimitCalculationParams {
// The maximum value the gradient is allowed to take. This influences how aggressively the
// concurrency limit can increase. Defaults to 2.0.
google.protobuf.DoubleValue max_gradient = 1 [(validate.rules).double.gt = 1.0];
google.protobuf.DoubleValue max_gradient = 1 [(validate.rules).double = {gt: 1.0}];
// The allowed upper-bound on the calculated concurrency limit. Defaults to 1000.
google.protobuf.UInt32Value max_concurrency_limit = 2 [(validate.rules).uint32.gt = 0];
google.protobuf.UInt32Value max_concurrency_limit = 2 [(validate.rules).uint32 = {gt: 0}];
// The period of time samples are taken to recalculate the concurrency limit.
google.protobuf.Duration concurrency_update_interval = 3 [(validate.rules).duration = {
required: true,
gt: {seconds: 0}
required: true
gt {}
}];
}
ConcurrencyLimitCalculationParams concurrency_limit_params = 2
[(validate.rules).message.required = true];
// Parameters controlling the periodic minRTT recalculation.
message MinimumRTTCalculationParams {
// The time interval between recalculating the minimum request round-trip time.
google.protobuf.Duration interval = 1 [(validate.rules).duration = {
required: true,
gt: {seconds: 0}
required: true
gt {}
}];
// The number of requests to aggregate/sample during the minRTT recalculation window before
// updating. Defaults to 50.
google.protobuf.UInt32Value request_count = 2 [(validate.rules).uint32.gt = 0];
google.protobuf.UInt32Value request_count = 2 [(validate.rules).uint32 = {gt: 0}];
// Randomized time delta that will be introduced to the start of the minRTT calculation window.
// This is represented as a percentage of the interval duration. Defaults to 15%.
//
// Example: If the interval is 10s and the jitter is 15%, the next window will begin
// somewhere in the range (10s - 11.5s).
envoy.type.Percent jitter = 3;
};
MinimumRTTCalculationParams min_rtt_calc_params = 3 [(validate.rules).message.required = true];
type.Percent jitter = 3;
}
// The percentile to use when summarizing aggregated samples. Defaults to p50.
type.Percent sample_aggregate_percentile = 1;
ConcurrencyLimitCalculationParams concurrency_limit_params = 2
[(validate.rules).message = {required: true}];
MinimumRTTCalculationParams min_rtt_calc_params = 3 [(validate.rules).message = {required: true}];
}
message AdaptiveConcurrency {
@ -67,7 +69,7 @@ message AdaptiveConcurrency {
// Gradient concurrency control will be used.
GradientControllerConfig gradient_controller_config = 1
[(validate.rules).message.required = true];
[(validate.rules).message = {required: true}];
}
// If set to false, the adaptive concurrency filter will operate as a pass-through filter. If the

@ -5,5 +5,8 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = ["//envoy/type:pkg"],
deps = [
"//envoy/api/v3alpha/core:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -2,55 +2,65 @@ syntax = "proto3";
package envoy.config.filter.http.adaptive_concurrency.v3alpha;
option java_package = "io.envoyproxy.envoy.config.filter.http.adaptive_concurrency.v3alpha";
option java_outer_classname = "AdaptiveConcurrencyProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.adaptive_concurrency.v3alpha";
import "envoy/type/percent.proto";
import "envoy/api/v3alpha/core/base.proto";
import "envoy/type/v3alpha/percent.proto";
import "google/protobuf/duration.proto";
import "google/api/annotations.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
import "validate/validate.proto";
// Configuration parameters for the gradient controller.
message GradientControllerConfig {
// The percentile to use when summarizing aggregated samples. Defaults to p50.
envoy.type.Percent sample_aggregate_percentile = 1;
// Parameters controlling the periodic recalculation of the concurrency limit from sampled request
// latencies.
message ConcurrencyLimitCalculationParams {
// The maximum value the gradient is allowed to take. This influences how aggressively the
// concurrency limit can increase. Defaults to 2.0.
google.protobuf.DoubleValue max_gradient = 1 [(validate.rules).double.gt = 1.0];
google.protobuf.DoubleValue max_gradient = 1 [(validate.rules).double = {gt: 1.0}];
// The allowed upper-bound on the calculated concurrency limit. Defaults to 1000.
google.protobuf.UInt32Value max_concurrency_limit = 2 [(validate.rules).uint32.gt = 0];
google.protobuf.UInt32Value max_concurrency_limit = 2 [(validate.rules).uint32 = {gt: 0}];
// The period of time samples are taken to recalculate the concurrency limit.
google.protobuf.Duration concurrency_update_interval = 3 [(validate.rules).duration = {
required: true,
gt: {seconds: 0}
required: true
gt {}
}];
}
ConcurrencyLimitCalculationParams concurrency_limit_params = 2
[(validate.rules).message.required = true];
// Parameters controlling the periodic minRTT recalculation.
message MinimumRTTCalculationParams {
// The time interval between recalculating the minimum request round-trip time.
google.protobuf.Duration interval = 1 [(validate.rules).duration = {
required: true,
gt: {seconds: 0}
required: true
gt {}
}];
// The number of requests to aggregate/sample during the minRTT recalculation window before
// updating. Defaults to 50.
google.protobuf.UInt32Value request_count = 2 [(validate.rules).uint32.gt = 0];
};
MinimumRTTCalculationParams min_rtt_calc_params = 3 [(validate.rules).message.required = true];
google.protobuf.UInt32Value request_count = 2 [(validate.rules).uint32 = {gt: 0}];
// Randomized time delta that will be introduced to the start of the minRTT calculation window.
// This is represented as a percentage of the interval duration. Defaults to 15%.
//
// Example: If the interval is 10s and the jitter is 15%, the next window will begin
// somewhere in the range (10s - 11.5s).
type.v3alpha.Percent jitter = 3;
}
// The percentile to use when summarizing aggregated samples. Defaults to p50.
type.v3alpha.Percent sample_aggregate_percentile = 1;
ConcurrencyLimitCalculationParams concurrency_limit_params = 2
[(validate.rules).message = {required: true}];
MinimumRTTCalculationParams min_rtt_calc_params = 3 [(validate.rules).message = {required: true}];
}
message AdaptiveConcurrency {
@ -59,6 +69,10 @@ message AdaptiveConcurrency {
// Gradient concurrency control will be used.
GradientControllerConfig gradient_controller_config = 1
[(validate.rules).message.required = true];
[(validate.rules).message = {required: true}];
}
// If set to false, the adaptive concurrency filter will operate as a pass-through filter. If the
// message is unspecified, the filter will be enabled.
api.v3alpha.core.RuntimeFeatureFlag enabled = 2;
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,34 +0,0 @@
syntax = "proto3";
package envoy.config.filter.http.buffer.v3alpha;
option java_outer_classname = "BufferProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.buffer.v3alpha";
import "google/protobuf/wrappers.proto";
import "validate/validate.proto";
// [#protodoc-title: Buffer]
// Buffer :ref:`configuration overview <config_http_filters_buffer>`.
message Buffer {
reserved 2;
// The maximum request size that the filter will buffer before the connection
// manager will stop buffering and return a 413 response.
google.protobuf.UInt32Value max_request_bytes = 1 [(validate.rules).uint32 = {gt: 0}];
}
message BufferPerRoute {
oneof override {
option (validate.required) = true;
// Disable the buffer filter for this particular vhost or route.
bool disabled = 1 [(validate.rules).bool = {const: true}];
// Override the global configuration of the filter with this new config.
Buffer buffer = 2 [(validate.rules).message = {required: true}];
}
}

@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v3alpha/core:pkg",
"//envoy/type/matcher:pkg",
"//envoy/type/matcher/v3alpha:pkg",
],
)

@ -7,7 +7,7 @@ option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.csrf.v3alpha";
import "envoy/api/v3alpha/core/base.proto";
import "envoy/type/matcher/string.proto";
import "envoy/type/matcher/v3alpha/string.proto";
import "validate/validate.proto";
@ -24,7 +24,7 @@ message CsrfPolicy {
// .. note::
//
// This field defaults to 100/:ref:`HUNDRED
// <envoy_api_enum_type.FractionalPercent.DenominatorType>`.
// <envoy_api_enum_type.v3alpha.FractionalPercent.DenominatorType>`.
api.v3alpha.core.RuntimeFractionalPercent filter_enabled = 1
[(validate.rules).message = {required: true}];
@ -37,7 +37,7 @@ message CsrfPolicy {
// .. note::
//
// This field defaults to 100/:ref:`HUNDRED
// <envoy_api_enum_type.FractionalPercent.DenominatorType>`.
// <envoy_api_enum_type.v3alpha.FractionalPercent.DenominatorType>`.
api.v3alpha.core.RuntimeFractionalPercent shadow_enabled = 2;
// Specifies additional source origins that will be allowed in addition to
@ -45,5 +45,5 @@ message CsrfPolicy {
//
// More information on how this can be configured via runtime can be found
// :ref:`here <csrf-configuration>`.
repeated type.matcher.StringMatcher additional_origins = 3;
repeated type.matcher.v3alpha.StringMatcher additional_origins = 3;
}

@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v3alpha/core:pkg",
"//envoy/type:pkg",
"//envoy/type/matcher:pkg",
"//envoy/type/matcher/v3alpha:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -9,8 +9,8 @@ option java_package = "io.envoyproxy.envoy.config.filter.http.ext_authz.v3alpha"
import "envoy/api/v3alpha/core/base.proto";
import "envoy/api/v3alpha/core/grpc_service.proto";
import "envoy/api/v3alpha/core/http_uri.proto";
import "envoy/type/http_status.proto";
import "envoy/type/matcher/string.proto";
import "envoy/type/matcher/v3alpha/string.proto";
import "envoy/type/v3alpha/http_status.proto";
import "validate/validate.proto";
@ -64,7 +64,7 @@ message ExtAuthz {
// Sets the HTTP status that is returned to the client when there is a network error between the
// filter and the authorization server. The default status is HTTP 403 Forbidden.
type.HttpStatus status_on_error = 7;
type.v3alpha.HttpStatus status_on_error = 7;
// Specifies a list of metadata namespaces whose values, if present, will be passed to the
// ext_authz service as an opaque *protobuf::Struct*.
@ -137,15 +137,15 @@ message HttpService {
message AuthorizationRequest {
// Authorization request will include the client request headers that have a correspondent match
// in the :ref:`list <envoy_api_msg_type.matcher.ListStringMatcher>`. Note that in addition to the
// user's supplied matchers:
// in the :ref:`list <envoy_api_msg_type.matcher.v3alpha.ListStringMatcher>`. Note that in
// addition to the user's supplied matchers:
//
// 1. *Host*, *Method*, *Path* and *Content-Length* are automatically included to the list.
//
// 2. *Content-Length* will be set to 0 and the request to the authorization service will not have
// a message body.
//
type.matcher.ListStringMatcher allowed_headers = 1;
type.matcher.v3alpha.ListStringMatcher allowed_headers = 1;
// Sets a list of headers that will be included to the request to authorization service. Note that
// client request of the same key will be overridden.
@ -153,17 +153,18 @@ message AuthorizationRequest {
}
message AuthorizationResponse {
// When this :ref:`list <envoy_api_msg_type.matcher.ListStringMatcher>` is set, authorization
// response headers that have a correspondent match will be added to the original client request.
// Note that coexistent headers will be overridden.
type.matcher.ListStringMatcher allowed_upstream_headers = 1;
// When this :ref:`list <envoy_api_msg_type.matcher.ListStringMatcher>`. is set, authorization
// response headers that have a correspondent match will be added to the client's response. Note
// that when this list is *not* set, all the authorization response headers, except *Authority
// (Host)* will be in the response to the client. When a header is included in this list, *Path*,
// *Status*, *Content-Length*, *WWWAuthenticate* and *Location* are automatically added.
type.matcher.ListStringMatcher allowed_client_headers = 2;
// When this :ref:`list <envoy_api_msg_type.matcher.v3alpha.ListStringMatcher>` is set,
// authorization response headers that have a correspondent match will be added to the original
// client request. Note that coexistent headers will be overridden.
type.matcher.v3alpha.ListStringMatcher allowed_upstream_headers = 1;
// When this :ref:`list <envoy_api_msg_type.matcher.v3alpha.ListStringMatcher>`. is set,
// authorization response headers that have a correspondent match will be added to the client's
// response. Note that when this list is *not* set, all the authorization response headers, except
// *Authority (Host)* will be in the response to the client. When a header is included in this
// list, *Path*, *Status*, *Content-Length*, *WWWAuthenticate* and *Location* are automatically
// added.
type.matcher.v3alpha.ListStringMatcher allowed_client_headers = 2;
}
// Extra settings on a per virtualhost/route/weighted-cluster level.

@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v3alpha/route:pkg",
"//envoy/config/filter/fault/v3alpha:pkg",
"//envoy/type:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -8,7 +8,7 @@ option java_package = "io.envoyproxy.envoy.config.filter.http.fault.v3alpha";
import "envoy/api/v3alpha/route/route.proto";
import "envoy/config/filter/fault/v3alpha/fault.proto";
import "envoy/type/percent.proto";
import "envoy/type/v3alpha/percent.proto";
import "google/protobuf/wrappers.proto";
@ -29,7 +29,7 @@ message FaultAbort {
// The percentage of requests/operations/connections that will be aborted with the error code
// provided.
type.FractionalPercent percentage = 3;
type.v3alpha.FractionalPercent percentage = 3;
}
message HTTPFault {

@ -16,7 +16,7 @@ import "validate/validate.proto";
message FilterConfig {
// The content-type to pass to the upstream when the gRPC bridge filter is applied.
// The filter will also validate that the upstream responds with the same content type.
string content_type = 1 [(validate.rules).string.min_bytes = 1];
string content_type = 1 [(validate.rules).string = {min_bytes: 1}];
// If true, Envoy will assume that the upstream doesn't understand gRPC frames and
// strip the gRPC frame from the request, and add it back in to the response. This will

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,26 +0,0 @@
syntax = "proto3";
package envoy.config.filter.http.grpc_http1_reverse_bridge.v3alpha;
option java_outer_classname = "ConfigProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.grpc_http1_reverse_bridge.v3alpha";
import "validate/validate.proto";
// [#protodoc-title: gRPC HTTP/1.1 Reverse Bridge]
// gRPC HTTP/1.1 Reverse Bridge :ref:`configuration overview
// <config_http_filters_grpc_http1_reverse_bridge>`.
// gRPC reverse bridge filter configuration
message FilterConfig {
// The content-type to pass to the upstream when the gRPC bridge filter is applied.
// The filter will also validate that the upstream responds with the same content type.
string content_type = 1 [(validate.rules).string.min_bytes = 1];
// If true, Envoy will assume that the upstream doesn't understand gRPC frames and
// strip the gRPC frame from the request, and add it back in to the response. This will
// hide the gRPC semantics from the upstream, allowing it to receive and respond with a
// simple binary encoded protobuf.
bool withhold_grpc_frames = 2;
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,73 +0,0 @@
syntax = "proto3";
package envoy.config.filter.http.gzip.v3alpha;
option java_outer_classname = "GzipProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.gzip.v3alpha";
import "google/protobuf/wrappers.proto";
import "validate/validate.proto";
// [#protodoc-title: Gzip]
// Gzip :ref:`configuration overview <config_http_filters_gzip>`.
message Gzip {
enum CompressionStrategy {
DEFAULT = 0;
FILTERED = 1;
HUFFMAN = 2;
RLE = 3;
}
message CompressionLevel {
enum Enum {
DEFAULT = 0;
BEST = 1;
SPEED = 2;
}
}
// Value from 1 to 9 that controls the amount of internal memory used by zlib. Higher values
// use more memory, but are faster and produce better compression results. The default value is 5.
google.protobuf.UInt32Value memory_level = 1 [(validate.rules).uint32 = {lte: 9 gte: 1}];
// Minimum response length, in bytes, which will trigger compression. The default value is 30.
google.protobuf.UInt32Value content_length = 2 [(validate.rules).uint32 = {gte: 30}];
// A value used for selecting the zlib compression level. This setting will affect speed and
// amount of compression applied to the content. "BEST" provides higher compression at the cost of
// higher latency, "SPEED" provides lower compression with minimum impact on response time.
// "DEFAULT" provides an optimal result between speed and compression. This field will be set to
// "DEFAULT" if not specified.
CompressionLevel.Enum compression_level = 3 [(validate.rules).enum = {defined_only: true}];
// A value used for selecting the zlib compression strategy which is directly related to the
// characteristics of the content. Most of the time "DEFAULT" will be the best choice, though
// there are situations which changing this parameter might produce better results. For example,
// run-length encoding (RLE) is typically used when the content is known for having sequences
// which same data occurs many consecutive times. For more information about each strategy, please
// refer to zlib manual.
CompressionStrategy compression_strategy = 4 [(validate.rules).enum = {defined_only: true}];
// Set of strings that allows specifying which mime-types yield compression; e.g.,
// application/json, text/html, etc. When this field is not defined, compression will be applied
// to the following mime-types: "application/javascript", "application/json",
// "application/xhtml+xml", "image/svg+xml", "text/css", "text/html", "text/plain", "text/xml".
repeated string content_type = 6 [(validate.rules).repeated = {max_items: 50}];
// If true, disables compression when the response contains an etag header. When it is false, the
// filter will preserve weak etags and remove the ones that require strong validation.
bool disable_on_etag_header = 7;
// If true, removes accept-encoding from the request headers before dispatching it to the upstream
// so that responses do not get compressed before reaching the filter.
bool remove_accept_encoding_header = 8;
// Value from 9 to 15 that represents the base two logarithmic of the compressor's window size.
// Larger window results in better compression at the expense of memory usage. The default is 12
// which will produce a 4096 bytes window. For more details about this parameter, please refer to
// zlib manual > deflateInit2.
google.protobuf.UInt32Value window_bits = 9 [(validate.rules).uint32 = {lte: 15 gte: 9}];
}

@ -1,92 +0,0 @@
syntax = "proto3";
package envoy.config.filter.http.header_to_metadata.v3alpha;
option java_outer_classname = "HeaderToMetadataProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.header_to_metadata.v3alpha";
import "validate/validate.proto";
// [#protodoc-title: Header-To-Metadata Filter]
//
// The configuration for transforming headers into metadata. This is useful
// for matching load balancer subsets, logging, etc.
//
// Header to Metadata :ref:`configuration overview <config_http_filters_header_to_metadata>`.
message Config {
enum ValueType {
STRING = 0;
NUMBER = 1;
// The value is a serialized `protobuf.Value
// <https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/struct.proto#L62>`_.
PROTOBUF_VALUE = 2;
}
// ValueEncode defines the encoding algorithm.
enum ValueEncode {
// The value is not encoded.
NONE = 0;
// The value is encoded in `Base64 <https://tools.ietf.org/html/rfc4648#section-4>`_.
// Note: this is mostly used for STRING and PROTOBUF_VALUE to escape the
// non-ASCII characters in the header.
BASE64 = 1;
}
message KeyValuePair {
// The namespace if this is empty, the filter's namespace will be used.
string metadata_namespace = 1;
// The key to use within the namespace.
string key = 2 [(validate.rules).string = {min_bytes: 1}];
// The value to pair with the given key.
//
// When used for a `on_header_present` case, if value is non-empty it'll be used
// instead of the header value. If both are empty, no metadata is added.
//
// When used for a `on_header_missing` case, a non-empty value must be provided
// otherwise no metadata is added.
string value = 3;
// The value's type defaults to string.
ValueType type = 4;
// How is the value encoded, default is NONE (not encoded).
// The value will be decoded accordingly before storing to metadata.
ValueEncode encode = 5;
}
// A Rule defines what metadata to apply when a header is present or missing.
message Rule {
// The header that triggers this rule required.
string header = 1 [(validate.rules).string = {min_bytes: 1}];
// If the header is present, apply this metadata KeyValuePair.
//
// If the value in the KeyValuePair is non-empty, it'll be used instead
// of the header value.
KeyValuePair on_header_present = 2;
// If the header is not present, apply this metadata KeyValuePair.
//
// The value in the KeyValuePair must be set, since it'll be used in lieu
// of the missing header value.
KeyValuePair on_header_missing = 3;
// Whether or not to remove the header after a rule is applied.
//
// This prevents headers from leaking.
bool remove = 4;
}
// The list of rules to apply to requests.
repeated Rule request_rules = 1;
// The list of rules to apply to responses.
repeated Rule response_rules = 2;
}

@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v3alpha/route:pkg",
"//envoy/type:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -7,7 +7,7 @@ option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.health_check.v3alpha";
import "envoy/api/v3alpha/route/route.proto";
import "envoy/type/percent.proto";
import "envoy/type/v3alpha/percent.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
@ -30,7 +30,7 @@ message HealthCheck {
// If operating in non-pass-through mode, specifies a set of upstream cluster
// names and the minimum percentage of servers in each of those clusters that
// must be healthy or degraded in order for the filter to return a 200.
map<string, type.Percent> cluster_min_healthy_percentages = 4;
map<string, type.v3alpha.Percent> cluster_min_healthy_percentages = 4;
// Specifies a set of health check request headers to match on. The health check filter will
// check a requests headers against all the specified headers. To specify the health check

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,20 +0,0 @@
syntax = "proto3";
package envoy.config.filter.http.lua.v3alpha;
option java_outer_classname = "LuaProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.lua.v3alpha";
import "validate/validate.proto";
// [#protodoc-title: Lua]
// Lua :ref:`configuration overview <config_http_filters_lua>`.
message Lua {
// The Lua code that Envoy will execute. This can be a very small script that
// further loads code from disk if desired. Note that if JSON configuration is used, the code must
// be properly escaped. YAML configuration may be easier to read since YAML supports multi-line
// strings so complex scripts can be easily expressed inline in the configuration.
string inline_code = 1 [(validate.rules).string = {min_bytes: 1}];
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,22 +0,0 @@
syntax = "proto3";
package envoy.config.filter.http.original_src.v3alpha;
option java_outer_classname = "OriginalSrcProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.original_src.v3alpha";
import "validate/validate.proto";
// [#protodoc-title: Original Src Filter]
// Use the Original source address on upstream connections.
// The Original Src filter binds upstream connections to the original source address determined
// for the request. This address could come from something like the Proxy Protocol filter, or it
// could come from trusted http headers.
message OriginalSrc {
// Sets the SO_MARK option on the upstream connection's socket to the provided value. Used to
// ensure that non-local addresses may be routed back through envoy when binding to the original
// source address. The option will not be applied if the mark is 0.
uint32 mark = 1;
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,52 +0,0 @@
syntax = "proto3";
package envoy.config.filter.http.squash.v3alpha;
option java_outer_classname = "SquashProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.squash.v3alpha";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
import "validate/validate.proto";
// [#protodoc-title: Squash]
// Squash :ref:`configuration overview <config_http_filters_squash>`.
message Squash {
// The name of the cluster that hosts the Squash server.
string cluster = 1 [(validate.rules).string = {min_bytes: 1}];
// When the filter requests the Squash server to create a DebugAttachment, it will use this
// structure as template for the body of the request. It can contain reference to environment
// variables in the form of '{{ ENV_VAR_NAME }}'. These can be used to provide the Squash server
// with more information to find the process to attach the debugger to. For example, in a
// Istio/k8s environment, this will contain information on the pod:
//
// .. code-block:: json
//
// {
// "spec": {
// "attachment": {
// "pod": "{{ POD_NAME }}",
// "namespace": "{{ POD_NAMESPACE }}"
// },
// "match_request": true
// }
// }
//
// (where POD_NAME, POD_NAMESPACE are configured in the pod via the Downward API)
google.protobuf.Struct attachment_template = 2;
// The timeout for individual requests sent to the Squash cluster. Defaults to 1 second.
google.protobuf.Duration request_timeout = 3;
// The total timeout Squash will delay a request and wait for it to be attached. Defaults to 60
// seconds.
google.protobuf.Duration attachment_timeout = 4;
// Amount of time to poll for the status of the attachment object in the Squash server
// (to check if has been attached). Defaults to 1 second.
google.protobuf.Duration attachment_poll_period = 5;
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,152 +0,0 @@
syntax = "proto3";
package envoy.config.filter.http.transcoder.v3alpha;
option java_outer_classname = "TranscoderProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.http.transcoder.v3alpha";
import "validate/validate.proto";
// [#protodoc-title: gRPC-JSON transcoder]
// gRPC-JSON transcoder :ref:`configuration overview <config_http_filters_grpc_json_transcoder>`.
message GrpcJsonTranscoder {
message PrintOptions {
// Whether to add spaces, line breaks and indentation to make the JSON
// output easy to read. Defaults to false.
bool add_whitespace = 1;
// Whether to always print primitive fields. By default primitive
// fields with default values will be omitted in JSON output. For
// example, an int32 field set to 0 will be omitted. Setting this flag to
// true will override the default behavior and print primitive fields
// regardless of their values. Defaults to false.
bool always_print_primitive_fields = 2;
// Whether to always print enums as ints. By default they are rendered
// as strings. Defaults to false.
bool always_print_enums_as_ints = 3;
// Whether to preserve proto field names. By default protobuf will
// generate JSON field names using the ``json_name`` option, or lower camel case,
// in that order. Setting this flag will preserve the original field names. Defaults to false.
bool preserve_proto_field_names = 4;
}
oneof descriptor_set {
option (validate.required) = true;
// Supplies the filename of
// :ref:`the proto descriptor set <config_grpc_json_generate_proto_descriptor_set>` for the gRPC
// services.
string proto_descriptor = 1;
// Supplies the binary content of
// :ref:`the proto descriptor set <config_grpc_json_generate_proto_descriptor_set>` for the gRPC
// services.
bytes proto_descriptor_bin = 4;
}
// A list of strings that
// supplies the fully qualified service names (i.e. "package_name.service_name") that
// the transcoder will translate. If the service name doesn't exist in ``proto_descriptor``,
// Envoy will fail at startup. The ``proto_descriptor`` may contain more services than
// the service names specified here, but they won't be translated.
repeated string services = 2 [(validate.rules).repeated = {min_items: 1}];
// Control options for response JSON. These options are passed directly to
// `JsonPrintOptions <https://developers.google.com/protocol-buffers/docs/reference/cpp/
// google.protobuf.util.json_util#JsonPrintOptions>`_.
PrintOptions print_options = 3;
// Whether to keep the incoming request route after the outgoing headers have been transformed to
// the match the upstream gRPC service. Note: This means that routes for gRPC services that are
// not transcoded cannot be used in combination with *match_incoming_request_route*.
bool match_incoming_request_route = 5;
// A list of query parameters to be ignored for transcoding method mapping.
// By default, the transcoder filter will not transcode a request if there are any
// unknown/invalid query parameters.
//
// Example :
//
// .. code-block:: proto
//
// service Bookstore {
// rpc GetShelf(GetShelfRequest) returns (Shelf) {
// option (google.api.http) = {
// get: "/shelves/{shelf}"
// };
// }
// }
//
// message GetShelfRequest {
// int64 shelf = 1;
// }
//
// message Shelf {}
//
// The request ``/shelves/100?foo=bar`` will not be mapped to ``GetShelf``` because variable
// binding for ``foo`` is not defined. Adding ``foo`` to ``ignored_query_parameters`` will allow
// the same request to be mapped to ``GetShelf``.
repeated string ignored_query_parameters = 6;
// Whether to route methods without the ``google.api.http`` option.
//
// Example :
//
// .. code-block:: proto
//
// package bookstore;
//
// service Bookstore {
// rpc GetShelf(GetShelfRequest) returns (Shelf) {}
// }
//
// message GetShelfRequest {
// int64 shelf = 1;
// }
//
// message Shelf {}
//
// The client could ``post`` a json body ``{"shelf": 1234}`` with the path of
// ``/bookstore.Bookstore/GetShelfRequest`` to call ``GetShelfRequest``.
bool auto_mapping = 7;
// Whether to ignore query parameters that cannot be mapped to a corresponding
// protobuf field. Use this if you cannot control the query parameters and do
// not know them beforehand. Otherwise use ``ignored_query_parameters``.
// Defaults to false.
bool ignore_unknown_query_parameters = 8;
// Whether to convert gRPC status headers to JSON.
// When trailer indicates a gRPC error and there was no HTTP body, take ``google.rpc.Status``
// from the ``grpc-status-details-bin`` header and use it as JSON body.
// If there was no such header, make ``google.rpc.Status`` out of the ``grpc-status`` and
// ``grpc-message`` headers.
// The error details types must be present in the ``proto_descriptor``.
//
// For example, if an upstream server replies with headers:
//
// .. code-block:: none
//
// grpc-status: 5
// grpc-status-details-bin:
// CAUaMwoqdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucnBjLlJlcXVlc3RJbmZvEgUKA3ItMQ
//
// The ``grpc-status-details-bin`` header contains a base64-encoded protobuf message
// ``google.rpc.Status``. It will be transcoded into:
//
// .. code-block:: none
//
// HTTP/1.1 404 Not Found
// content-type: application/json
//
// {"code":5,"details":[{"@type":"type.googleapis.com/google.rpc.RequestInfo","requestId":"r-1"}]}
//
// In order to transcode the message, the ``google.rpc.RequestInfo`` type from
// the ``google/rpc/error_details.proto`` should be included in the configured
// :ref:`proto descriptor set <config_grpc_json_generate_proto_descriptor_set>`.
bool convert_grpc_status = 9;
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,26 +0,0 @@
syntax = "proto3";
package envoy.config.filter.listener.original_src.v3alpha;
option java_outer_classname = "OriginalSrcProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.listener.original_src.v3alpha";
import "validate/validate.proto";
// [#protodoc-title: Original Src Filter]
// Use the Original source address on upstream connections.
// The Original Src filter binds upstream connections to the original source address determined
// for the connection. This address could come from something like the Proxy Protocol filter, or it
// could come from trusted http headers.
message OriginalSrc {
// Whether to bind the port to the one used in the original downstream connection.
// [#not-implemented-hide:]
bool bind_port = 1;
// Sets the SO_MARK option on the upstream connection's socket to the provided value. Used to
// ensure that non-local addresses may be routed back through envoy when binding to the original
// source address. The option will not be applied if the mark is 0.
uint32 mark = 2;
}

@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v3alpha/route:pkg",
"//envoy/type:pkg",
"//envoy/type/matcher:pkg",
"//envoy/type/matcher/v3alpha:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -7,8 +7,8 @@ option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.network.dubbo_proxy.v3alpha";
import "envoy/api/v3alpha/route/route.proto";
import "envoy/type/matcher/string.proto";
import "envoy/type/range.proto";
import "envoy/type/matcher/v3alpha/string.proto";
import "envoy/type/v3alpha/range.proto";
import "google/protobuf/wrappers.proto";
@ -92,12 +92,12 @@ message MethodMatch {
//
// * For range [-10,0), route will match for header value -1, but not for 0,
// "somestring", 10.9, "-1somestring"
type.Int64Range range_match = 4;
type.v3alpha.Int64Range range_match = 4;
}
}
// The name of the method.
type.matcher.StringMatcher name = 1;
type.matcher.v3alpha.StringMatcher name = 1;
// Method parameter definition.
// The key is the parameter index, starting from 0.

@ -9,6 +9,7 @@ api_proto_package(
"//envoy/api/v3alpha:pkg",
"//envoy/api/v3alpha/core:pkg",
"//envoy/config/filter/accesslog/v3alpha:pkg",
"//envoy/type:pkg",
"//envoy/config/filter/network/http_connection_manager/v2:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -11,7 +11,8 @@ import "envoy/api/v3alpha/core/protocol.proto";
import "envoy/api/v3alpha/rds.proto";
import "envoy/api/v3alpha/srds.proto";
import "envoy/config/filter/accesslog/v3alpha/accesslog.proto";
import "envoy/type/percent.proto";
import "envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto";
import "envoy/type/v3alpha/percent.proto";
import "google/protobuf/any.proto";
import "google/protobuf/duration.proto";
@ -102,14 +103,14 @@ message HttpConnectionManager {
// 'tracing.client_sampling' in the :ref:`HTTP Connection Manager
// <config_http_conn_man_runtime>`.
// Default: 100%
type.Percent client_sampling = 3;
type.v3alpha.Percent client_sampling = 3;
// Target percentage of requests managed by this HTTP connection manager that will be randomly
// selected for trace generation, if not requested by the client or not forced. This field is
// a direct analog for the runtime variable 'tracing.random_sampling' in the
// :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`.
// Default: 100%
type.Percent random_sampling = 4;
type.v3alpha.Percent random_sampling = 4;
// Target percentage of requests managed by this HTTP connection manager that will be traced
// after all other sampling checks have been applied (client-directed, force tracing, random
@ -119,7 +120,7 @@ message HttpConnectionManager {
// analog for the runtime variable 'tracing.global_enabled' in the
// :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`.
// Default: 100%
type.Percent overall_sampling = 5;
type.v3alpha.Percent overall_sampling = 5;
// Whether to annotate spans with additional data. If true, spans will include logs for stream
// events.
@ -189,7 +190,7 @@ message HttpConnectionManager {
// Determines if upgrades are enabled or disabled by default. Defaults to true.
// This can be overridden on a per-route basis with :ref:`cluster
// <envoy_api_field_route.RouteAction.upgrade_configs>` as documented in the
// <envoy_api_field_api.v3alpha.route.RouteAction.upgrade_configs>` as documented in the
// :ref:`upgrade documentation <arch_overview_websocket>`.
google.protobuf.BoolValue enabled = 3;
}
@ -272,7 +273,7 @@ message HttpConnectionManager {
//
// This idle timeout applies to new streams and is overridable by the
// :ref:`route-level idle_timeout
// <envoy_api_field_route.RouteAction.idle_timeout>`. Even on a stream in
// <envoy_api_field_api.v3alpha.route.RouteAction.idle_timeout>`. Even on a stream in
// which the override applies, prior to receipt of the initial request
// headers, the :ref:`stream_idle_timeout
// <envoy_api_field_config.filter.network.http_connection_manager.v3alpha.HttpConnectionManager.stream_idle_timeout>`
@ -469,14 +470,16 @@ message ScopedRouteConfigurationsList {
message ScopedRoutes {
// Specifies the mechanism for constructing "scope keys" based on HTTP request attributes. These
// keys are matched against a set of :ref:`Key<envoy_api_msg_ScopedRouteConfiguration.Key>`
// objects assembled from :ref:`ScopedRouteConfiguration<envoy_api_msg_ScopedRouteConfiguration>`
// messages distributed via SRDS (the Scoped Route Discovery Service) or assigned statically via
// keys are matched against a set of
// :ref:`Key<envoy_api_msg_api.v3alpha.ScopedRouteConfiguration.Key>` objects assembled from
// :ref:`ScopedRouteConfiguration<envoy_api_msg_api.v3alpha.ScopedRouteConfiguration>` messages
// distributed via SRDS (the Scoped Route Discovery Service) or assigned statically via
// :ref:`scoped_route_configurations_list<envoy_api_field_config.filter.network.http_connection_manager.v3alpha.ScopedRoutes.scoped_route_configurations_list>`.
//
// Upon receiving a request's headers, the Router will build a key using the algorithm specified
// by this message. This key will be used to look up the routing table (i.e., the
// :ref:`RouteConfiguration<envoy_api_msg_RouteConfiguration>`) to use for the request.
// :ref:`RouteConfiguration<envoy_api_msg_api.v3alpha.RouteConfiguration>`) to use for the
// request.
message ScopeKeyBuilder {
// Specifies the mechanism for constructing key fragments which are composed into scope keys.
message FragmentBuilder {

@ -124,11 +124,11 @@ message RedisProxy {
// mirror.
//
// Parsing this field is implemented such that the runtime key's data may be represented
// as a :ref:`FractionalPercent <envoy_api_msg_type.FractionalPercent>` proto represented
// as JSON/YAML and may also be represented as an integer with the assumption that the value
// is an integral percentage out of 100. For instance, a runtime key lookup returning the
// value "42" would parse as a `FractionalPercent` whose numerator is 42 and denominator is
// HUNDRED.
// as a :ref:`FractionalPercent <envoy_api_msg_type.v3alpha.FractionalPercent>` proto
// represented as JSON/YAML and may also be represented as an integer with the assumption
// that the value is an integral percentage out of 100. For instance, a runtime key lookup
// returning the value "42" would parse as a `FractionalPercent` whose numerator is 42 and
// denominator is HUNDRED.
api.v3alpha.core.RuntimeFractionalPercent runtime_fraction = 2;
// Set this to TRUE to only mirror write commands, this is effectively replicating the
@ -220,8 +220,8 @@ message RedisProxy {
}
// RedisProtocolOptions specifies Redis upstream protocol options. This object is used in
// :ref:`extension_protocol_options<envoy_api_field_Cluster.extension_protocol_options>`, keyed
// by the name `envoy.redis_proxy`.
// :ref:`extension_protocol_options<envoy_api_field_api.v3alpha.Cluster.extension_protocol_options>`,
// keyed by the name `envoy.redis_proxy`.
message RedisProtocolOptions {
// Upstream server password as defined by the `requirepass directive
// <https://redis.io/topics/config>`_ in the server's configuration file.

@ -8,5 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v3alpha/core:pkg",
"//envoy/config/filter/accesslog/v3alpha:pkg",
"//envoy/config/filter/network/tcp_proxy/v2:pkg",
],
)

@ -9,6 +9,7 @@ option java_package = "io.envoyproxy.envoy.config.filter.network.tcp_proxy.v3alp
import "envoy/api/v3alpha/core/address.proto";
import "envoy/api/v3alpha/core/base.proto";
import "envoy/config/filter/accesslog/v3alpha/accesslog.proto";
import "envoy/config/filter/network/tcp_proxy/v2/tcp_proxy.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";

@ -61,7 +61,7 @@ message RouteMatch {
// This does not invert matching done as part of the :ref:`headers field
// <envoy_api_field_config.filter.network.thrift_proxy.v3alpha.RouteMatch.headers>` field. To
// invert header matching, see :ref:`invert_match
// <envoy_api_field_route.HeaderMatcher.invert_match>`.
// <envoy_api_field_api.v3alpha.route.HeaderMatcher.invert_match>`.
bool invert = 3;
// Specifies a set of headers that the route should match on. The router will check the requests

@ -98,8 +98,9 @@ message ThriftFilter {
}
// ThriftProtocolOptions specifies Thrift upstream protocol options. This object is used in
// in :ref:`extension_protocol_options<envoy_api_field_Cluster.extension_protocol_options>`, keyed
// by the name `envoy.filters.network.thrift_proxy`.
// in
// :ref:`extension_protocol_options<envoy_api_field_api.v3alpha.Cluster.extension_protocol_options>`,
// keyed by the name `envoy.filters.network.thrift_proxy`.
// [#comment:next free field: 3]
message ThriftProtocolOptions {
// Supplies the type of transport that the Thrift proxy should use for upstream connections.

@ -22,7 +22,7 @@ message RateLimit {
// Specifies the rate limit configuration stage. Each configured rate limit filter performs a
// rate limit check using descriptors configured in the
// :ref:`envoy_api_msg_config.filter.network.thrift_proxy.v3alpha.RouteAction` for the request.
// :ref:`envoy_api_msg_config.filter.network.thrift_proxy.v2alpha1.RouteAction` for the request.
// Only those entries with a matching stage number are used for a given filter. If not set, the
// default stage number is 0.
//

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,13 +0,0 @@
syntax = "proto3";
package envoy.config.filter.thrift.router.v3alpha;
option java_outer_classname = "RouterProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.filter.thrift.router.v3alpha";
// [#protodoc-title: Router]
// Thrift router :ref:`configuration overview <config_thrift_filters_router>`.
message Router {
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,18 +0,0 @@
syntax = "proto3";
package envoy.config.health_checker.redis.v3alpha;
option java_outer_classname = "RedisProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.health_checker.redis.v3alpha";
// [#protodoc-title: Redis]
// Redis health checker :ref:`configuration overview <config_health_checkers_redis>`.
message Redis {
// If set, optionally perform ``EXISTS <key>`` instead of ``PING``. A return value
// from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other
// than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance
// by setting the specified key to any value and waiting for traffic to drain.
string key = 1;
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,24 +0,0 @@
syntax = "proto3";
package envoy.config.listener.v3alpha;
option java_outer_classname = "ApiListenerProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.listener.v3alpha";
import "google/protobuf/any.proto";
// [#not-implemented-hide:]
// Describes a type of API listener, which is used in non-proxy clients. The type of API
// exposed to the non-proxy application depends on the type of API listener.
message ApiListener {
// The type in this field determines the type of API listener. At present, the following
// types are supported:
// envoy.config.filter.network.http_connection_manager.v3alpha.HttpConnectionManager (HTTP)
// [#next-major-version: In the v3 API, replace this Any field with a oneof containing the
// specific config message for each type of API listener. We could not do this in v2 because
// it would have caused circular dependencies for go protos: lds.proto depends on this file,
// and http_connection_manager.proto depends on rds.proto, which is in the same directory as
// lds.proto, so lds.proto cannot depend on this file.]
google.protobuf.Any api_listener = 1;
}

@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v3alpha/core:pkg",
"//envoy/type/matcher:pkg",
"//envoy/type/matcher/v3alpha:pkg",
],
)

@ -7,7 +7,7 @@ option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.metrics.v3alpha";
import "envoy/api/v3alpha/core/address.proto";
import "envoy/type/matcher/string.proto";
import "envoy/type/matcher/v3alpha/string.proto";
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
@ -78,7 +78,7 @@ message StatsMatcher {
// However, StatsMatcher can be used to limit the creation of families of stats in order to
// conserve memory. Stats can either be disabled entirely, or they can be
// limited by either an exclusion or an inclusion list of :ref:`StringMatcher
// <envoy_api_msg_type.matcher.StringMatcher>` protos:
// <envoy_api_msg_type.matcher.v3alpha.StringMatcher>` protos:
//
// * If `reject_all` is set to `true`, no stats will be instantiated. If `reject_all` is set to
// `false`, all stats will be instantiated.
@ -149,11 +149,11 @@ message StatsMatcher {
// Exclusive match. All stats are enabled except for those matching one of the supplied
// StringMatcher protos.
type.matcher.ListStringMatcher exclusion_list = 2;
type.matcher.v3alpha.ListStringMatcher exclusion_list = 2;
// Inclusive match. No stats are enabled except for those matching one of the supplied
// StringMatcher protos.
type.matcher.ListStringMatcher inclusion_list = 3;
type.matcher.v3alpha.ListStringMatcher inclusion_list = 3;
}
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,78 +0,0 @@
syntax = "proto3";
package envoy.config.overload.v3alpha;
option java_outer_classname = "OverloadProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.overload.v3alpha";
import "google/protobuf/any.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
import "validate/validate.proto";
// [#protodoc-title: Overload Manager]
// The Overload Manager provides an extensible framework to protect Envoy instances
// from overload of various resources (memory, cpu, file descriptors, etc).
// It monitors a configurable set of resources and notifies registered listeners
// when triggers related to those resources fire.
message ResourceMonitor {
// The name of the resource monitor to instantiate. Must match a registered
// resource monitor type. The built-in resource monitors are:
//
// * :ref:`envoy.resource_monitors.fixed_heap
// <envoy_api_msg_config.resource_monitor.fixed_heap.v3alpha.FixedHeapConfig>`
// * :ref:`envoy.resource_monitors.injected_resource
// <envoy_api_msg_config.resource_monitor.injected_resource.v3alpha.InjectedResourceConfig>`
string name = 1 [(validate.rules).string = {min_bytes: 1}];
// Configuration for the resource monitor being instantiated.
oneof config_type {
google.protobuf.Struct config = 2;
google.protobuf.Any typed_config = 3;
}
}
message ThresholdTrigger {
// If the resource pressure is greater than or equal to this value, the trigger
// will fire.
double value = 1 [(validate.rules).double = {lte: 1.0 gte: 0.0}];
}
message Trigger {
// The name of the resource this is a trigger for.
string name = 1 [(validate.rules).string = {min_bytes: 1}];
oneof trigger_oneof {
option (validate.required) = true;
ThresholdTrigger threshold = 2;
}
}
message OverloadAction {
// The name of the overload action. This is just a well-known string that listeners can
// use for registering callbacks. Custom overload actions should be named using reverse
// DNS to ensure uniqueness.
string name = 1 [(validate.rules).string = {min_bytes: 1}];
// A set of triggers for this action. If any of these triggers fire the overload action
// is activated. Listeners are notified when the overload action transitions from
// inactivated to activated, or vice versa.
repeated Trigger triggers = 2 [(validate.rules).repeated = {min_items: 1}];
}
message OverloadManager {
// The interval for refreshing resource usage.
google.protobuf.Duration refresh_interval = 1;
// The set of resources to monitor.
repeated ResourceMonitor resource_monitors = 2 [(validate.rules).repeated = {min_items: 1}];
// The set of overload actions.
repeated OverloadAction actions = 3;
}

@ -146,7 +146,7 @@ message Permission {
//
// * If the :ref:`TLS Inspector <config_listener_filters_tls_inspector>`
// filter is not added, and if a `FilterChainMatch` is not defined for
// the :ref:`server name <envoy_api_field_Listener.FilterChainMatch.server_names>`,
// the :ref:`server name <envoy_api_field_listener.FilterChainMatch.server_names>`,
// a TLS connection's requested SNI server name will be treated as if it
// wasn't present.
//

@ -8,7 +8,7 @@ api_proto_package(
deps = [
"//envoy/api/v3alpha/core:pkg",
"//envoy/api/v3alpha/route:pkg",
"//envoy/type/matcher:pkg",
"//envoy/type/matcher/v3alpha:pkg",
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto",
],
)

@ -8,8 +8,8 @@ option java_package = "io.envoyproxy.envoy.config.rbac.v3alpha";
import "envoy/api/v3alpha/core/address.proto";
import "envoy/api/v3alpha/route/route.proto";
import "envoy/type/matcher/metadata.proto";
import "envoy/type/matcher/string.proto";
import "envoy/type/matcher/v3alpha/metadata.proto";
import "envoy/type/matcher/v3alpha/string.proto";
import "google/api/expr/v1alpha1/syntax.proto";
@ -129,7 +129,7 @@ message Permission {
uint32 destination_port = 6 [(validate.rules).uint32 = {lte: 65535}];
// Metadata that describes additional information about the action.
type.matcher.MetadataMatcher metadata = 7;
type.matcher.v3alpha.MetadataMatcher metadata = 7;
// Negates matching the provided permission. For instance, if the value of `not_rule` would
// match, this permission would not match. Conversely, if the value of `not_rule` would not
@ -146,16 +146,16 @@ message Permission {
//
// * If the :ref:`TLS Inspector <config_listener_filters_tls_inspector>`
// filter is not added, and if a `FilterChainMatch` is not defined for
// the :ref:`server name <envoy_api_field_Listener.FilterChainMatch.server_names>`,
// a TLS connection's requested SNI server name will be treated as if it
// wasn't present.
// the :ref:`server name
// <envoy_api_field_api.v3alpha.listener.FilterChainMatch.server_names>`, a TLS connection's
// requested SNI server name will be treated as if it wasn't present.
//
// * A :ref:`listener filter <arch_overview_listener_filters>` may
// overwrite a connection's requested server name within Envoy.
//
// Please refer to :ref:`this FAQ entry <faq_how_to_setup_sni>` to learn to
// setup SNI.
type.matcher.StringMatcher requested_server_name = 9;
type.matcher.v3alpha.StringMatcher requested_server_name = 9;
}
}
@ -174,7 +174,7 @@ message Principal {
// The name of the principal. If set, The URI SAN or DNS SAN in that order is used from the
// certificate, otherwise the subject field is used. If unset, it applies to any user that is
// authenticated.
type.matcher.StringMatcher principal_name = 2;
type.matcher.v3alpha.StringMatcher principal_name = 2;
}
oneof identifier {
@ -200,7 +200,7 @@ message Principal {
api.v3alpha.route.HeaderMatcher header = 6;
// Metadata that describes additional information about the principal.
type.matcher.MetadataMatcher metadata = 7;
type.matcher.v3alpha.MetadataMatcher metadata = 7;
// Negates matching the provided principal. For instance, if the value of `not_id` would match,
// this principal would not match. Conversely, if the value of `not_id` would not match, this

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,18 +0,0 @@
syntax = "proto3";
package envoy.config.resource_monitor.fixed_heap.v3alpha;
option java_outer_classname = "FixedHeapProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.resource_monitor.fixed_heap.v3alpha";
import "validate/validate.proto";
// [#protodoc-title: Fixed heap]
// The fixed heap resource monitor reports the Envoy process memory pressure, computed as a
// fraction of currently reserved heap memory divided by a statically configured maximum
// specified in the FixedHeapConfig.
message FixedHeapConfig {
uint64 max_heap_size_bytes = 1 [(validate.rules).uint64 = {gt: 0}];
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,19 +0,0 @@
syntax = "proto3";
package envoy.config.resource_monitor.injected_resource.v3alpha;
option java_outer_classname = "InjectedResourceProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.resource_monitor.injected_resource.v3alpha";
import "validate/validate.proto";
// [#protodoc-title: Injected resource]
// The injected resource monitor allows injecting a synthetic resource pressure into Envoy
// via a text file, which must contain a floating-point number in the range [0..1] representing
// the resource pressure and be updated atomically by a symbolic link swap.
// This is intended primarily for integration tests to force Envoy into an overloaded state.
message InjectedResourceConfig {
string filename = 1 [(validate.rules).string = {min_bytes: 1}];
}

@ -6,16 +6,16 @@ option java_outer_classname = "AltsProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.transport_socket.alts.v2alpha";
// [#protodoc-title: ALTS]
import "validate/validate.proto";
// [#protodoc-title: ALTS]
// Configuration for ALTS transport socket. This provides Google's ALTS protocol to Envoy.
// https://cloud.google.com/security/encryption-in-transit/application-layer-transport-security/
message Alts {
// The location of a handshaker service, this is usually 169.254.169.254:8080
// on GCE.
string handshaker_service = 1 [(validate.rules).string.min_bytes = 1];
string handshaker_service = 1 [(validate.rules).string = {min_bytes: 1}];
// The acceptable service accounts from peer, peers not in the list will be rejected in the
// handshake validation step. If empty, no validation will be performed.

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,23 +0,0 @@
syntax = "proto3";
package envoy.config.transport_socket.alts.v3alpha;
option java_outer_classname = "AltsProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.transport_socket.alts.v3alpha";
// [#protodoc-title: ALTS]
import "validate/validate.proto";
// Configuration for ALTS transport socket. This provides Google's ALTS protocol to Envoy.
// https://cloud.google.com/security/encryption-in-transit/application-layer-transport-security/
message Alts {
// The location of a handshaker service, this is usually 169.254.169.254:8080
// on GCE.
string handshaker_service = 1 [(validate.rules).string.min_bytes = 1];
// The acceptable service accounts from peer, peers not in the list will be rejected in the
// handshake validation step. If empty, no validation will be performed.
repeated string peer_service_accounts = 2;
}

@ -1,7 +0,0 @@
# DO NOT EDIT. This file is generated by tools/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package()

@ -1,130 +0,0 @@
syntax = "proto3";
package envoy.data.cluster.v3alpha;
option java_outer_classname = "OutlierDetectionEventProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.data.cluster.v3alpha";
import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";
import "validate/validate.proto";
// [#protodoc-title: Outlier detection logging events]
// :ref:`Outlier detection logging <arch_overview_outlier_detection_logging>`.
// Type of ejection that took place
enum OutlierEjectionType {
// In case upstream host returns certain number of consecutive 5xx.
// If
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// is *false*, all type of errors are treated as HTTP 5xx errors.
// See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for
// details.
CONSECUTIVE_5XX = 0;
// In case upstream host returns certain number of consecutive gateway errors
CONSECUTIVE_GATEWAY_FAILURE = 1;
// Runs over aggregated success rate statistics from every host in cluster
// and selects hosts for which ratio of successful replies deviates from other hosts
// in the cluster.
// If
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// is *false*, all errors (externally and locally generated) are used to calculate success rate
// statistics. See :ref:`Cluster outlier detection <arch_overview_outlier_detection>`
// documentation for details.
SUCCESS_RATE = 2;
// Consecutive local origin failures: Connection failures, resets, timeouts, etc
// This type of ejection happens only when
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// is set to *true*.
// See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for
CONSECUTIVE_LOCAL_ORIGIN_FAILURE = 3;
// Runs over aggregated success rate statistics for local origin failures
// for all hosts in the cluster and selects hosts for which success rate deviates from other
// hosts in the cluster. This type of ejection happens only when
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
// is set to *true*.
// See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for
SUCCESS_RATE_LOCAL_ORIGIN = 4;
// Runs over aggregated success rate statistics from every host in cluster and selects hosts for
// which ratio of failed replies is above configured value.
FAILURE_PERCENTAGE = 5;
// Runs over aggregated success rate statistics for local origin failures from every host in
// cluster and selects hosts for which ratio of failed replies is above configured value.
FAILURE_PERCENTAGE_LOCAL_ORIGIN = 6;
}
// Represents possible action applied to upstream host
enum Action {
// In case host was excluded from service
EJECT = 0;
// In case host was brought back into service
UNEJECT = 1;
}
message OutlierDetectionEvent {
// In case of eject represents type of ejection that took place.
OutlierEjectionType type = 1 [(validate.rules).enum = {defined_only: true}];
// Timestamp for event.
google.protobuf.Timestamp timestamp = 2;
// The time in seconds since the last action (either an ejection or unejection) took place.
google.protobuf.UInt64Value secs_since_last_action = 3;
// The :ref:`cluster <envoy_api_msg_Cluster>` that owns the ejected host.
string cluster_name = 4 [(validate.rules).string = {min_bytes: 1}];
// The URL of the ejected host. E.g., ``tcp://1.2.3.4:80``.
string upstream_url = 5 [(validate.rules).string = {min_bytes: 1}];
// The action that took place.
Action action = 6 [(validate.rules).enum = {defined_only: true}];
// If ``action`` is ``eject``, specifies the number of times the host has been ejected (local to
// that Envoy and gets reset if the host gets removed from the upstream cluster for any reason and
// then re-added).
uint32 num_ejections = 7;
// If ``action`` is ``eject``, specifies if the ejection was enforced. ``true`` means the host was
// ejected. ``false`` means the event was logged but the host was not actually ejected.
bool enforced = 8;
oneof event {
option (validate.required) = true;
OutlierEjectSuccessRate eject_success_rate_event = 9;
OutlierEjectConsecutive eject_consecutive_event = 10;
OutlierEjectFailurePercentage eject_failure_percentage_event = 11;
}
}
message OutlierEjectSuccessRate {
// Hosts success rate at the time of the ejection event on a 0-100 range.
uint32 host_success_rate = 1 [(validate.rules).uint32 = {lte: 100}];
// Average success rate of the hosts in the cluster at the time of the ejection event on a 0-100
// range.
uint32 cluster_average_success_rate = 2 [(validate.rules).uint32 = {lte: 100}];
// Success rate ejection threshold at the time of the ejection event.
uint32 cluster_success_rate_ejection_threshold = 3 [(validate.rules).uint32 = {lte: 100}];
}
message OutlierEjectConsecutive {
}
message OutlierEjectFailurePercentage {
// Host's success rate at the time of the ejection event on a 0-100 range.
uint32 host_success_rate = 1 [(validate.rules).uint32 = {lte: 100}];
}

@ -65,8 +65,9 @@ message HealthCheckEjectUnhealthy {
message HealthCheckAddHealthy {
// Whether this addition is the result of the first ever health check on a host, in which case
// the configured :ref:`healthy threshold <envoy_api_field_core.HealthCheck.healthy_threshold>`
// is bypassed and the host is immediately added.
// the configured :ref:`healthy threshold
// <envoy_api_field_api.v3alpha.core.HealthCheck.healthy_threshold>` is bypassed and the host is
// immediately added.
bool first_check = 1;
}

@ -8,6 +8,6 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/api/v3alpha/core:pkg",
"//envoy/type:pkg",
"//envoy/type/v3alpha:pkg",
],
)

@ -9,7 +9,7 @@ option java_generic_services = true;
import "envoy/api/v3alpha/core/base.proto";
import "envoy/service/auth/v3alpha/attribute_context.proto";
import "envoy/type/http_status.proto";
import "envoy/type/v3alpha/http_status.proto";
import "google/rpc/status.proto";
@ -38,7 +38,7 @@ message CheckRequest {
message DeniedHttpResponse {
// This field allows the authorization service to send a HTTP response status
// code to the downstream client other than 403 (Forbidden).
type.HttpStatus status = 1 [(validate.rules).message = {required: true}];
type.v3alpha.HttpStatus status = 1 [(validate.rules).message = {required: true}];
// This field allows the authorization service to send HTTP response headers
// to the downstream client.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save