api: introduce TypedExtensionConfig. (#11105)
A common wrapper for name/Any that should be used for all new extensions throughout the API. I've left a note that we need to revisit existing typed_config at the next major version as well, since that would be a breaking change. Signed-off-by: Harvey Tuch <htuch@google.com> Mirrored from https://github.com/envoyproxy/envoy @ b16981f8d4f4726d5f8d31b55603f893fbba5575master-ci-test
parent
acb13b6a4e
commit
43aafb99ee
2 changed files with 64 additions and 0 deletions
@ -0,0 +1,30 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.config.core.v3; |
||||||
|
|
||||||
|
import "google/protobuf/any.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "validate/validate.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.config.core.v3"; |
||||||
|
option java_outer_classname = "ExtensionProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||||
|
|
||||||
|
// [#protodoc-title: Extension configuration] |
||||||
|
|
||||||
|
// Message type for extension configuration. |
||||||
|
// [#next-major-version: revisit all existing typed_config that doesn't use this wrapper.]. |
||||||
|
message TypedExtensionConfig { |
||||||
|
// The name of an extension. This is not used to select the extension, instead |
||||||
|
// it serves the role of an opaque identifier. |
||||||
|
string name = 1 [(validate.rules).string = {min_len: 1}]; |
||||||
|
|
||||||
|
// The typed config for the extension. The type URL will be used to identify |
||||||
|
// the extension. In the case that the type URL is *udpa.type.v1.TypedStruct*, |
||||||
|
// the inner type URL of *TypedStruct* will be utilized. See the |
||||||
|
// :ref:`extension configuration overview |
||||||
|
// <config_overview_extension_configuration>` for further details. |
||||||
|
google.protobuf.Any typed_config = 2 [(validate.rules).any = {required: true}]; |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.config.core.v4alpha; |
||||||
|
|
||||||
|
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.config.core.v4alpha"; |
||||||
|
option java_outer_classname = "ExtensionProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||||
|
|
||||||
|
// [#protodoc-title: Extension configuration] |
||||||
|
|
||||||
|
// Message type for extension configuration. |
||||||
|
// [#next-major-version: revisit all existing typed_config that doesn't use this wrapper.]. |
||||||
|
message TypedExtensionConfig { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.config.core.v3.TypedExtensionConfig"; |
||||||
|
|
||||||
|
// The name of an extension. This is not used to select the extension, instead |
||||||
|
// it serves the role of an opaque identifier. |
||||||
|
string name = 1 [(validate.rules).string = {min_len: 1}]; |
||||||
|
|
||||||
|
// The typed config for the extension. The type URL will be used to identify |
||||||
|
// the extension. In the case that the type URL is *udpa.type.v1.TypedStruct*, |
||||||
|
// the inner type URL of *TypedStruct* will be utilized. See the |
||||||
|
// :ref:`extension configuration overview |
||||||
|
// <config_overview_extension_configuration>` for further details. |
||||||
|
google.protobuf.Any typed_config = 2 [(validate.rules).any = {required: true}]; |
||||||
|
} |
Loading…
Reference in new issue