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