Skip to content

Commit

Permalink
api: introduce TypedExtensionConfig. (#11105)
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
htuch authored May 7, 2020
1 parent a250a87 commit b16981f
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 0 deletions.
30 changes: 30 additions & 0 deletions api/envoy/config/core/v3/extension.proto
Original file line number Diff line number Diff line change
@@ -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}];
}
34 changes: 34 additions & 0 deletions api/envoy/config/core/v4alpha/extension.proto
Original file line number Diff line number Diff line change
@@ -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}];
}
1 change: 1 addition & 0 deletions docs/root/api-v3/common_messages/common_messages.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Common messages
:maxdepth: 2

../config/core/v3/base.proto
../config/core/v3/extension.proto
../config/core/v3/address.proto
../config/core/v3/backoff.proto
../config/core/v3/protocol.proto
Expand Down
30 changes: 30 additions & 0 deletions generated_api_shadow/envoy/config/core/v3/extension.proto

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

34 changes: 34 additions & 0 deletions generated_api_shadow/envoy/config/core/v4alpha/extension.proto

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit b16981f

Please sign in to comment.