aboutsummaryrefslogtreecommitdiff
path: root/src/proto/grpc/testing/xds/v3/base.proto
diff options
context:
space:
mode:
Diffstat (limited to 'src/proto/grpc/testing/xds/v3/base.proto')
-rw-r--r--src/proto/grpc/testing/xds/v3/base.proto40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/proto/grpc/testing/xds/v3/base.proto b/src/proto/grpc/testing/xds/v3/base.proto
index 33719f687c..fcf78419f5 100644
--- a/src/proto/grpc/testing/xds/v3/base.proto
+++ b/src/proto/grpc/testing/xds/v3/base.proto
@@ -129,3 +129,43 @@ message TransportSocket {
google.protobuf.Any typed_config = 3;
}
}
+
+// Metadata provides additional inputs to filters based on matched listeners,
+// filter chains, routes and endpoints. It is structured as a map, usually from
+// filter name (in reverse DNS format) to metadata specific to the filter. Metadata
+// key-values for a filter are merged as connection and request handling occurs,
+// with later values for the same key overriding earlier values.
+//
+// An example use of metadata is providing additional values to
+// http_connection_manager in the envoy.http_connection_manager.access_log
+// namespace.
+//
+// Another example use of metadata is to per service config info in cluster metadata, which may get
+// consumed by multiple filters.
+//
+// For load balancing, Metadata provides a means to subset cluster endpoints.
+// Endpoints have a Metadata object associated and routes contain a Metadata
+// object to match against. There are some well defined metadata used today for
+// this purpose:
+//
+// * ``{"envoy.lb": {"canary": <bool> }}`` This indicates the canary status of an
+// endpoint and is also used during header processing
+// (x-envoy-upstream-canary) and for stats purposes.
+// [#next-major-version: move to type/metadata/v2]
+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.
+ // If both ``filter_metadata`` and
+ // :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
+ // fields are present in the metadata with same keys,
+ // only ``typed_filter_metadata`` field will be parsed.
+ map<string, google.protobuf.Struct> filter_metadata = 1;
+
+ // Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
+ // namespace is reserved for Envoy's built-in filters.
+ // The value is encoded as google.protobuf.Any.
+ // If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
+ // and ``typed_filter_metadata`` fields are present in the metadata with same keys,
+ // only ``typed_filter_metadata`` field will be parsed.
+ map<string, google.protobuf.Any> typed_filter_metadata = 2;
+}