API definitions for health check & outlier detection event services (#10407)
This PR introduces gRPC services interfaces for outlier detection and healthcheck events services. Risk Level: low Testing: n.a. Docs Changes: not yet Release Notes: not yet Relates to #8970 Signed-off-by: Alexey Baranov <me@kotiki.cc> Mirrored from https://github.com/envoyproxy/envoy @ 34fcdef99633947543070d5eadf32867e940694emaster-ci-test
parent
a8c19f4ba2
commit
508b7d4fb9
12 changed files with 241 additions and 2 deletions
@ -0,0 +1,26 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.api.v2.core; |
||||
|
||||
import "envoy/api/v2/core/grpc_service.proto"; |
||||
|
||||
import "udpa/annotations/migrate.proto"; |
||||
import "udpa/annotations/status.proto"; |
||||
import "validate/validate.proto"; |
||||
|
||||
option java_package = "io.envoyproxy.envoy.api.v2.core"; |
||||
option java_outer_classname = "EventServiceConfigProto"; |
||||
option java_multiple_files = true; |
||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3"; |
||||
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||
|
||||
// [#not-implemented-hide:] |
||||
// Configuration of the event reporting service endpoint. |
||||
message EventServiceConfig { |
||||
oneof config_source_specifier { |
||||
option (validate.required) = true; |
||||
|
||||
// Specifies the gRPC service that hosts the event reporting service. |
||||
GrpcService grpc_service = 1; |
||||
} |
||||
} |
@ -0,0 +1,28 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.config.core.v3; |
||||
|
||||
import "envoy/config/core/v3/grpc_service.proto"; |
||||
|
||||
import "udpa/annotations/status.proto"; |
||||
import "udpa/annotations/versioning.proto"; |
||||
import "validate/validate.proto"; |
||||
|
||||
option java_package = "io.envoyproxy.envoy.config.core.v3"; |
||||
option java_outer_classname = "EventServiceConfigProto"; |
||||
option java_multiple_files = true; |
||||
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||
|
||||
// [#not-implemented-hide:] |
||||
// Configuration of the event reporting service endpoint. |
||||
message EventServiceConfig { |
||||
option (udpa.annotations.versioning).previous_message_type = |
||||
"envoy.api.v2.core.EventServiceConfig"; |
||||
|
||||
oneof config_source_specifier { |
||||
option (validate.required) = true; |
||||
|
||||
// Specifies the gRPC service that hosts the event reporting service. |
||||
GrpcService grpc_service = 1; |
||||
} |
||||
} |
@ -0,0 +1,13 @@ |
||||
# DO NOT EDIT. This file is generated by tools/proto_sync.py. |
||||
|
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
has_services = True, |
||||
deps = [ |
||||
"//envoy/api/v2/core:pkg", |
||||
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||
], |
||||
) |
@ -0,0 +1,62 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.service.event_reporting.v2alpha; |
||||
|
||||
import "envoy/api/v2/core/base.proto"; |
||||
|
||||
import "google/protobuf/any.proto"; |
||||
|
||||
import "udpa/annotations/migrate.proto"; |
||||
import "udpa/annotations/status.proto"; |
||||
import "validate/validate.proto"; |
||||
|
||||
option java_package = "io.envoyproxy.envoy.service.event_reporting.v2alpha"; |
||||
option java_outer_classname = "EventReportingServiceProto"; |
||||
option java_multiple_files = true; |
||||
option java_generic_services = true; |
||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.event_reporting.v3"; |
||||
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||
|
||||
// [#protodoc-title: gRPC Event Reporting Service] |
||||
|
||||
// [#not-implemented-hide:] |
||||
// Service for streaming different types of events from Envoy to a server. The examples of |
||||
// such events may be health check or outlier detection events. |
||||
service EventReportingService { |
||||
// Envoy will connect and send StreamEventsRequest messages forever. |
||||
// The management server may send StreamEventsResponse to configure event stream. See below. |
||||
// This API is designed for high throughput with the expectation that it might be lossy. |
||||
rpc StreamEvents(stream StreamEventsRequest) returns (stream StreamEventsResponse) { |
||||
} |
||||
} |
||||
|
||||
// [#not-implemented-hide:] |
||||
// An events envoy sends to the management server. |
||||
message StreamEventsRequest { |
||||
message Identifier { |
||||
// The node sending the event messages over the stream. |
||||
api.v2.core.Node node = 1 [(validate.rules).message = {required: true}]; |
||||
} |
||||
|
||||
// Identifier data that will only be sent in the first message on the stream. This is effectively |
||||
// structured metadata and is a performance optimization. |
||||
Identifier identifier = 1; |
||||
|
||||
// Batch of events. When the stream is already active, it will be the events occurred |
||||
// since the last message had been sent. If the server receives unknown event type, it should |
||||
// silently ignore it. |
||||
// |
||||
// The following events are supported: |
||||
// |
||||
// * :ref:`HealthCheckEvent <envoy_api_msg_data.core.v2alpha.HealthCheckEvent>` |
||||
// * :ref:`OutlierDetectionEvent <envoy_api_msg_data.cluster.v2alpha.OutlierDetectionEvent>` |
||||
repeated google.protobuf.Any events = 2 [(validate.rules).repeated = {min_items: 1}]; |
||||
} |
||||
|
||||
// [#not-implemented-hide:] |
||||
// The management server may send envoy a StreamEventsResponse to tell which events the server |
||||
// is interested in. In future, with aggregated event reporting service, this message will |
||||
// contain, for example, clusters the envoy should send events for, or event types the server |
||||
// wants to process. |
||||
message StreamEventsResponse { |
||||
} |
@ -0,0 +1,14 @@ |
||||
# DO NOT EDIT. This file is generated by tools/proto_sync.py. |
||||
|
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
has_services = True, |
||||
deps = [ |
||||
"//envoy/config/core/v3:pkg", |
||||
"//envoy/service/event_reporting/v2alpha:pkg", |
||||
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||
], |
||||
) |
@ -0,0 +1,69 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.service.event_reporting.v3; |
||||
|
||||
import "envoy/config/core/v3/base.proto"; |
||||
|
||||
import "google/protobuf/any.proto"; |
||||
|
||||
import "udpa/annotations/status.proto"; |
||||
import "udpa/annotations/versioning.proto"; |
||||
import "validate/validate.proto"; |
||||
|
||||
option java_package = "io.envoyproxy.envoy.service.event_reporting.v3"; |
||||
option java_outer_classname = "EventReportingServiceProto"; |
||||
option java_multiple_files = true; |
||||
option java_generic_services = true; |
||||
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||
|
||||
// [#protodoc-title: gRPC Event Reporting Service] |
||||
|
||||
// [#not-implemented-hide:] |
||||
// Service for streaming different types of events from Envoy to a server. The examples of |
||||
// such events may be health check or outlier detection events. |
||||
service EventReportingService { |
||||
// Envoy will connect and send StreamEventsRequest messages forever. |
||||
// The management server may send StreamEventsResponse to configure event stream. See below. |
||||
// This API is designed for high throughput with the expectation that it might be lossy. |
||||
rpc StreamEvents(stream StreamEventsRequest) returns (stream StreamEventsResponse) { |
||||
} |
||||
} |
||||
|
||||
// [#not-implemented-hide:] |
||||
// An events envoy sends to the management server. |
||||
message StreamEventsRequest { |
||||
option (udpa.annotations.versioning).previous_message_type = |
||||
"envoy.service.event_reporting.v2alpha.StreamEventsRequest"; |
||||
|
||||
message Identifier { |
||||
option (udpa.annotations.versioning).previous_message_type = |
||||
"envoy.service.event_reporting.v2alpha.StreamEventsRequest.Identifier"; |
||||
|
||||
// The node sending the event messages over the stream. |
||||
config.core.v3.Node node = 1 [(validate.rules).message = {required: true}]; |
||||
} |
||||
|
||||
// Identifier data that will only be sent in the first message on the stream. This is effectively |
||||
// structured metadata and is a performance optimization. |
||||
Identifier identifier = 1; |
||||
|
||||
// Batch of events. When the stream is already active, it will be the events occurred |
||||
// since the last message had been sent. If the server receives unknown event type, it should |
||||
// silently ignore it. |
||||
// |
||||
// The following events are supported: |
||||
// |
||||
// * :ref:`HealthCheckEvent <envoy_api_msg_data.core.v3.HealthCheckEvent>` |
||||
// * :ref:`OutlierDetectionEvent <envoy_api_msg_data.cluster.v3.OutlierDetectionEvent>` |
||||
repeated google.protobuf.Any events = 2 [(validate.rules).repeated = {min_items: 1}]; |
||||
} |
||||
|
||||
// [#not-implemented-hide:] |
||||
// The management server may send envoy a StreamEventsResponse to tell which events the server |
||||
// is interested in. In future, with aggregated event reporting service, this message will |
||||
// contain, for example, clusters the envoy should send events for, or event types the server |
||||
// wants to process. |
||||
message StreamEventsResponse { |
||||
option (udpa.annotations.versioning).previous_message_type = |
||||
"envoy.service.event_reporting.v2alpha.StreamEventsResponse"; |
||||
} |
Loading…
Reference in new issue