aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/grpc/src/proto
diff options
context:
space:
mode:
authordvshkurko <dvshkurko@yandex-team.ru>2022-02-10 16:45:52 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:52 +0300
commitc768a99151e47c3a4bb7b92c514d256abd301c4d (patch)
tree1a2c5ffcf89eb53ecd79dbc9bc0a195c27404d0c /contrib/libs/grpc/src/proto
parent321ee9bce31ec6e238be26dbcbe539cffa2c3309 (diff)
downloadydb-c768a99151e47c3a4bb7b92c514d256abd301c4d.tar.gz
Restoring authorship annotation for <dvshkurko@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/grpc/src/proto')
-rw-r--r--contrib/libs/grpc/src/proto/grpc/channelz/channelz.proto4
-rw-r--r--contrib/libs/grpc/src/proto/grpc/channelz/ya.make34
-rw-r--r--contrib/libs/grpc/src/proto/grpc/core/ya.make30
-rw-r--r--contrib/libs/grpc/src/proto/grpc/gcp/altscontext.proto100
-rw-r--r--contrib/libs/grpc/src/proto/grpc/gcp/handshaker.proto468
-rw-r--r--contrib/libs/grpc/src/proto/grpc/gcp/transport_security_common.proto92
-rw-r--r--contrib/libs/grpc/src/proto/grpc/health/v1/ya.make30
-rw-r--r--contrib/libs/grpc/src/proto/grpc/http_over_grpc/http_over_grpc.proto102
-rw-r--r--contrib/libs/grpc/src/proto/grpc/reflection/v1alpha/ya.make32
-rw-r--r--contrib/libs/grpc/src/proto/grpc/status/ya.make32
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/control.proto22
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/duplicate/ya.make48
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/echo_messages.proto6
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/messages.proto54
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/metrics.proto2
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/xds/ads_for_test.proto102
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/xds/eds_for_test.proto984
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/xds/lrs_for_test.proto366
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/xds/orca_load_report_for_test.proto116
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/xds/ya.make56
-rw-r--r--contrib/libs/grpc/src/proto/grpc/testing/ya.make78
21 files changed, 1379 insertions, 1379 deletions
diff --git a/contrib/libs/grpc/src/proto/grpc/channelz/channelz.proto b/contrib/libs/grpc/src/proto/grpc/channelz/channelz.proto
index a61c47ba49..d0781094ea 100644
--- a/contrib/libs/grpc/src/proto/grpc/channelz/channelz.proto
+++ b/contrib/libs/grpc/src/proto/grpc/channelz/channelz.proto
@@ -35,7 +35,7 @@ option java_outer_classname = "ChannelzProto";
// Channel is a logical grouping of channels, subchannels, and sockets.
message Channel {
- // The identifier for this channel. This should be set.
+ // The identifier for this channel. This should be set.
ChannelRef ref = 1;
// Data specific to this channel.
ChannelData data = 2;
@@ -165,7 +165,7 @@ message ChannelRef {
reserved 3, 4, 5, 6, 7, 8;
}
-// SubchannelRef is a reference to a Subchannel.
+// SubchannelRef is a reference to a Subchannel.
message SubchannelRef {
// The globally unique id for this subchannel. Must be a positive number.
int64 subchannel_id = 7;
diff --git a/contrib/libs/grpc/src/proto/grpc/channelz/ya.make b/contrib/libs/grpc/src/proto/grpc/channelz/ya.make
index 42d41b87ea..9f1e3cedc9 100644
--- a/contrib/libs/grpc/src/proto/grpc/channelz/ya.make
+++ b/contrib/libs/grpc/src/proto/grpc/channelz/ya.make
@@ -1,27 +1,27 @@
-PROTO_LIBRARY()
-
+PROTO_LIBRARY()
+
LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-OWNER(
- akastornov
- dvshkurko
- g:contrib
- g:cpp-contrib
-)
-
+OWNER(
+ akastornov
+ dvshkurko
+ g:contrib
+ g:cpp-contrib
+)
+
PROTO_NAMESPACE(
GLOBAL
contrib/libs/grpc
)
-
-GRPC()
-
-SRCS(
- channelz.proto
-)
-
+
+GRPC()
+
+SRCS(
+ channelz.proto
+)
+
EXCLUDE_TAGS(GO_PROTO)
-END()
+END()
diff --git a/contrib/libs/grpc/src/proto/grpc/core/ya.make b/contrib/libs/grpc/src/proto/grpc/core/ya.make
index c308922451..856c34ee53 100644
--- a/contrib/libs/grpc/src/proto/grpc/core/ya.make
+++ b/contrib/libs/grpc/src/proto/grpc/core/ya.make
@@ -1,26 +1,26 @@
-PROTO_LIBRARY()
-
+PROTO_LIBRARY()
+
LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-OWNER(
- akastornov
- g:contrib
+OWNER(
+ akastornov
+ g:contrib
g:cpp-contrib
-)
-
+)
+
PROTO_NAMESPACE(
GLOBAL
contrib/libs/grpc
)
-
-GRPC()
-
-SRCS(
- stats.proto
-)
-
+
+GRPC()
+
+SRCS(
+ stats.proto
+)
+
EXCLUDE_TAGS(GO_PROTO)
-END()
+END()
diff --git a/contrib/libs/grpc/src/proto/grpc/gcp/altscontext.proto b/contrib/libs/grpc/src/proto/grpc/gcp/altscontext.proto
index 60d16dc790..cce6dd2afc 100644
--- a/contrib/libs/grpc/src/proto/grpc/gcp/altscontext.proto
+++ b/contrib/libs/grpc/src/proto/grpc/gcp/altscontext.proto
@@ -1,50 +1,50 @@
-// Copyright 2018 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/altscontext.proto
-
-syntax = "proto3";
-
-package grpc.gcp;
-
-import "src/proto/grpc/gcp/transport_security_common.proto";
-
-option go_package = "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp";
-option java_multiple_files = true;
-option java_outer_classname = "AltsContextProto";
-option java_package = "io.grpc.alts.internal";
-
-message AltsContext {
- // The application protocol negotiated for this connection.
- string application_protocol = 1;
-
- // The record protocol negotiated for this connection.
- string record_protocol = 2;
-
- // The security level of the created secure channel.
- SecurityLevel security_level = 3;
-
- // The peer service account.
- string peer_service_account = 4;
-
- // The local service account.
- string local_service_account = 5;
-
- // The RPC protocol versions supported by the peer.
- RpcProtocolVersions peer_rpc_versions = 6;
-
- // Additional attributes of the peer.
- map<string, string> peer_attributes = 7;
-}
+// Copyright 2018 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/altscontext.proto
+
+syntax = "proto3";
+
+package grpc.gcp;
+
+import "src/proto/grpc/gcp/transport_security_common.proto";
+
+option go_package = "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp";
+option java_multiple_files = true;
+option java_outer_classname = "AltsContextProto";
+option java_package = "io.grpc.alts.internal";
+
+message AltsContext {
+ // The application protocol negotiated for this connection.
+ string application_protocol = 1;
+
+ // The record protocol negotiated for this connection.
+ string record_protocol = 2;
+
+ // The security level of the created secure channel.
+ SecurityLevel security_level = 3;
+
+ // The peer service account.
+ string peer_service_account = 4;
+
+ // The local service account.
+ string local_service_account = 5;
+
+ // The RPC protocol versions supported by the peer.
+ RpcProtocolVersions peer_rpc_versions = 6;
+
+ // Additional attributes of the peer.
+ map<string, string> peer_attributes = 7;
+}
diff --git a/contrib/libs/grpc/src/proto/grpc/gcp/handshaker.proto b/contrib/libs/grpc/src/proto/grpc/gcp/handshaker.proto
index 39bdc09ac7..fe0e1e199a 100644
--- a/contrib/libs/grpc/src/proto/grpc/gcp/handshaker.proto
+++ b/contrib/libs/grpc/src/proto/grpc/gcp/handshaker.proto
@@ -1,243 +1,243 @@
-// Copyright 2018 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/handshaker.proto
-
-syntax = "proto3";
-
-package grpc.gcp;
-
-import "src/proto/grpc/gcp/transport_security_common.proto";
-
-option go_package = "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp";
-option java_multiple_files = true;
-option java_outer_classname = "HandshakerProto";
-option java_package = "io.grpc.alts.internal";
-
-
-enum HandshakeProtocol {
- // Default value.
- HANDSHAKE_PROTOCOL_UNSPECIFIED = 0;
-
- // TLS handshake protocol.
- TLS = 1;
-
- // Application Layer Transport Security handshake protocol.
- ALTS = 2;
-}
-
-enum NetworkProtocol {
- NETWORK_PROTOCOL_UNSPECIFIED = 0;
- TCP = 1;
- UDP = 2;
-}
-
-message Endpoint {
- // IP address. It should contain an IPv4 or IPv6 string literal, e.g.
- // "192.168.0.1" or "2001:db8::1".
- string ip_address = 1;
-
- // Port number.
- int32 port = 2;
-
- // Network protocol (e.g., TCP, UDP) associated with this endpoint.
- NetworkProtocol protocol = 3;
-}
-
-message Identity {
- oneof identity_oneof {
- // Service account of a connection endpoint.
- string service_account = 1;
-
- // Hostname of a connection endpoint.
- string hostname = 2;
- }
-
- // Additional attributes of the identity.
- map<string, string> attributes = 3;
-}
-
-message StartClientHandshakeReq {
- // Handshake security protocol requested by the client.
- HandshakeProtocol handshake_security_protocol = 1;
-
- // The application protocols supported by the client, e.g., "h2" (for http2),
- // "grpc".
- repeated string application_protocols = 2;
-
- // The record protocols supported by the client, e.g.,
- // "ALTSRP_GCM_AES128".
- repeated string record_protocols = 3;
-
- // (Optional) Describes which server identities are acceptable by the client.
- // If target identities are provided and none of them matches the peer
- // identity of the server, handshake will fail.
- repeated Identity target_identities = 4;
-
- // (Optional) Application may specify a local identity. Otherwise, the
- // handshaker chooses a default local identity.
- Identity local_identity = 5;
-
- // (Optional) Local endpoint information of the connection to the server,
- // such as local IP address, port number, and network protocol.
- Endpoint local_endpoint = 6;
-
- // (Optional) Endpoint information of the remote server, such as IP address,
- // port number, and network protocol.
- Endpoint remote_endpoint = 7;
-
- // (Optional) If target name is provided, a secure naming check is performed
- // to verify that the peer authenticated identity is indeed authorized to run
- // the target name.
- string target_name = 8;
-
- // (Optional) RPC protocol versions supported by the client.
- RpcProtocolVersions rpc_versions = 9;
+// Copyright 2018 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/handshaker.proto
+
+syntax = "proto3";
+
+package grpc.gcp;
+
+import "src/proto/grpc/gcp/transport_security_common.proto";
+
+option go_package = "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp";
+option java_multiple_files = true;
+option java_outer_classname = "HandshakerProto";
+option java_package = "io.grpc.alts.internal";
+
+
+enum HandshakeProtocol {
+ // Default value.
+ HANDSHAKE_PROTOCOL_UNSPECIFIED = 0;
+
+ // TLS handshake protocol.
+ TLS = 1;
+
+ // Application Layer Transport Security handshake protocol.
+ ALTS = 2;
+}
+
+enum NetworkProtocol {
+ NETWORK_PROTOCOL_UNSPECIFIED = 0;
+ TCP = 1;
+ UDP = 2;
+}
+
+message Endpoint {
+ // IP address. It should contain an IPv4 or IPv6 string literal, e.g.
+ // "192.168.0.1" or "2001:db8::1".
+ string ip_address = 1;
+
+ // Port number.
+ int32 port = 2;
+
+ // Network protocol (e.g., TCP, UDP) associated with this endpoint.
+ NetworkProtocol protocol = 3;
+}
+
+message Identity {
+ oneof identity_oneof {
+ // Service account of a connection endpoint.
+ string service_account = 1;
+
+ // Hostname of a connection endpoint.
+ string hostname = 2;
+ }
+
+ // Additional attributes of the identity.
+ map<string, string> attributes = 3;
+}
+
+message StartClientHandshakeReq {
+ // Handshake security protocol requested by the client.
+ HandshakeProtocol handshake_security_protocol = 1;
+
+ // The application protocols supported by the client, e.g., "h2" (for http2),
+ // "grpc".
+ repeated string application_protocols = 2;
+
+ // The record protocols supported by the client, e.g.,
+ // "ALTSRP_GCM_AES128".
+ repeated string record_protocols = 3;
+
+ // (Optional) Describes which server identities are acceptable by the client.
+ // If target identities are provided and none of them matches the peer
+ // identity of the server, handshake will fail.
+ repeated Identity target_identities = 4;
+
+ // (Optional) Application may specify a local identity. Otherwise, the
+ // handshaker chooses a default local identity.
+ Identity local_identity = 5;
+
+ // (Optional) Local endpoint information of the connection to the server,
+ // such as local IP address, port number, and network protocol.
+ Endpoint local_endpoint = 6;
+
+ // (Optional) Endpoint information of the remote server, such as IP address,
+ // port number, and network protocol.
+ Endpoint remote_endpoint = 7;
+
+ // (Optional) If target name is provided, a secure naming check is performed
+ // to verify that the peer authenticated identity is indeed authorized to run
+ // the target name.
+ string target_name = 8;
+
+ // (Optional) RPC protocol versions supported by the client.
+ RpcProtocolVersions rpc_versions = 9;
// (Optional) Maximum frame size supported by the client.
uint32 max_frame_size = 10;
-}
-
-message ServerHandshakeParameters {
- // The record protocols supported by the server, e.g.,
- // "ALTSRP_GCM_AES128".
- repeated string record_protocols = 1;
-
- // (Optional) A list of local identities supported by the server, if
- // specified. Otherwise, the handshaker chooses a default local identity.
- repeated Identity local_identities = 2;
-}
-
-message StartServerHandshakeReq {
- // The application protocols supported by the server, e.g., "h2" (for http2),
- // "grpc".
- repeated string application_protocols = 1;
-
- // Handshake parameters (record protocols and local identities supported by
- // the server) mapped by the handshake protocol. Each handshake security
- // protocol (e.g., TLS or ALTS) has its own set of record protocols and local
- // identities. Since protobuf does not support enum as key to the map, the key
- // to handshake_parameters is the integer value of HandshakeProtocol enum.
- map<int32, ServerHandshakeParameters> handshake_parameters = 2;
-
- // Bytes in out_frames returned from the peer's HandshakerResp. It is possible
- // that the peer's out_frames are split into multiple HandshakReq messages.
- bytes in_bytes = 3;
-
- // (Optional) Local endpoint information of the connection to the client,
- // such as local IP address, port number, and network protocol.
- Endpoint local_endpoint = 4;
-
- // (Optional) Endpoint information of the remote client, such as IP address,
- // port number, and network protocol.
- Endpoint remote_endpoint = 5;
-
- // (Optional) RPC protocol versions supported by the server.
- RpcProtocolVersions rpc_versions = 6;
+}
+
+message ServerHandshakeParameters {
+ // The record protocols supported by the server, e.g.,
+ // "ALTSRP_GCM_AES128".
+ repeated string record_protocols = 1;
+
+ // (Optional) A list of local identities supported by the server, if
+ // specified. Otherwise, the handshaker chooses a default local identity.
+ repeated Identity local_identities = 2;
+}
+
+message StartServerHandshakeReq {
+ // The application protocols supported by the server, e.g., "h2" (for http2),
+ // "grpc".
+ repeated string application_protocols = 1;
+
+ // Handshake parameters (record protocols and local identities supported by
+ // the server) mapped by the handshake protocol. Each handshake security
+ // protocol (e.g., TLS or ALTS) has its own set of record protocols and local
+ // identities. Since protobuf does not support enum as key to the map, the key
+ // to handshake_parameters is the integer value of HandshakeProtocol enum.
+ map<int32, ServerHandshakeParameters> handshake_parameters = 2;
+
+ // Bytes in out_frames returned from the peer's HandshakerResp. It is possible
+ // that the peer's out_frames are split into multiple HandshakReq messages.
+ bytes in_bytes = 3;
+
+ // (Optional) Local endpoint information of the connection to the client,
+ // such as local IP address, port number, and network protocol.
+ Endpoint local_endpoint = 4;
+
+ // (Optional) Endpoint information of the remote client, such as IP address,
+ // port number, and network protocol.
+ Endpoint remote_endpoint = 5;
+
+ // (Optional) RPC protocol versions supported by the server.
+ RpcProtocolVersions rpc_versions = 6;
// (Optional) Maximum frame size supported by the server.
uint32 max_frame_size = 7;
-}
-
-message NextHandshakeMessageReq {
- // Bytes in out_frames returned from the peer's HandshakerResp. It is possible
- // that the peer's out_frames are split into multiple NextHandshakerMessageReq
- // messages.
- bytes in_bytes = 1;
-}
-
-message HandshakerReq {
- oneof req_oneof {
- // The start client handshake request message.
- StartClientHandshakeReq client_start = 1;
-
- // The start server handshake request message.
- StartServerHandshakeReq server_start = 2;
-
- // The next handshake request message.
- NextHandshakeMessageReq next = 3;
- }
-}
-
-message HandshakerResult {
- // The application protocol negotiated for this connection.
- string application_protocol = 1;
-
- // The record protocol negotiated for this connection.
- string record_protocol = 2;
-
- // Cryptographic key data. The key data may be more than the key length
- // required for the record protocol, thus the client of the handshaker
- // service needs to truncate the key data into the right key length.
- bytes key_data = 3;
-
- // The authenticated identity of the peer.
- Identity peer_identity = 4;
-
- // The local identity used in the handshake.
- Identity local_identity = 5;
-
- // Indicate whether the handshaker service client should keep the channel
- // between the handshaker service open, e.g., in order to handle
- // post-handshake messages in the future.
- bool keep_channel_open = 6;
-
- // The RPC protocol versions supported by the peer.
- RpcProtocolVersions peer_rpc_versions = 7;
+}
+
+message NextHandshakeMessageReq {
+ // Bytes in out_frames returned from the peer's HandshakerResp. It is possible
+ // that the peer's out_frames are split into multiple NextHandshakerMessageReq
+ // messages.
+ bytes in_bytes = 1;
+}
+
+message HandshakerReq {
+ oneof req_oneof {
+ // The start client handshake request message.
+ StartClientHandshakeReq client_start = 1;
+
+ // The start server handshake request message.
+ StartServerHandshakeReq server_start = 2;
+
+ // The next handshake request message.
+ NextHandshakeMessageReq next = 3;
+ }
+}
+
+message HandshakerResult {
+ // The application protocol negotiated for this connection.
+ string application_protocol = 1;
+
+ // The record protocol negotiated for this connection.
+ string record_protocol = 2;
+
+ // Cryptographic key data. The key data may be more than the key length
+ // required for the record protocol, thus the client of the handshaker
+ // service needs to truncate the key data into the right key length.
+ bytes key_data = 3;
+
+ // The authenticated identity of the peer.
+ Identity peer_identity = 4;
+
+ // The local identity used in the handshake.
+ Identity local_identity = 5;
+
+ // Indicate whether the handshaker service client should keep the channel
+ // between the handshaker service open, e.g., in order to handle
+ // post-handshake messages in the future.
+ bool keep_channel_open = 6;
+
+ // The RPC protocol versions supported by the peer.
+ RpcProtocolVersions peer_rpc_versions = 7;
// The maximum frame size of the peer.
uint32 max_frame_size = 8;
-}
-
-message HandshakerStatus {
- // The status code. This could be the gRPC status code.
- uint32 code = 1;
-
- // The status details.
- string details = 2;
-}
-
-message HandshakerResp {
- // Frames to be given to the peer for the NextHandshakeMessageReq. May be
- // empty if no out_frames have to be sent to the peer or if in_bytes in the
- // HandshakerReq are incomplete. All the non-empty out frames must be sent to
- // the peer even if the handshaker status is not OK as these frames may
- // contain the alert frames.
- bytes out_frames = 1;
-
- // Number of bytes in the in_bytes consumed by the handshaker. It is possible
- // that part of in_bytes in HandshakerReq was unrelated to the handshake
- // process.
- uint32 bytes_consumed = 2;
-
- // This is set iff the handshake was successful. out_frames may still be set
- // to frames that needs to be forwarded to the peer.
- HandshakerResult result = 3;
-
- // Status of the handshaker.
- HandshakerStatus status = 4;
-}
-
-service HandshakerService {
- // Handshaker service accepts a stream of handshaker request, returning a
- // stream of handshaker response. Client is expected to send exactly one
- // message with either client_start or server_start followed by one or more
- // messages with next. Each time client sends a request, the handshaker
- // service expects to respond. Client does not have to wait for service's
- // response before sending next request.
- rpc DoHandshake(stream HandshakerReq)
- returns (stream HandshakerResp) {
- }
-}
+}
+
+message HandshakerStatus {
+ // The status code. This could be the gRPC status code.
+ uint32 code = 1;
+
+ // The status details.
+ string details = 2;
+}
+
+message HandshakerResp {
+ // Frames to be given to the peer for the NextHandshakeMessageReq. May be
+ // empty if no out_frames have to be sent to the peer or if in_bytes in the
+ // HandshakerReq are incomplete. All the non-empty out frames must be sent to
+ // the peer even if the handshaker status is not OK as these frames may
+ // contain the alert frames.
+ bytes out_frames = 1;
+
+ // Number of bytes in the in_bytes consumed by the handshaker. It is possible
+ // that part of in_bytes in HandshakerReq was unrelated to the handshake
+ // process.
+ uint32 bytes_consumed = 2;
+
+ // This is set iff the handshake was successful. out_frames may still be set
+ // to frames that needs to be forwarded to the peer.
+ HandshakerResult result = 3;
+
+ // Status of the handshaker.
+ HandshakerStatus status = 4;
+}
+
+service HandshakerService {
+ // Handshaker service accepts a stream of handshaker request, returning a
+ // stream of handshaker response. Client is expected to send exactly one
+ // message with either client_start or server_start followed by one or more
+ // messages with next. Each time client sends a request, the handshaker
+ // service expects to respond. Client does not have to wait for service's
+ // response before sending next request.
+ rpc DoHandshake(stream HandshakerReq)
+ returns (stream HandshakerResp) {
+ }
+}
diff --git a/contrib/libs/grpc/src/proto/grpc/gcp/transport_security_common.proto b/contrib/libs/grpc/src/proto/grpc/gcp/transport_security_common.proto
index 8a123b1c26..8f01be79e3 100644
--- a/contrib/libs/grpc/src/proto/grpc/gcp/transport_security_common.proto
+++ b/contrib/libs/grpc/src/proto/grpc/gcp/transport_security_common.proto
@@ -1,46 +1,46 @@
-// Copyright 2018 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// The canonical version of this proto can be found at
-// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/transport_security_common.proto
-
-syntax = "proto3";
-
-package grpc.gcp;
-
-option go_package = "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp";
-option java_multiple_files = true;
-option java_outer_classname = "TransportSecurityCommonProto";
-option java_package = "io.grpc.alts.internal";
-
-// The security level of the created channel. The list is sorted in increasing
-// level of security. This order must always be maintained.
-enum SecurityLevel {
- SECURITY_NONE = 0;
- INTEGRITY_ONLY = 1;
- INTEGRITY_AND_PRIVACY = 2;
-}
-
-// Max and min supported RPC protocol versions.
-message RpcProtocolVersions {
- // RPC version contains a major version and a minor version.
- message Version {
- uint32 major = 1;
- uint32 minor = 2;
- }
- // Maximum supported RPC version.
- Version max_rpc_version = 1;
- // Minimum supported RPC version.
- Version min_rpc_version = 2;
-}
+// Copyright 2018 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/transport_security_common.proto
+
+syntax = "proto3";
+
+package grpc.gcp;
+
+option go_package = "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp";
+option java_multiple_files = true;
+option java_outer_classname = "TransportSecurityCommonProto";
+option java_package = "io.grpc.alts.internal";
+
+// The security level of the created channel. The list is sorted in increasing
+// level of security. This order must always be maintained.
+enum SecurityLevel {
+ SECURITY_NONE = 0;
+ INTEGRITY_ONLY = 1;
+ INTEGRITY_AND_PRIVACY = 2;
+}
+
+// Max and min supported RPC protocol versions.
+message RpcProtocolVersions {
+ // RPC version contains a major version and a minor version.
+ message Version {
+ uint32 major = 1;
+ uint32 minor = 2;
+ }
+ // Maximum supported RPC version.
+ Version max_rpc_version = 1;
+ // Minimum supported RPC version.
+ Version min_rpc_version = 2;
+}
diff --git a/contrib/libs/grpc/src/proto/grpc/health/v1/ya.make b/contrib/libs/grpc/src/proto/grpc/health/v1/ya.make
index a33e7629ae..7bb8b0dff9 100644
--- a/contrib/libs/grpc/src/proto/grpc/health/v1/ya.make
+++ b/contrib/libs/grpc/src/proto/grpc/health/v1/ya.make
@@ -1,26 +1,26 @@
-PROTO_LIBRARY()
-
+PROTO_LIBRARY()
+
LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-OWNER(
- akastornov
- g:contrib
+OWNER(
+ akastornov
+ g:contrib
g:cpp-contrib
-)
-
+)
+
PROTO_NAMESPACE(
GLOBAL
contrib/libs/grpc
)
-
-GRPC()
-
-SRCS(
- health.proto
-)
-
+
+GRPC()
+
+SRCS(
+ health.proto
+)
+
EXCLUDE_TAGS(GO_PROTO)
-END()
+END()
diff --git a/contrib/libs/grpc/src/proto/grpc/http_over_grpc/http_over_grpc.proto b/contrib/libs/grpc/src/proto/grpc/http_over_grpc/http_over_grpc.proto
index 87165db66f..ccfa951cd4 100644
--- a/contrib/libs/grpc/src/proto/grpc/http_over_grpc/http_over_grpc.proto
+++ b/contrib/libs/grpc/src/proto/grpc/http_over_grpc/http_over_grpc.proto
@@ -1,51 +1,51 @@
-// Copyright 2019 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto3";
-
-package grpc.http_over_grpc;
-
-// Represents HTTP 1.1 header.
-message Header {
- string key = 1;
- repeated string values = 2;
-}
-
-// An HTTP 1.1 request encapsulated in a gRPC.
-message HTTPOverGRPCRequest {
- // The HTTP request method.
- string method = 1;
- // The HTTP request URL.
- string url = 2;
- // The HTTP request headers.
- repeated Header headers = 3;
- // HTTP request body.
- bytes body = 4;
-}
-
-// An HTTP 1.1 reply encapsulated in an RPC.
-message HTTPOverGRPCReply {
- // The HTTP status code (e.g. 200, 400, 404).
- int32 status = 1;
- // The HTTP response headers.
- repeated Header headers = 2;
- // The HTTP response body.
- bytes body = 3;
-}
-
-// Currently does not support HTTP chunked transfer encoding.
-service HTTPOverGRPC {
- // Perform the given HTTP request.
- rpc HTTPRequest(HTTPOverGRPCRequest) returns (HTTPOverGRPCReply) {}
-}
+// Copyright 2019 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package grpc.http_over_grpc;
+
+// Represents HTTP 1.1 header.
+message Header {
+ string key = 1;
+ repeated string values = 2;
+}
+
+// An HTTP 1.1 request encapsulated in a gRPC.
+message HTTPOverGRPCRequest {
+ // The HTTP request method.
+ string method = 1;
+ // The HTTP request URL.
+ string url = 2;
+ // The HTTP request headers.
+ repeated Header headers = 3;
+ // HTTP request body.
+ bytes body = 4;
+}
+
+// An HTTP 1.1 reply encapsulated in an RPC.
+message HTTPOverGRPCReply {
+ // The HTTP status code (e.g. 200, 400, 404).
+ int32 status = 1;
+ // The HTTP response headers.
+ repeated Header headers = 2;
+ // The HTTP response body.
+ bytes body = 3;
+}
+
+// Currently does not support HTTP chunked transfer encoding.
+service HTTPOverGRPC {
+ // Perform the given HTTP request.
+ rpc HTTPRequest(HTTPOverGRPCRequest) returns (HTTPOverGRPCReply) {}
+}
diff --git a/contrib/libs/grpc/src/proto/grpc/reflection/v1alpha/ya.make b/contrib/libs/grpc/src/proto/grpc/reflection/v1alpha/ya.make
index 5c59d3fad0..f8e301c937 100644
--- a/contrib/libs/grpc/src/proto/grpc/reflection/v1alpha/ya.make
+++ b/contrib/libs/grpc/src/proto/grpc/reflection/v1alpha/ya.make
@@ -1,28 +1,28 @@
-PROTO_LIBRARY()
-
+PROTO_LIBRARY()
+
LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-OWNER(
- akastornov
- g:contrib
- g:cpp-contrib
-)
-
+OWNER(
+ akastornov
+ g:contrib
+ g:cpp-contrib
+)
+
PROTO_NAMESPACE(
GLOBAL
contrib/libs/grpc
)
-
+
PY_NAMESPACE(src.proto.grpc.reflection.v1alpha)
-GRPC()
-
-SRCS(
- reflection.proto
-)
-
+GRPC()
+
+SRCS(
+ reflection.proto
+)
+
EXCLUDE_TAGS(GO_PROTO)
-END()
+END()
diff --git a/contrib/libs/grpc/src/proto/grpc/status/ya.make b/contrib/libs/grpc/src/proto/grpc/status/ya.make
index 491b0fe2eb..eec367765f 100644
--- a/contrib/libs/grpc/src/proto/grpc/status/ya.make
+++ b/contrib/libs/grpc/src/proto/grpc/status/ya.make
@@ -1,26 +1,26 @@
-PROTO_LIBRARY()
-
+PROTO_LIBRARY()
+
LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-OWNER(
- akastornov
- g:contrib
- g:cpp-contrib
-)
-
+OWNER(
+ akastornov
+ g:contrib
+ g:cpp-contrib
+)
+
PROTO_NAMESPACE(
GLOBAL
contrib/libs/grpc
)
-
-GRPC()
-
-SRCS(
- status.proto
-)
-
+
+GRPC()
+
+SRCS(
+ status.proto
+)
+
EXCLUDE_TAGS(GO_PROTO)
-END()
+END()
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/control.proto b/contrib/libs/grpc/src/proto/grpc/testing/control.proto
index 9c23dff71e..742b21926e 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/control.proto
+++ b/contrib/libs/grpc/src/proto/grpc/testing/control.proto
@@ -226,22 +226,22 @@ message Scenarios {
// once the scenario has finished.
message ScenarioResultSummary
{
- // Total number of operations per second over all clients. What is counted as 1 'operation' depends on the benchmark scenarios:
- // For unary benchmarks, an operation is processing of a single unary RPC.
- // For streaming benchmarks, an operation is processing of a single ping pong of request and response.
+ // Total number of operations per second over all clients. What is counted as 1 'operation' depends on the benchmark scenarios:
+ // For unary benchmarks, an operation is processing of a single unary RPC.
+ // For streaming benchmarks, an operation is processing of a single ping pong of request and response.
double qps = 1;
- // QPS per server core.
+ // QPS per server core.
double qps_per_server_core = 2;
- // The total server cpu load based on system time across all server processes, expressed as percentage of a single cpu core.
- // For example, 85 implies 85% of a cpu core, 125 implies 125% of a cpu core. Since we are accumulating the cpu load across all the server
- // processes, the value could > 100 when there are multiple servers or a single server using multiple threads and cores.
- // Same explanation for the total client cpu load below.
+ // The total server cpu load based on system time across all server processes, expressed as percentage of a single cpu core.
+ // For example, 85 implies 85% of a cpu core, 125 implies 125% of a cpu core. Since we are accumulating the cpu load across all the server
+ // processes, the value could > 100 when there are multiple servers or a single server using multiple threads and cores.
+ // Same explanation for the total client cpu load below.
double server_system_time = 3;
- // The total server cpu load based on user time across all server processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
+ // The total server cpu load based on user time across all server processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
double server_user_time = 4;
- // The total client cpu load based on system time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
+ // The total client cpu load based on system time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
double client_system_time = 5;
- // The total client cpu load based on user time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
+ // The total client cpu load based on user time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
double client_user_time = 6;
// X% latency percentiles (in nanoseconds)
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/duplicate/ya.make b/contrib/libs/grpc/src/proto/grpc/testing/duplicate/ya.make
index 10f4d8a6ea..b94aa415f8 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/duplicate/ya.make
+++ b/contrib/libs/grpc/src/proto/grpc/testing/duplicate/ya.make
@@ -1,34 +1,34 @@
-PROTO_LIBRARY()
-
+PROTO_LIBRARY()
+
LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-OWNER(
- akastornov
- g:contrib
+OWNER(
+ akastornov
+ g:contrib
g:cpp-contrib
-)
-
-EXCLUDE_TAGS(
+)
+
+EXCLUDE_TAGS(
GO_PROTO
- PY_PROTO
- PY3_PROTO
-)
-
+ PY_PROTO
+ PY3_PROTO
+)
+
PROTO_NAMESPACE(
GLOBAL
contrib/libs/grpc
)
-
-PEERDIR(
- contrib/libs/grpc/src/proto/grpc/testing
-)
-
-GRPC()
-
-SRCS(
- echo_duplicate.proto
-)
-
-END()
+
+PEERDIR(
+ contrib/libs/grpc/src/proto/grpc/testing
+)
+
+GRPC()
+
+SRCS(
+ echo_duplicate.proto
+)
+
+END()
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/echo_messages.proto b/contrib/libs/grpc/src/proto/grpc/testing/echo_messages.proto
index 91cc79e292..6f1e5f3404 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/echo_messages.proto
+++ b/contrib/libs/grpc/src/proto/grpc/testing/echo_messages.proto
@@ -17,8 +17,8 @@ syntax = "proto3";
package grpc.testing;
-option cc_enable_arenas = true;
-
+option cc_enable_arenas = true;
+
// Message to be echoed back serialized in trailer.
message DebugInfo {
repeated string stack_entries = 1;
@@ -49,7 +49,7 @@ message RequestParams {
ErrorStatus expected_error = 14;
int32 server_sleep_us = 15; // sleep when invoking server for deadline tests
int32 backend_channel_idx = 16; // which backend to send request to
- bool echo_metadata_initially = 17;
+ bool echo_metadata_initially = 17;
bool server_notify_client_when_started = 18;
}
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/messages.proto b/contrib/libs/grpc/src/proto/grpc/testing/messages.proto
index 4523e298c5..70e3427760 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/messages.proto
+++ b/contrib/libs/grpc/src/proto/grpc/testing/messages.proto
@@ -48,21 +48,21 @@ message EchoStatus {
string message = 2;
}
-// The type of route that a client took to reach a server w.r.t. gRPCLB.
-// The server must fill in "fallback" if it detects that the RPC reached
-// the server via the "gRPCLB fallback" path, and "backend" if it detects
-// that the RPC reached the server via "gRPCLB backend" path (i.e. if it got
-// the address of this server from the gRPCLB server BalanceLoad RPC). Exactly
-// how this detection is done is context and server dependent.
-enum GrpclbRouteType {
- // Server didn't detect the route that a client took to reach it.
- GRPCLB_ROUTE_TYPE_UNKNOWN = 0;
- // Indicates that a client reached a server via gRPCLB fallback.
- GRPCLB_ROUTE_TYPE_FALLBACK = 1;
- // Indicates that a client reached a server as a gRPCLB-given backend.
- GRPCLB_ROUTE_TYPE_BACKEND = 2;
-}
-
+// The type of route that a client took to reach a server w.r.t. gRPCLB.
+// The server must fill in "fallback" if it detects that the RPC reached
+// the server via the "gRPCLB fallback" path, and "backend" if it detects
+// that the RPC reached the server via "gRPCLB backend" path (i.e. if it got
+// the address of this server from the gRPCLB server BalanceLoad RPC). Exactly
+// how this detection is done is context and server dependent.
+enum GrpclbRouteType {
+ // Server didn't detect the route that a client took to reach it.
+ GRPCLB_ROUTE_TYPE_UNKNOWN = 0;
+ // Indicates that a client reached a server via gRPCLB fallback.
+ GRPCLB_ROUTE_TYPE_FALLBACK = 1;
+ // Indicates that a client reached a server as a gRPCLB-given backend.
+ GRPCLB_ROUTE_TYPE_BACKEND = 2;
+}
+
// Unary request.
message SimpleRequest {
// Desired payload type in the response from the server.
@@ -92,12 +92,12 @@ message SimpleRequest {
// Whether the server should expect this request to be compressed.
BoolValue expect_compressed = 8;
-
- // Whether SimpleResponse should include server_id.
- bool fill_server_id = 9;
-
- // Whether SimpleResponse should include grpclb_route_type.
- bool fill_grpclb_route_type = 10;
+
+ // Whether SimpleResponse should include server_id.
+ bool fill_server_id = 9;
+
+ // Whether SimpleResponse should include grpclb_route_type.
+ bool fill_grpclb_route_type = 10;
}
// Unary response, as configured by the request.
@@ -109,12 +109,12 @@ message SimpleResponse {
string username = 2;
// OAuth scope.
string oauth_scope = 3;
-
- // Server ID. This must be unique among different server instances,
- // but the same across all RPC's made to a particular server instance.
- string server_id = 4;
- // gRPCLB Path.
- GrpclbRouteType grpclb_route_type = 5;
+
+ // Server ID. This must be unique among different server instances,
+ // but the same across all RPC's made to a particular server instance.
+ string server_id = 4;
+ // gRPCLB Path.
+ GrpclbRouteType grpclb_route_type = 5;
// Server hostname.
string hostname = 6;
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/metrics.proto b/contrib/libs/grpc/src/proto/grpc/testing/metrics.proto
index cffd985d4e..6950400643 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/metrics.proto
+++ b/contrib/libs/grpc/src/proto/grpc/testing/metrics.proto
@@ -22,7 +22,7 @@ syntax = "proto3";
package grpc.testing;
-// Response message containing the gauge name and value
+// Response message containing the gauge name and value
message GaugeResponse {
string name = 1;
oneof value {
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/xds/ads_for_test.proto b/contrib/libs/grpc/src/proto/grpc/testing/xds/ads_for_test.proto
index a6aafbe53e..0d308fbbea 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/xds/ads_for_test.proto
+++ b/contrib/libs/grpc/src/proto/grpc/testing/xds/ads_for_test.proto
@@ -1,51 +1,51 @@
-// Copyright 2019 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// This file contains the eds protocol and its dependency.
-//
-// TODO(juanlishen): This file is a hack to avoid a problem we're
-// currently having where we can't depend on a proto file in an external
-// repo due to bazel limitations. Once that's fixed, this should be
-// removed. Until this, it should be used in the gRPC tests only, or else it
-// will cause a conflict due to the same proto messages being defined in
-// multiple files in the same binary.
-
-syntax = "proto3";
-
-package envoy.service.discovery.v2;
-
-import "src/proto/grpc/testing/xds/eds_for_test.proto";
-
-// [#not-implemented-hide:] Discovery services for endpoints, clusters, routes,
-// and listeners are retained in the package `envoy.api.v2` for backwards
-// compatibility with existing management servers. New development in discovery
-// services should proceed in the package `envoy.service.discovery.v2`.
-
-// See https://github.com/lyft/envoy-api#apis for a description of the role of
-// ADS and how it is intended to be used by a management server. ADS requests
-// have the same structure as their singleton xDS counterparts, but can
-// multiplex many resource types on a single stream. The type_url in the
-// DiscoveryRequest/DiscoveryResponse provides sufficient information to recover
-// the multiplexed singleton APIs at the Envoy instance and management server.
-service AggregatedDiscoveryService {
- // This is a gRPC-only API.
- rpc StreamAggregatedResources(stream envoy.api.v2.DiscoveryRequest)
- returns (stream envoy.api.v2.DiscoveryResponse) {
- }
-
- // Commented out so that we don't have to copy the request/response protos.
-// rpc DeltaAggregatedResources(stream api.v2.DeltaDiscoveryRequest)
-// returns (stream api.v2.DeltaDiscoveryResponse) {
-// }
-}
+// Copyright 2019 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file contains the eds protocol and its dependency.
+//
+// TODO(juanlishen): This file is a hack to avoid a problem we're
+// currently having where we can't depend on a proto file in an external
+// repo due to bazel limitations. Once that's fixed, this should be
+// removed. Until this, it should be used in the gRPC tests only, or else it
+// will cause a conflict due to the same proto messages being defined in
+// multiple files in the same binary.
+
+syntax = "proto3";
+
+package envoy.service.discovery.v2;
+
+import "src/proto/grpc/testing/xds/eds_for_test.proto";
+
+// [#not-implemented-hide:] Discovery services for endpoints, clusters, routes,
+// and listeners are retained in the package `envoy.api.v2` for backwards
+// compatibility with existing management servers. New development in discovery
+// services should proceed in the package `envoy.service.discovery.v2`.
+
+// See https://github.com/lyft/envoy-api#apis for a description of the role of
+// ADS and how it is intended to be used by a management server. ADS requests
+// have the same structure as their singleton xDS counterparts, but can
+// multiplex many resource types on a single stream. The type_url in the
+// DiscoveryRequest/DiscoveryResponse provides sufficient information to recover
+// the multiplexed singleton APIs at the Envoy instance and management server.
+service AggregatedDiscoveryService {
+ // This is a gRPC-only API.
+ rpc StreamAggregatedResources(stream envoy.api.v2.DiscoveryRequest)
+ returns (stream envoy.api.v2.DiscoveryResponse) {
+ }
+
+ // Commented out so that we don't have to copy the request/response protos.
+// rpc DeltaAggregatedResources(stream api.v2.DeltaDiscoveryRequest)
+// returns (stream api.v2.DeltaDiscoveryResponse) {
+// }
+}
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/xds/eds_for_test.proto b/contrib/libs/grpc/src/proto/grpc/testing/xds/eds_for_test.proto
index b095996e4b..3b8ce66f0e 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/xds/eds_for_test.proto
+++ b/contrib/libs/grpc/src/proto/grpc/testing/xds/eds_for_test.proto
@@ -1,108 +1,108 @@
-// Copyright 2019 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// This file contains the xds protocol and its dependency. It can't be used by
-// the gRPC library; otherwise there can be duplicate definition problems if
-// users depend on both gRPC and Envoy. It can only be used by gRPC tests.
-//
-// TODO(juanlishen): This file is a hack to avoid a problem we're
-// currently having where we can't depend on a proto file in an external
-// repo due to bazel limitations. Once that's fixed, this should be
-// removed. Until this, it should be used in the gRPC tests only, or else it
-// will cause a conflict due to the same proto messages being defined in
-// multiple files in the same binary.
-
-syntax = "proto3";
-
-package envoy.api.v2;
-
-import "google/protobuf/any.proto";
+// Copyright 2019 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file contains the xds protocol and its dependency. It can't be used by
+// the gRPC library; otherwise there can be duplicate definition problems if
+// users depend on both gRPC and Envoy. It can only be used by gRPC tests.
+//
+// TODO(juanlishen): This file is a hack to avoid a problem we're
+// currently having where we can't depend on a proto file in an external
+// repo due to bazel limitations. Once that's fixed, this should be
+// removed. Until this, it should be used in the gRPC tests only, or else it
+// will cause a conflict due to the same proto messages being defined in
+// multiple files in the same binary.
+
+syntax = "proto3";
+
+package envoy.api.v2;
+
+import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/wrappers.proto";
-
-message Status {
- // The status code, which should be an enum value of [google.rpc.Code][].
- int32 code = 1;
-
- // A developer-facing error message, which should be in English. Any
- // user-facing error message should be localized and sent in the
- // [google.rpc.Status.details][] field, or localized by the client.
- string message = 2;
-
- // A list of messages that carry the error details. There is a common set of
- // message types for APIs to use.
- repeated google.protobuf.Any details = 3;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-// 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.
- 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)
- // <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.
- string zone = 2;
-
- // When used for locality of upstream hosts, this field further splits zone
- // into smaller chunks of sub-zones so they can be load balanced
- // independently.
- string sub_zone = 3;
-}
-
-// Identifies a specific Envoy instance. The node identifier is presented to the
-// management server, which may use this identifier to distinguish per Envoy
-// configuration for serving.
-message Node {
- // An opaque node identifier for the Envoy node. This also provides the local
- // service node name. It should be set if any of the following features are
- // used: :ref:`statsd <arch_overview_statistics>`, :ref:`CDS
- // <config_cluster_manager_cds>`, and :ref:`HTTP tracing
- // <arch_overview_tracing>`, either in this message or via
- // :option:`--service-node`.
- string id = 1;
-
- // 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>`,
- // :ref:`runtime override directory <envoy_api_msg_config.bootstrap.v2.Runtime>`,
- // :ref:`user agent addition
- // <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.add_user_agent>`,
- // :ref:`HTTP global rate limiting <config_http_filters_rate_limit>`,
- // :ref:`CDS <config_cluster_manager_cds>`, and :ref:`HTTP tracing
- // <arch_overview_tracing>`, either in this message or via
- // :option:`--service-cluster`.
- string cluster = 2;
-
- // Opaque metadata extending the node identifier. Envoy will pass this
- // directly to the management server.
+
+message Status {
+ // The status code, which should be an enum value of [google.rpc.Code][].
+ int32 code = 1;
+
+ // A developer-facing error message, which should be in English. Any
+ // user-facing error message should be localized and sent in the
+ // [google.rpc.Status.details][] field, or localized by the client.
+ string message = 2;
+
+ // A list of messages that carry the error details. There is a common set of
+ // message types for APIs to use.
+ repeated google.protobuf.Any details = 3;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// 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.
+ 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)
+ // <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.
+ string zone = 2;
+
+ // When used for locality of upstream hosts, this field further splits zone
+ // into smaller chunks of sub-zones so they can be load balanced
+ // independently.
+ string sub_zone = 3;
+}
+
+// Identifies a specific Envoy instance. The node identifier is presented to the
+// management server, which may use this identifier to distinguish per Envoy
+// configuration for serving.
+message Node {
+ // An opaque node identifier for the Envoy node. This also provides the local
+ // service node name. It should be set if any of the following features are
+ // used: :ref:`statsd <arch_overview_statistics>`, :ref:`CDS
+ // <config_cluster_manager_cds>`, and :ref:`HTTP tracing
+ // <arch_overview_tracing>`, either in this message or via
+ // :option:`--service-node`.
+ string id = 1;
+
+ // 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>`,
+ // :ref:`runtime override directory <envoy_api_msg_config.bootstrap.v2.Runtime>`,
+ // :ref:`user agent addition
+ // <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.add_user_agent>`,
+ // :ref:`HTTP global rate limiting <config_http_filters_rate_limit>`,
+ // :ref:`CDS <config_cluster_manager_cds>`, and :ref:`HTTP tracing
+ // <arch_overview_tracing>`, either in this message or via
+ // :option:`--service-cluster`.
+ string cluster = 2;
+
+ // Opaque metadata extending the node identifier. Envoy will pass this
+ // directly to the management server.
google.protobuf.Struct metadata = 3;
-
- // Locality specifying where the Envoy instance is running.
- Locality locality = 4;
-
- // This is motivated by informing a management server during canary which
- // version of Envoy is being tested in a heterogeneous fleet. This will be set
- // by Envoy in management server RPCs.
+
+ // Locality specifying where the Envoy instance is running.
+ Locality locality = 4;
+
+ // This is motivated by informing a management server during canary which
+ // version of Envoy is being tested in a heterogeneous fleet. This will be set
+ // by Envoy in management server RPCs.
string build_version = 5 [deprecated = true];
// Free-form string that identifies the entity requesting config.
@@ -121,397 +121,397 @@ message Node {
// See :ref:`the list of features <client_features>` that xDS client may
// support.
repeated string client_features = 10;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-// A DiscoveryRequest requests a set of versioned resources of the same type for
-// a given Envoy node on some API.
-message DiscoveryRequest {
- // The version_info provided in the request messages will be the version_info
- // received with the most recent successfully processed response or empty on
- // the first request. It is expected that no new request is sent after a
- // response is received until the Envoy instance is ready to ACK/NACK the new
- // configuration. ACK/NACK takes place by returning the new API config version
- // as applied or the previous API config version respectively. Each type_url
- // (see below) has an independent version associated with it.
- string version_info = 1;
-
- // The node making the request.
- Node node = 2;
-
- // List of resources to subscribe to, e.g. list of cluster names or a route
- // configuration name. If this is empty, all resources for the API are
- // returned. LDS/CDS expect empty resource_names, since this is global
- // discovery for the Envoy instance. The LDS and CDS responses will then imply
- // a number of resources that need to be fetched via EDS/RDS, which will be
- // explicitly enumerated in resource_names.
- repeated string resource_names = 3;
-
- // Type of the resource that is being requested, e.g.
- // "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;
-
- // nonce corresponding to DiscoveryResponse being ACK/NACKed. See above
- // discussion on version_info and the DiscoveryResponse nonce comment. This
- // may be empty if no nonce is available, e.g. at startup or for non-stream
- // xDS implementations.
- 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.
- Status error_detail = 6;
-}
-
-message DiscoveryResponse {
- // The version of the response data.
- string version_info = 1;
-
- // The response resources. These resources are typed and depend on the API being called.
- repeated google.protobuf.Any resources = 2;
-
- // [#not-implemented-hide:]
- // Canary is used to support two Envoy command line flags:
- //
- // * --terminate-on-canary-transition-failure. When set, Envoy is able to
- // terminate if it detects that configuration is stuck at canary. Consider
- // this example sequence of updates:
- // - Management server applies a canary config successfully.
- // - Management server rolls back to a production config.
- // - Envoy rejects the new production config.
- // Since there is no sensible way to continue receiving configuration
- // updates, Envoy will then terminate and apply production config from a
- // clean slate.
- // * --dry-run-canary. When set, a canary response will never be applied, only
- // validated via a dry run.
- bool canary = 3;
-
- // Type URL for resources. This must be consistent with the type_url in the
- // Any messages for resources if resources is non-empty. This effectively
- // identifies the xDS API when muxing over ADS.
- string type_url = 4;
-
- // For gRPC based subscriptions, the nonce provides a way to explicitly ack a
- // specific DiscoveryResponse in a following DiscoveryRequest. Additional
- // messages may have been sent by Envoy to the management server for the
- // previous version on the stream prior to this DiscoveryResponse, that were
- // unprocessed at response send time. The nonce allows the management server
- // to ignore any further DiscoveryRequests for the previous version until a
- // DiscoveryRequest bearing the nonce. The nonce is optional and is not
- // required for non-stream based xDS implementations.
- string nonce = 5;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-message Pipe {
- // Unix Domain Socket path. On Linux, paths starting with '@' will use the
- // abstract namespace. The starting '@' is replaced by a null byte by Envoy.
- // Paths starting with '@' will result in an error in environments other than
- // Linux.
- string path = 1;
-}
-
-message SocketAddress {
- enum Protocol {
- TCP = 0;
- // [#not-implemented-hide:]
- UDP = 1;
- }
- Protocol protocol = 1;
- // The address for this socket. :ref:`Listeners <config_listeners>` will bind
- // 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
- // controls the source address of outbound connections. For :ref:`clusters
- // <envoy_api_msg_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>`.
- string address = 2;
- oneof port_specifier {
- uint32 port_value = 3;
- // This is only valid if :ref:`resolver_name
- // <envoy_api_field_core.SocketAddress.resolver_name>` is specified below and the
- // named resolver is capable of named port resolution.
- string named_port = 4;
- }
- // The name of the resolver. This must have been registered with Envoy. If this is
- // empty, a context dependent default applies. If address is a hostname this
- // should be set for resolution other than DNS. If the address is a concrete
- // IP address, no resolution will occur.
- string resolver_name = 5;
-
- // When binding to an IPv6 address above, this enables `IPv4 compatibity
- // <https://tools.ietf.org/html/rfc3493#page-11>`_. Binding to ``::`` will
- // allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
- // IPv6 space as ``::FFFF:<IPv4-address>``.
- bool ipv4_compat = 6;
-}
-
-// Addresses specify either a logical or physical address and port, which are
-// used to tell Envoy where to bind/listen, connect to upstream and find
-// management servers.
-message Address {
- oneof address {
-
- SocketAddress socket_address = 1;
- Pipe pipe = 2;
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-message Metadata {
- // Key is the reverse DNS filter name, e.g. com.acme.widget. The envoy.*
- // namespace is reserved for Envoy's built-in filters.
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// A DiscoveryRequest requests a set of versioned resources of the same type for
+// a given Envoy node on some API.
+message DiscoveryRequest {
+ // The version_info provided in the request messages will be the version_info
+ // received with the most recent successfully processed response or empty on
+ // the first request. It is expected that no new request is sent after a
+ // response is received until the Envoy instance is ready to ACK/NACK the new
+ // configuration. ACK/NACK takes place by returning the new API config version
+ // as applied or the previous API config version respectively. Each type_url
+ // (see below) has an independent version associated with it.
+ string version_info = 1;
+
+ // The node making the request.
+ Node node = 2;
+
+ // List of resources to subscribe to, e.g. list of cluster names or a route
+ // configuration name. If this is empty, all resources for the API are
+ // returned. LDS/CDS expect empty resource_names, since this is global
+ // discovery for the Envoy instance. The LDS and CDS responses will then imply
+ // a number of resources that need to be fetched via EDS/RDS, which will be
+ // explicitly enumerated in resource_names.
+ repeated string resource_names = 3;
+
+ // Type of the resource that is being requested, e.g.
+ // "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;
+
+ // nonce corresponding to DiscoveryResponse being ACK/NACKed. See above
+ // discussion on version_info and the DiscoveryResponse nonce comment. This
+ // may be empty if no nonce is available, e.g. at startup or for non-stream
+ // xDS implementations.
+ 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.
+ Status error_detail = 6;
+}
+
+message DiscoveryResponse {
+ // The version of the response data.
+ string version_info = 1;
+
+ // The response resources. These resources are typed and depend on the API being called.
+ repeated google.protobuf.Any resources = 2;
+
+ // [#not-implemented-hide:]
+ // Canary is used to support two Envoy command line flags:
+ //
+ // * --terminate-on-canary-transition-failure. When set, Envoy is able to
+ // terminate if it detects that configuration is stuck at canary. Consider
+ // this example sequence of updates:
+ // - Management server applies a canary config successfully.
+ // - Management server rolls back to a production config.
+ // - Envoy rejects the new production config.
+ // Since there is no sensible way to continue receiving configuration
+ // updates, Envoy will then terminate and apply production config from a
+ // clean slate.
+ // * --dry-run-canary. When set, a canary response will never be applied, only
+ // validated via a dry run.
+ bool canary = 3;
+
+ // Type URL for resources. This must be consistent with the type_url in the
+ // Any messages for resources if resources is non-empty. This effectively
+ // identifies the xDS API when muxing over ADS.
+ string type_url = 4;
+
+ // For gRPC based subscriptions, the nonce provides a way to explicitly ack a
+ // specific DiscoveryResponse in a following DiscoveryRequest. Additional
+ // messages may have been sent by Envoy to the management server for the
+ // previous version on the stream prior to this DiscoveryResponse, that were
+ // unprocessed at response send time. The nonce allows the management server
+ // to ignore any further DiscoveryRequests for the previous version until a
+ // DiscoveryRequest bearing the nonce. The nonce is optional and is not
+ // required for non-stream based xDS implementations.
+ string nonce = 5;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+message Pipe {
+ // Unix Domain Socket path. On Linux, paths starting with '@' will use the
+ // abstract namespace. The starting '@' is replaced by a null byte by Envoy.
+ // Paths starting with '@' will result in an error in environments other than
+ // Linux.
+ string path = 1;
+}
+
+message SocketAddress {
+ enum Protocol {
+ TCP = 0;
+ // [#not-implemented-hide:]
+ UDP = 1;
+ }
+ Protocol protocol = 1;
+ // The address for this socket. :ref:`Listeners <config_listeners>` will bind
+ // 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
+ // controls the source address of outbound connections. For :ref:`clusters
+ // <envoy_api_msg_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>`.
+ string address = 2;
+ oneof port_specifier {
+ uint32 port_value = 3;
+ // This is only valid if :ref:`resolver_name
+ // <envoy_api_field_core.SocketAddress.resolver_name>` is specified below and the
+ // named resolver is capable of named port resolution.
+ string named_port = 4;
+ }
+ // The name of the resolver. This must have been registered with Envoy. If this is
+ // empty, a context dependent default applies. If address is a hostname this
+ // should be set for resolution other than DNS. If the address is a concrete
+ // IP address, no resolution will occur.
+ string resolver_name = 5;
+
+ // When binding to an IPv6 address above, this enables `IPv4 compatibity
+ // <https://tools.ietf.org/html/rfc3493#page-11>`_. Binding to ``::`` will
+ // allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
+ // IPv6 space as ``::FFFF:<IPv4-address>``.
+ bool ipv4_compat = 6;
+}
+
+// Addresses specify either a logical or physical address and port, which are
+// used to tell Envoy where to bind/listen, connect to upstream and find
+// management servers.
+message Address {
+ oneof address {
+
+ SocketAddress socket_address = 1;
+ Pipe pipe = 2;
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+message Metadata {
+ // Key is the reverse DNS filter name, e.g. com.acme.widget. The envoy.*
+ // namespace is reserved for Envoy's built-in filters.
map<string, google.protobuf.Struct> filter_metadata = 1;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-// Endpoint health status.
-enum HealthStatus {
- // The health status is not known. This is interpreted by Envoy as *HEALTHY*.
- UNKNOWN = 0;
-
- // Healthy.
- HEALTHY = 1;
-
- // Unhealthy.
- UNHEALTHY = 2;
-
- // Connection draining in progress. E.g.,
- // `<https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/>`_
- // or
- // `<https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining>`_.
- // This is interpreted by Envoy as *UNHEALTHY*.
- DRAINING = 3;
-
- // Health check timed out. This is part of HDS and is interpreted by Envoy as
- // *UNHEALTHY*.
- TIMEOUT = 4;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-// Upstream host identifier.
-message Endpoint {
- // The upstream host address.
- //
- // .. attention::
- //
- // 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>`
- // in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
- // and will be resolved via DNS.
- Address address = 1;
-
- // The optional health check configuration.
- message HealthCheckConfig {
- // Optional alternative health check port value.
- //
- // By default the health check address port of an upstream host is the same
- // as the host's serving address port. This provides an alternative health
- // check port. Setting this with a non-zero value allows an upstream host
- // to have different health check address port.
- uint32 port_value = 1;
- }
-
- // The optional health check configuration is used as configuration for the
- // health checker to contact the health checked host.
- //
- // .. attention::
- //
- // This takes into effect only for upstream clusters with
- // :ref:`active health checking <arch_overview_health_checking>` enabled.
- HealthCheckConfig health_check_config = 2;
-}
-
-// An Endpoint that Envoy can route traffic to.
-message LbEndpoint {
- // Upstream host identifier
- Endpoint endpoint = 1;
-
- // Optional health status when known and supplied by EDS server.
- HealthStatus health_status = 2;
-
- // The endpoint metadata specifies values that may be used by the load
- // balancer to select endpoints in a cluster for a given request. The filter
- // 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
- // to subset the endpoints considered in cluster load balancing.
- Metadata metadata = 3;
-
- // The optional load balancing weight of the upstream host, in the range 1 -
- // 128. Envoy uses the load balancing weight in some of the built in load
- // balancers. The load balancing weight for an endpoint is divided by the sum
- // of the weights of all endpoints in the endpoint's locality to produce a
- // percentage of traffic for the endpoint. This percentage is then further
- // weighted by the endpoint's locality's load balancing weight from
- // LocalityLbEndpoints. If unspecified, each host is presumed to have equal
- // weight in a locality.
- //
- // .. attention::
- //
- // The limit of 128 is somewhat arbitrary, but is applied due to performance
- // concerns with the current implementation and can be removed when
- // `this issue <https://github.com/envoyproxy/envoy/issues/1285>`_ is fixed.
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// Endpoint health status.
+enum HealthStatus {
+ // The health status is not known. This is interpreted by Envoy as *HEALTHY*.
+ UNKNOWN = 0;
+
+ // Healthy.
+ HEALTHY = 1;
+
+ // Unhealthy.
+ UNHEALTHY = 2;
+
+ // Connection draining in progress. E.g.,
+ // `<https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/>`_
+ // or
+ // `<https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining>`_.
+ // This is interpreted by Envoy as *UNHEALTHY*.
+ DRAINING = 3;
+
+ // Health check timed out. This is part of HDS and is interpreted by Envoy as
+ // *UNHEALTHY*.
+ TIMEOUT = 4;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// Upstream host identifier.
+message Endpoint {
+ // The upstream host address.
+ //
+ // .. attention::
+ //
+ // 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>`
+ // in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
+ // and will be resolved via DNS.
+ Address address = 1;
+
+ // The optional health check configuration.
+ message HealthCheckConfig {
+ // Optional alternative health check port value.
+ //
+ // By default the health check address port of an upstream host is the same
+ // as the host's serving address port. This provides an alternative health
+ // check port. Setting this with a non-zero value allows an upstream host
+ // to have different health check address port.
+ uint32 port_value = 1;
+ }
+
+ // The optional health check configuration is used as configuration for the
+ // health checker to contact the health checked host.
+ //
+ // .. attention::
+ //
+ // This takes into effect only for upstream clusters with
+ // :ref:`active health checking <arch_overview_health_checking>` enabled.
+ HealthCheckConfig health_check_config = 2;
+}
+
+// An Endpoint that Envoy can route traffic to.
+message LbEndpoint {
+ // Upstream host identifier
+ Endpoint endpoint = 1;
+
+ // Optional health status when known and supplied by EDS server.
+ HealthStatus health_status = 2;
+
+ // The endpoint metadata specifies values that may be used by the load
+ // balancer to select endpoints in a cluster for a given request. The filter
+ // 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
+ // to subset the endpoints considered in cluster load balancing.
+ Metadata metadata = 3;
+
+ // The optional load balancing weight of the upstream host, in the range 1 -
+ // 128. Envoy uses the load balancing weight in some of the built in load
+ // balancers. The load balancing weight for an endpoint is divided by the sum
+ // of the weights of all endpoints in the endpoint's locality to produce a
+ // percentage of traffic for the endpoint. This percentage is then further
+ // weighted by the endpoint's locality's load balancing weight from
+ // LocalityLbEndpoints. If unspecified, each host is presumed to have equal
+ // weight in a locality.
+ //
+ // .. attention::
+ //
+ // The limit of 128 is somewhat arbitrary, but is applied due to performance
+ // concerns with the current implementation and can be removed when
+ // `this issue <https://github.com/envoyproxy/envoy/issues/1285>`_ is fixed.
google.protobuf.UInt32Value load_balancing_weight = 4;
-}
-
-// A group of endpoints belonging to a Locality.
-// One can have multiple LocalityLbEndpoints for a locality, but this is
-// generally only done if the different groups need to have different load
-// balancing weights or different priorities.
-message LocalityLbEndpoints {
- // Identifies location of where the upstream hosts run.
- Locality locality = 1;
-
- // The group of endpoints belonging to the locality specified.
- repeated LbEndpoint lb_endpoints = 2;
-
- // Optional: Per priority/region/zone/sub_zone weight - range 1-128. The load
- // balancing weight for a locality is divided by the sum of the weights of all
- // localities at the same priority level to produce the effective percentage
- // of traffic for the locality.
- //
- // Locality weights are only considered when :ref:`locality weighted load
- // balancing <arch_overview_load_balancing_locality_weighted_lb>` is
- // configured. These weights are ignored otherwise. If no weights are
- // specificed when locality weighted load balancing is enabled, the cluster is
- // assumed to have a weight of 1.
- //
- // .. attention::
- //
- // The limit of 128 is somewhat arbitrary, but is applied due to performance
- // concerns with the current implementation and can be removed when
- // `this issue <https://github.com/envoyproxy/envoy/issues/1285>`_ is fixed.
+}
+
+// A group of endpoints belonging to a Locality.
+// One can have multiple LocalityLbEndpoints for a locality, but this is
+// generally only done if the different groups need to have different load
+// balancing weights or different priorities.
+message LocalityLbEndpoints {
+ // Identifies location of where the upstream hosts run.
+ Locality locality = 1;
+
+ // The group of endpoints belonging to the locality specified.
+ repeated LbEndpoint lb_endpoints = 2;
+
+ // Optional: Per priority/region/zone/sub_zone weight - range 1-128. The load
+ // balancing weight for a locality is divided by the sum of the weights of all
+ // localities at the same priority level to produce the effective percentage
+ // of traffic for the locality.
+ //
+ // Locality weights are only considered when :ref:`locality weighted load
+ // balancing <arch_overview_load_balancing_locality_weighted_lb>` is
+ // configured. These weights are ignored otherwise. If no weights are
+ // specificed when locality weighted load balancing is enabled, the cluster is
+ // assumed to have a weight of 1.
+ //
+ // .. attention::
+ //
+ // The limit of 128 is somewhat arbitrary, but is applied due to performance
+ // concerns with the current implementation and can be removed when
+ // `this issue <https://github.com/envoyproxy/envoy/issues/1285>`_ is fixed.
google.protobuf.UInt32Value load_balancing_weight = 3;
-
- // Optional: the priority for this LocalityLbEndpoints. If unspecified this will
- // default to the highest priority (0).
- //
- // Under usual circumstances, Envoy will only select endpoints for the highest
- // priority (0). In the event all endpoints for a particular priority are
- // unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
- // next highest priority group.
- //
- // Priorities should range from 0 (highest) to N (lowest) without skipping.
- uint32 priority = 5;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-message FractionalPercent {
- // Specifies the numerator. Defaults to 0.
- uint32 numerator = 1;
-
- // Fraction percentages support several fixed denominator values.
- enum DenominatorType {
- // 100.
- //
- // **Example**: 1/100 = 1%.
- HUNDRED = 0;
-
- // 10,000.
- //
- // **Example**: 1/10000 = 0.01%.
- TEN_THOUSAND = 1;
-
- // 1,000,000.
- //
- // **Example**: 1/1000000 = 0.0001%.
- MILLION = 2;
- }
-
- // Specifies the denominator. If the denominator specified is less than the numerator, the final
- // fractional percentage is capped at 1 (100%).
- DenominatorType denominator = 2;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-// [#protodoc-title: EDS]
-// Endpoint discovery :ref:`architecture overview <arch_overview_service_discovery_types_eds>`
-service EndpointDiscoveryService {
- // The resource_names field in DiscoveryRequest specifies a list of clusters
- // to subscribe to updates for.
- rpc StreamEndpoints(stream DiscoveryRequest) returns (stream DiscoveryResponse) {
- }
-}
-
-// Each route from RDS will map to a single cluster or traffic split across
-// clusters using weights expressed in the RDS WeightedCluster.
-//
-// With EDS, each cluster is treated independently from a LB perspective, with
-// LB taking place between the Localities within a cluster and at a finer
-// granularity between the hosts within a locality. For a given cluster, the
-// effective weight of a host is its load_balancing_weight multiplied by the
-// load_balancing_weight of its Locality.
-message ClusterLoadAssignment {
- // Name of the cluster. This will be the :ref:`service_name
- // <envoy_api_field_Cluster.EdsClusterConfig.service_name>` value if specified
- // in the cluster :ref:`EdsClusterConfig
- // <envoy_api_msg_Cluster.EdsClusterConfig>`.
- string cluster_name = 1;
-
- // List of endpoints to load balance to.
- repeated LocalityLbEndpoints endpoints = 2;
-
- // Load balancing policy settings.
- message Policy {
- reserved 1;
-
- message DropOverload {
- // Identifier for the policy specifying the drop.
- string category = 1;
-
- // Percentage of traffic that should be dropped for the category.
- FractionalPercent drop_percentage = 2;
- }
- // Action to trim the overall incoming traffic to protect the upstream
- // hosts. This action allows protection in case the hosts are unable to
- // recover from an outage, or unable to autoscale or unable to handle
- // incoming traffic volume for any reason.
- //
- // At the client each category is applied one after the other to generate
- // the 'actual' drop percentage on all outgoing traffic. For example:
- //
- // .. code-block:: json
- //
- // { "drop_overloads": [
- // { "category": "throttle", "drop_percentage": 60 }
- // { "category": "lb", "drop_percentage": 50 }
- // ]}
- //
- // The actual drop percentages applied to the traffic at the clients will be
- // "throttle"_drop = 60%
- // "lb"_drop = 20% // 50% of the remaining 'actual' load, which is 40%.
- // actual_outgoing_load = 20% // remaining after applying all categories.
- repeated DropOverload drop_overloads = 2;
-
- // Priority levels and localities are considered overprovisioned with this
- // factor (in percentage). This means that we don't consider a priority
- // level or locality unhealthy until the percentage of healthy hosts
- // multiplied by the overprovisioning factor drops below 100.
- // With the default value 140(1.4), Envoy doesn't consider a priority level
- // or a locality unhealthy until their percentage of healthy hosts drops
- // below 72%.
- // Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>` and
- // :ref:`localities <arch_overview_load_balancing_locality_weighted_lb>`.
+
+ // Optional: the priority for this LocalityLbEndpoints. If unspecified this will
+ // default to the highest priority (0).
+ //
+ // Under usual circumstances, Envoy will only select endpoints for the highest
+ // priority (0). In the event all endpoints for a particular priority are
+ // unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
+ // next highest priority group.
+ //
+ // Priorities should range from 0 (highest) to N (lowest) without skipping.
+ uint32 priority = 5;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+message FractionalPercent {
+ // Specifies the numerator. Defaults to 0.
+ uint32 numerator = 1;
+
+ // Fraction percentages support several fixed denominator values.
+ enum DenominatorType {
+ // 100.
+ //
+ // **Example**: 1/100 = 1%.
+ HUNDRED = 0;
+
+ // 10,000.
+ //
+ // **Example**: 1/10000 = 0.01%.
+ TEN_THOUSAND = 1;
+
+ // 1,000,000.
+ //
+ // **Example**: 1/1000000 = 0.0001%.
+ MILLION = 2;
+ }
+
+ // Specifies the denominator. If the denominator specified is less than the numerator, the final
+ // fractional percentage is capped at 1 (100%).
+ DenominatorType denominator = 2;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+// [#protodoc-title: EDS]
+// Endpoint discovery :ref:`architecture overview <arch_overview_service_discovery_types_eds>`
+service EndpointDiscoveryService {
+ // The resource_names field in DiscoveryRequest specifies a list of clusters
+ // to subscribe to updates for.
+ rpc StreamEndpoints(stream DiscoveryRequest) returns (stream DiscoveryResponse) {
+ }
+}
+
+// Each route from RDS will map to a single cluster or traffic split across
+// clusters using weights expressed in the RDS WeightedCluster.
+//
+// With EDS, each cluster is treated independently from a LB perspective, with
+// LB taking place between the Localities within a cluster and at a finer
+// granularity between the hosts within a locality. For a given cluster, the
+// effective weight of a host is its load_balancing_weight multiplied by the
+// load_balancing_weight of its Locality.
+message ClusterLoadAssignment {
+ // Name of the cluster. This will be the :ref:`service_name
+ // <envoy_api_field_Cluster.EdsClusterConfig.service_name>` value if specified
+ // in the cluster :ref:`EdsClusterConfig
+ // <envoy_api_msg_Cluster.EdsClusterConfig>`.
+ string cluster_name = 1;
+
+ // List of endpoints to load balance to.
+ repeated LocalityLbEndpoints endpoints = 2;
+
+ // Load balancing policy settings.
+ message Policy {
+ reserved 1;
+
+ message DropOverload {
+ // Identifier for the policy specifying the drop.
+ string category = 1;
+
+ // Percentage of traffic that should be dropped for the category.
+ FractionalPercent drop_percentage = 2;
+ }
+ // Action to trim the overall incoming traffic to protect the upstream
+ // hosts. This action allows protection in case the hosts are unable to
+ // recover from an outage, or unable to autoscale or unable to handle
+ // incoming traffic volume for any reason.
+ //
+ // At the client each category is applied one after the other to generate
+ // the 'actual' drop percentage on all outgoing traffic. For example:
+ //
+ // .. code-block:: json
+ //
+ // { "drop_overloads": [
+ // { "category": "throttle", "drop_percentage": 60 }
+ // { "category": "lb", "drop_percentage": 50 }
+ // ]}
+ //
+ // The actual drop percentages applied to the traffic at the clients will be
+ // "throttle"_drop = 60%
+ // "lb"_drop = 20% // 50% of the remaining 'actual' load, which is 40%.
+ // actual_outgoing_load = 20% // remaining after applying all categories.
+ repeated DropOverload drop_overloads = 2;
+
+ // Priority levels and localities are considered overprovisioned with this
+ // factor (in percentage). This means that we don't consider a priority
+ // level or locality unhealthy until the percentage of healthy hosts
+ // multiplied by the overprovisioning factor drops below 100.
+ // With the default value 140(1.4), Envoy doesn't consider a priority level
+ // or a locality unhealthy until their percentage of healthy hosts drops
+ // below 72%.
+ // Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>` and
+ // :ref:`localities <arch_overview_load_balancing_locality_weighted_lb>`.
google.protobuf.UInt32Value overprovisioning_factor = 3;
- }
-
- // Load balancing policy settings.
- Policy policy = 4;
-}
+ }
+
+ // Load balancing policy settings.
+ Policy policy = 4;
+}
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/xds/lrs_for_test.proto b/contrib/libs/grpc/src/proto/grpc/testing/xds/lrs_for_test.proto
index 30913e3927..d46d5e2ccc 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/xds/lrs_for_test.proto
+++ b/contrib/libs/grpc/src/proto/grpc/testing/xds/lrs_for_test.proto
@@ -1,189 +1,189 @@
-// Copyright 2019 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// This file contains the eds protocol and its dependency.
-//
-// TODO(juanlishen): This file is a hack to avoid a problem we're
-// currently having where we can't depend on a proto file in an external
-// repo due to bazel limitations. Once that's fixed, this should be
-// removed. Until this, it should be used in the gRPC tests only, or else it
-// will cause a conflict due to the same proto messages being defined in
-// multiple files in the same binary.
-
-syntax = "proto3";
-
-package envoy.service.load_stats.v2;
-
-import "google/protobuf/duration.proto";
-import "src/proto/grpc/testing/xds/eds_for_test.proto";
-
-// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
-message EndpointLoadMetricStats {
- // Name of the metric; may be empty.
- string metric_name = 1;
-
- // Number of calls that finished and included this metric.
- uint64 num_requests_finished_with_metric = 2;
-
- // Sum of metric values across all calls that finished with this metric for
- // load_reporting_interval.
- double total_metric_value = 3;
-}
-
-message UpstreamLocalityStats {
- // Name of zone, region and optionally endpoint group these metrics were
- // collected from. Zone and region names could be empty if unknown.
- envoy.api.v2.Locality locality = 1;
-
- // The total number of requests successfully completed by the endpoints in the
- // locality.
- uint64 total_successful_requests = 2;
-
- // The total number of unfinished requests
- uint64 total_requests_in_progress = 3;
-
- // The total number of requests that failed due to errors at the endpoint,
- // aggregated over all endpoints in the locality.
- uint64 total_error_requests = 4;
-
- // The total number of requests that were issued by this Envoy since
- // the last report. This information is aggregated over all the
- // upstream endpoints in the locality.
- uint64 total_issued_requests = 8;
-
- // Stats for multi-dimensional load balancing.
- repeated EndpointLoadMetricStats load_metric_stats = 5;
-
-// // 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>`.
-// repeated UpstreamEndpointStats upstream_endpoint_stats = 7;
-
- // [#not-implemented-hide:] The priority of the endpoint group these metrics
- // were collected from.
- uint32 priority = 6;
-}
-
-// Per cluster load stats. Envoy reports these stats a management server in a
-// :ref:`LoadStatsRequest<envoy_api_msg_load_stats.LoadStatsRequest>`
-// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
-// Next ID: 7
-message ClusterStats {
- // The name of the cluster.
- string cluster_name = 1;
-
- // The eds_cluster_config service_name of the cluster.
- // It's possible that two clusters send the same service_name to EDS,
- // in that case, the management server is supposed to do aggregation on the load reports.
- string cluster_service_name = 6;
-
- // Need at least one.
- repeated UpstreamLocalityStats upstream_locality_stats = 2;
-
- // Cluster-level stats such as total_successful_requests may be computed by
- // summing upstream_locality_stats. In addition, below there are additional
- // cluster-wide stats.
- //
- // The total number of dropped requests. This covers requests
- // deliberately dropped by the drop_overload policy and circuit breaking.
- uint64 total_dropped_requests = 3;
-
- message DroppedRequests {
- // Identifier for the policy specifying the drop.
- string category = 1;
- // Total number of deliberately dropped requests for the category.
- uint64 dropped_count = 2;
- }
- // Information about deliberately dropped requests for each category specified
- // in the DropOverload policy.
- repeated DroppedRequests dropped_requests = 5;
-
- // Period over which the actual load report occurred. This will be guaranteed to include every
- // request reported. Due to system load and delays between the *LoadStatsRequest* sent from Envoy
- // and the *LoadStatsResponse* message sent from the management server, this may be longer than
- // the requested load reporting interval in the *LoadStatsResponse*.
- google.protobuf.Duration load_report_interval = 4;
-}
-
-// [#protodoc-title: Load reporting service]
-
-service LoadReportingService {
- // Advanced API to allow for multi-dimensional load balancing by remote
- // server. For receiving LB assignments, the steps are:
- // 1, The management server is configured with per cluster/zone/load metric
- // capacity configuration. The capacity configuration definition is
- // outside of the scope of this document.
- // 2. Envoy issues a standard {Stream,Fetch}Endpoints request for the clusters
- // to balance.
- //
- // Independently, Envoy will initiate a StreamLoadStats bidi stream with a
- // management server:
- // 1. Once a connection establishes, the management server publishes a
- // LoadStatsResponse for all clusters it is interested in learning load
- // stats about.
- // 2. For each cluster, Envoy load balances incoming traffic to upstream hosts
- // based on per-zone weights and/or per-instance weights (if specified)
- // based on intra-zone LbPolicy. This information comes from the above
- // {Stream,Fetch}Endpoints.
- // 3. When upstream hosts reply, they optionally add header <define header
- // name> with ASCII representation of EndpointLoadMetricStats.
- // 4. Envoy aggregates load reports over the period of time given to it in
- // LoadStatsResponse.load_reporting_interval. This includes aggregation
- // stats Envoy maintains by itself (total_requests, rpc_errors etc.) as
- // well as load metrics from upstream hosts.
- // 5. When the timer of load_reporting_interval expires, Envoy sends new
- // LoadStatsRequest filled with load reports for each cluster.
- // 6. The management server uses the load reports from all reported Envoys
- // from around the world, computes global assignment and prepares traffic
- // assignment destined for each zone Envoys are located in. Goto 2.
- rpc StreamLoadStats(stream LoadStatsRequest) returns (stream LoadStatsResponse) {
- }
-}
-
-// A load report Envoy sends to the management server.
-// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
-message LoadStatsRequest {
- // Node identifier for Envoy instance.
- envoy.api.v2.Node node = 1;
-
- // A list of load stats to report.
- repeated ClusterStats cluster_stats = 2;
-}
-
-// The management server sends envoy a LoadStatsResponse with all clusters it
-// is interested in learning load stats about.
-// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
-message LoadStatsResponse {
- // Clusters to report stats for.
+// Copyright 2019 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file contains the eds protocol and its dependency.
+//
+// TODO(juanlishen): This file is a hack to avoid a problem we're
+// currently having where we can't depend on a proto file in an external
+// repo due to bazel limitations. Once that's fixed, this should be
+// removed. Until this, it should be used in the gRPC tests only, or else it
+// will cause a conflict due to the same proto messages being defined in
+// multiple files in the same binary.
+
+syntax = "proto3";
+
+package envoy.service.load_stats.v2;
+
+import "google/protobuf/duration.proto";
+import "src/proto/grpc/testing/xds/eds_for_test.proto";
+
+// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
+message EndpointLoadMetricStats {
+ // Name of the metric; may be empty.
+ string metric_name = 1;
+
+ // Number of calls that finished and included this metric.
+ uint64 num_requests_finished_with_metric = 2;
+
+ // Sum of metric values across all calls that finished with this metric for
+ // load_reporting_interval.
+ double total_metric_value = 3;
+}
+
+message UpstreamLocalityStats {
+ // Name of zone, region and optionally endpoint group these metrics were
+ // collected from. Zone and region names could be empty if unknown.
+ envoy.api.v2.Locality locality = 1;
+
+ // The total number of requests successfully completed by the endpoints in the
+ // locality.
+ uint64 total_successful_requests = 2;
+
+ // The total number of unfinished requests
+ uint64 total_requests_in_progress = 3;
+
+ // The total number of requests that failed due to errors at the endpoint,
+ // aggregated over all endpoints in the locality.
+ uint64 total_error_requests = 4;
+
+ // The total number of requests that were issued by this Envoy since
+ // the last report. This information is aggregated over all the
+ // upstream endpoints in the locality.
+ uint64 total_issued_requests = 8;
+
+ // Stats for multi-dimensional load balancing.
+ repeated EndpointLoadMetricStats load_metric_stats = 5;
+
+// // 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>`.
+// repeated UpstreamEndpointStats upstream_endpoint_stats = 7;
+
+ // [#not-implemented-hide:] The priority of the endpoint group these metrics
+ // were collected from.
+ uint32 priority = 6;
+}
+
+// Per cluster load stats. Envoy reports these stats a management server in a
+// :ref:`LoadStatsRequest<envoy_api_msg_load_stats.LoadStatsRequest>`
+// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
+// Next ID: 7
+message ClusterStats {
+ // The name of the cluster.
+ string cluster_name = 1;
+
+ // The eds_cluster_config service_name of the cluster.
+ // It's possible that two clusters send the same service_name to EDS,
+ // in that case, the management server is supposed to do aggregation on the load reports.
+ string cluster_service_name = 6;
+
+ // Need at least one.
+ repeated UpstreamLocalityStats upstream_locality_stats = 2;
+
+ // Cluster-level stats such as total_successful_requests may be computed by
+ // summing upstream_locality_stats. In addition, below there are additional
+ // cluster-wide stats.
+ //
+ // The total number of dropped requests. This covers requests
+ // deliberately dropped by the drop_overload policy and circuit breaking.
+ uint64 total_dropped_requests = 3;
+
+ message DroppedRequests {
+ // Identifier for the policy specifying the drop.
+ string category = 1;
+ // Total number of deliberately dropped requests for the category.
+ uint64 dropped_count = 2;
+ }
+ // Information about deliberately dropped requests for each category specified
+ // in the DropOverload policy.
+ repeated DroppedRequests dropped_requests = 5;
+
+ // Period over which the actual load report occurred. This will be guaranteed to include every
+ // request reported. Due to system load and delays between the *LoadStatsRequest* sent from Envoy
+ // and the *LoadStatsResponse* message sent from the management server, this may be longer than
+ // the requested load reporting interval in the *LoadStatsResponse*.
+ google.protobuf.Duration load_report_interval = 4;
+}
+
+// [#protodoc-title: Load reporting service]
+
+service LoadReportingService {
+ // Advanced API to allow for multi-dimensional load balancing by remote
+ // server. For receiving LB assignments, the steps are:
+ // 1, The management server is configured with per cluster/zone/load metric
+ // capacity configuration. The capacity configuration definition is
+ // outside of the scope of this document.
+ // 2. Envoy issues a standard {Stream,Fetch}Endpoints request for the clusters
+ // to balance.
+ //
+ // Independently, Envoy will initiate a StreamLoadStats bidi stream with a
+ // management server:
+ // 1. Once a connection establishes, the management server publishes a
+ // LoadStatsResponse for all clusters it is interested in learning load
+ // stats about.
+ // 2. For each cluster, Envoy load balances incoming traffic to upstream hosts
+ // based on per-zone weights and/or per-instance weights (if specified)
+ // based on intra-zone LbPolicy. This information comes from the above
+ // {Stream,Fetch}Endpoints.
+ // 3. When upstream hosts reply, they optionally add header <define header
+ // name> with ASCII representation of EndpointLoadMetricStats.
+ // 4. Envoy aggregates load reports over the period of time given to it in
+ // LoadStatsResponse.load_reporting_interval. This includes aggregation
+ // stats Envoy maintains by itself (total_requests, rpc_errors etc.) as
+ // well as load metrics from upstream hosts.
+ // 5. When the timer of load_reporting_interval expires, Envoy sends new
+ // LoadStatsRequest filled with load reports for each cluster.
+ // 6. The management server uses the load reports from all reported Envoys
+ // from around the world, computes global assignment and prepares traffic
+ // assignment destined for each zone Envoys are located in. Goto 2.
+ rpc StreamLoadStats(stream LoadStatsRequest) returns (stream LoadStatsResponse) {
+ }
+}
+
+// A load report Envoy sends to the management server.
+// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
+message LoadStatsRequest {
+ // Node identifier for Envoy instance.
+ envoy.api.v2.Node node = 1;
+
+ // A list of load stats to report.
+ repeated ClusterStats cluster_stats = 2;
+}
+
+// The management server sends envoy a LoadStatsResponse with all clusters it
+// is interested in learning load stats about.
+// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
+message LoadStatsResponse {
+ // Clusters to report stats for.
// Not populated if *send_all_clusters* is true.
- repeated string clusters = 1;
-
+ repeated string clusters = 1;
+
// If true, the client should send all clusters it knows about.
// Only clients that advertise the "envoy.lrs.supports_send_all_clusters" capability in their
// :ref:`client_features<envoy_api_field_core.Node.client_features>` field will honor this field.
bool send_all_clusters = 4;
- // The minimum interval of time to collect stats over. This is only a minimum for two reasons:
- // 1. There may be some delay from when the timer fires until stats sampling occurs.
- // 2. For clusters that were already feature in the previous *LoadStatsResponse*, any traffic
- // that is observed in between the corresponding previous *LoadStatsRequest* and this
- // *LoadStatsResponse* will also be accumulated and billed to the cluster. This avoids a period
- // of inobservability that might otherwise exists between the messages. New clusters are not
- // subject to this consideration.
- google.protobuf.Duration load_reporting_interval = 2;
-
- // Set to *true* if the management server supports endpoint granularity
- // report.
- bool report_endpoint_granularity = 3;
-}
+ // The minimum interval of time to collect stats over. This is only a minimum for two reasons:
+ // 1. There may be some delay from when the timer fires until stats sampling occurs.
+ // 2. For clusters that were already feature in the previous *LoadStatsResponse*, any traffic
+ // that is observed in between the corresponding previous *LoadStatsRequest* and this
+ // *LoadStatsResponse* will also be accumulated and billed to the cluster. This avoids a period
+ // of inobservability that might otherwise exists between the messages. New clusters are not
+ // subject to this consideration.
+ google.protobuf.Duration load_reporting_interval = 2;
+
+ // Set to *true* if the management server supports endpoint granularity
+ // report.
+ bool report_endpoint_granularity = 3;
+}
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/xds/orca_load_report_for_test.proto b/contrib/libs/grpc/src/proto/grpc/testing/xds/orca_load_report_for_test.proto
index 8d062779ee..1feaedd6a4 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/xds/orca_load_report_for_test.proto
+++ b/contrib/libs/grpc/src/proto/grpc/testing/xds/orca_load_report_for_test.proto
@@ -1,58 +1,58 @@
-// Copyright 2019 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// This file contains a copy of the ORCA load reporting protos, with the
-// validation options stripped out to avoid the extra dependency on
-// protoc-gen-validate.
-//
-// TODO(juanlishen): This file is a hack to avoid a problem we're
-// currently having where we can't depend on a proto file in an external
-// repo due to bazel limitations. Once that's fixed, this should be
-// removed. Until this, it should be used in the gRPC tests only, or else it
-// will cause a conflict due to the same proto messages being defined in
-// multiple files in the same binary.
-
-syntax = "proto3";
-
-package udpa.data.orca.v1;
-
-option java_outer_classname = "OrcaLoadReportProto";
-option java_multiple_files = true;
-option java_package = "io.envoyproxy.udpa.data.orca.v1";
-option go_package = "v1";
-
-// See section `ORCA load report format` of the design document in
-// :ref:`https://github.com/envoyproxy/envoy/issues/6614`.
-
-message OrcaLoadReport {
- // CPU utilization expressed as a fraction of available CPU resources. This
- // should be derived from the latest sample or measurement.
- double cpu_utilization = 1;
-
- // Memory utilization expressed as a fraction of available memory
- // resources. This should be derived from the latest sample or measurement.
- double mem_utilization = 2;
-
- // Total RPS being served by an endpoint. This should cover all services that an endpoint is
- // responsible for.
- uint64 rps = 3;
-
- // Application specific requests costs. Each value is an absolute cost (e.g. 3487 bytes of
- // storage) associated with the request.
- map<string, double> request_cost = 4;
-
- // Resource utilization values. Each value is expressed as a fraction of total resources
- // available, derived from the latest sample or measurement.
- map<string, double> utilization = 5;
-}
+// Copyright 2019 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file contains a copy of the ORCA load reporting protos, with the
+// validation options stripped out to avoid the extra dependency on
+// protoc-gen-validate.
+//
+// TODO(juanlishen): This file is a hack to avoid a problem we're
+// currently having where we can't depend on a proto file in an external
+// repo due to bazel limitations. Once that's fixed, this should be
+// removed. Until this, it should be used in the gRPC tests only, or else it
+// will cause a conflict due to the same proto messages being defined in
+// multiple files in the same binary.
+
+syntax = "proto3";
+
+package udpa.data.orca.v1;
+
+option java_outer_classname = "OrcaLoadReportProto";
+option java_multiple_files = true;
+option java_package = "io.envoyproxy.udpa.data.orca.v1";
+option go_package = "v1";
+
+// See section `ORCA load report format` of the design document in
+// :ref:`https://github.com/envoyproxy/envoy/issues/6614`.
+
+message OrcaLoadReport {
+ // CPU utilization expressed as a fraction of available CPU resources. This
+ // should be derived from the latest sample or measurement.
+ double cpu_utilization = 1;
+
+ // Memory utilization expressed as a fraction of available memory
+ // resources. This should be derived from the latest sample or measurement.
+ double mem_utilization = 2;
+
+ // Total RPS being served by an endpoint. This should cover all services that an endpoint is
+ // responsible for.
+ uint64 rps = 3;
+
+ // Application specific requests costs. Each value is an absolute cost (e.g. 3487 bytes of
+ // storage) associated with the request.
+ map<string, double> request_cost = 4;
+
+ // Resource utilization values. Each value is expressed as a fraction of total resources
+ // available, derived from the latest sample or measurement.
+ map<string, double> utilization = 5;
+}
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/xds/ya.make b/contrib/libs/grpc/src/proto/grpc/testing/xds/ya.make
index 62bd4e2a7c..994ec6fa82 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/xds/ya.make
+++ b/contrib/libs/grpc/src/proto/grpc/testing/xds/ya.make
@@ -1,39 +1,39 @@
-PROTO_LIBRARY()
-
+PROTO_LIBRARY()
+
LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-OWNER(
- akastornov
- g:contrib
- g:cpp-contrib
-)
-
-EXCLUDE_TAGS(
+OWNER(
+ akastornov
+ g:contrib
+ g:cpp-contrib
+)
+
+EXCLUDE_TAGS(
GO_PROTO
- PY_PROTO
- PY3_PROTO
-)
-
+ PY_PROTO
+ PY3_PROTO
+)
+
PROTO_NAMESPACE(
GLOBAL
contrib/libs/grpc
)
-
-PEERDIR(
- contrib/libs/grpc/src/proto/grpc/testing
-)
-
-GRPC()
-
-SRCS(
- ads_for_test.proto
+
+PEERDIR(
+ contrib/libs/grpc/src/proto/grpc/testing
+)
+
+GRPC()
+
+SRCS(
+ ads_for_test.proto
cds_for_test.proto
- eds_for_test.proto
+ eds_for_test.proto
lds_rds_for_test.proto
- lrs_for_test.proto
- orca_load_report_for_test.proto
-)
-
-END()
+ lrs_for_test.proto
+ orca_load_report_for_test.proto
+)
+
+END()
diff --git a/contrib/libs/grpc/src/proto/grpc/testing/ya.make b/contrib/libs/grpc/src/proto/grpc/testing/ya.make
index ee7c496b0d..2704585a37 100644
--- a/contrib/libs/grpc/src/proto/grpc/testing/ya.make
+++ b/contrib/libs/grpc/src/proto/grpc/testing/ya.make
@@ -1,49 +1,49 @@
-PROTO_LIBRARY()
-
+PROTO_LIBRARY()
+
LICENSE(Apache-2.0)
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-OWNER(
- akastornov
- g:contrib
+OWNER(
+ akastornov
+ g:contrib
g:cpp-contrib
-)
-
-EXCLUDE_TAGS(
+)
+
+EXCLUDE_TAGS(
GO_PROTO
- PY_PROTO
- PY3_PROTO
-)
-
+ PY_PROTO
+ PY3_PROTO
+)
+
PROTO_NAMESPACE(
GLOBAL
contrib/libs/grpc
)
-
-PEERDIR(
- contrib/libs/grpc/src/proto/grpc/core
-)
-
-GRPC()
-
-SRCS(
- benchmark_service.proto
- compiler_test.proto
- control.proto
- echo.proto
- echo_messages.proto
- empty.proto
- empty_service.proto
- messages.proto
- metrics.proto
- payloads.proto
- proxy-service.proto
- report_qps_scenario_service.proto
- simple_messages.proto
- stats.proto
- test.proto
- worker_service.proto
-)
-
-END()
+
+PEERDIR(
+ contrib/libs/grpc/src/proto/grpc/core
+)
+
+GRPC()
+
+SRCS(
+ benchmark_service.proto
+ compiler_test.proto
+ control.proto
+ echo.proto
+ echo_messages.proto
+ empty.proto
+ empty_service.proto
+ messages.proto
+ metrics.proto
+ payloads.proto
+ proxy-service.proto
+ report_qps_scenario_service.proto
+ simple_messages.proto
+ stats.proto
+ test.proto
+ worker_service.proto
+)
+
+END()