forked from envoyproxy/envoy
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into mpuncel/hedging-impl
* master: (35 commits) Revert "api: Add total_issued_requests to Upstream Locality and Endpoint Stats. (envoyproxy#6692)" (envoyproxy#6761) Add test for the SocketOptionFactory::buildLiteralOptions() method. (envoyproxy#6724) Add test of parsing weighted_cluster route configuration to improve test coverage. (envoyproxy#6711) test: reducing H2 test permutations, increasing coverage time (envoyproxy#6753) Support gRPC-JSON translate without the google.api.http option. (envoyproxy#6731) quiche: implement QuicEpollClock (envoyproxy#6745) http: rc details for main Envoy workflow (envoyproxy#6560) quiche: implement QuicSystemEventLoopImpl (envoyproxy#6723) http: tracking 100s from upstream in stats (envoyproxy#6746) coverage: run without deprecated option (envoyproxy#6752) quiche: Implement spdy_test_helpers_impl. (envoyproxy#6741) [test] convert listener test stubs to v2 API (envoyproxy#6735) api: Add total_issued_requests to Upstream Locality and Endpoint Stats. (envoyproxy#6692) quiche: Implement http2_reconstruct_object_impl.h. (envoyproxy#6717) build: patch protobuf for UBSAN issue. (envoyproxy#6721) router: scoped rds (2a): scoped routing configuration protos (envoyproxy#6675) tap: use move semantics for submitTrace (envoyproxy#6709) quiche: add epoll_server for testing (envoyproxy#6650) Increase timeout of the coverage test run to 3000 seconds as it is now bumping in the current 2000s limit causing coverage run to abort sometimes. (envoyproxy#6722) quiche: Update tarball to commit 43a1c0f10f2855c3cd142f500e8d19ac6d6f5a8c (envoyproxy#6718) ... Signed-off-by: Michael Puncel <[email protected]>
- Loading branch information
Showing
163 changed files
with
3,428 additions
and
1,568 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
syntax = "proto3"; | ||
|
||
package envoy.api.v2; | ||
|
||
option java_outer_classname = "SrdsProto"; | ||
option java_package = "io.envoyproxy.envoy.api.v2"; | ||
option java_multiple_files = true; | ||
option java_generic_services = true; | ||
|
||
import "envoy/api/v2/discovery.proto"; | ||
|
||
import "google/api/annotations.proto"; | ||
|
||
import "validate/validate.proto"; | ||
import "gogoproto/gogo.proto"; | ||
|
||
option (gogoproto.equal_all) = true; | ||
|
||
// [#protodoc-title: HTTP scoped routing configuration] | ||
// * Routing :ref:`architecture overview <arch_overview_http_routing>` | ||
// | ||
// .. attention:: | ||
// | ||
// The Scoped RDS API is not yet fully implemented and *should not* be enabled in | ||
// :ref:`envoy_api_msg_config.filter.network.http_connection_manager.v2.HttpConnectionManager`. | ||
// | ||
// TODO(AndresGuedez): Update :ref:`arch_overview_http_routing` with scoped routing overview and | ||
// configuration details. | ||
|
||
// The Scoped Routes Discovery Service (SRDS) API distributes | ||
// :ref:`ScopedRouteConfiguration<envoy_api_msg.ScopedRouteConfiguration>` resources. Each | ||
// ScopedRouteConfiguration resource represents a "routing scope" containing a mapping that allows | ||
// the HTTP connection manager to dynamically assign a routing table (specified via | ||
// a :ref:`RouteConfiguration<envoy_api_msg_RouteConfiguration>` message) to each HTTP request. | ||
// [#proto-status: experimental] | ||
service ScopedRoutesDiscoveryService { | ||
rpc StreamScopedRoutes(stream DiscoveryRequest) returns (stream DiscoveryResponse) { | ||
} | ||
|
||
rpc DeltaScopedRoutes(stream DeltaDiscoveryRequest) returns (stream DeltaDiscoveryResponse) { | ||
} | ||
|
||
rpc FetchScopedRoutes(DiscoveryRequest) returns (DiscoveryResponse) { | ||
option (google.api.http) = { | ||
post: "/v2/discovery:scoped-routes" | ||
body: "*" | ||
}; | ||
} | ||
} | ||
|
||
// Specifies a routing scope, which associates a | ||
// :ref:`Key<envoy_api_msg_ScopedRouteConfiguration.Key>` to a | ||
// :ref:`envoy_api_msg_RouteConfiguration` (identified by its resource name). | ||
// | ||
// The HTTP connection manager builds up a table consisting of these Key to RouteConfiguration | ||
// mappings, and looks up the RouteConfiguration to use per request according to the algorithm | ||
// specified in the | ||
// :ref:`scope_key_builder<envoy_api_field_config.filter.network.http_connection_manager.v2.ScopedRoutes.scope_key_builder>` | ||
// assigned to the HttpConnectionManager. | ||
// | ||
// For example, with the following configurations (in YAML): | ||
// | ||
// HttpConnectionManager config: | ||
// | ||
// .. code:: | ||
// | ||
// ... | ||
// scoped_routes: | ||
// name: foo-scoped-routes | ||
// scope_key_builder: | ||
// fragments: | ||
// - header_value_extractor: | ||
// name: X-Route-Selector | ||
// element_separator: , | ||
// element: | ||
// separator: = | ||
// key: vip | ||
// | ||
// ScopedRouteConfiguration resources (specified statically via | ||
// :ref:`scoped_route_configurations_list<envoy_api_field_config.filter.network.http_connection_manager.v2.ScopedRoutes.scoped_route_configurations_list>` | ||
// or obtained dynamically via SRDS): | ||
// | ||
// .. code:: | ||
// | ||
// (1) | ||
// name: route-scope1 | ||
// route_configuration_name: route-config1 | ||
// key: | ||
// fragments: | ||
// - string_key: 172.10.10.20 | ||
// | ||
// (2) | ||
// name: route-scope2 | ||
// route_configuration_name: route-config2 | ||
// key: | ||
// fragments: | ||
// - string_key: 172.20.20.30 | ||
// | ||
// A request from a client such as: | ||
// | ||
// .. code:: | ||
// | ||
// GET / HTTP/1.1 | ||
// Host: foo.com | ||
// X-Route-Selector: vip=172.10.10.20 | ||
// | ||
// would result in the routing table defined by the `route-config1` RouteConfiguration being | ||
// assigned to the HTTP request/stream. | ||
// | ||
// [#comment:next free field: 4] | ||
// [#proto-status: experimental] | ||
message ScopedRouteConfiguration { | ||
// The name assigned to the routing scope. | ||
string name = 1 [(validate.rules).string.min_bytes = 1]; | ||
|
||
// Specifies a key which is matched against the output of the | ||
// :ref:`scope_key_builder<envoy_api_field_config.filter.network.http_connection_manager.v2.ScopedRoutes.scope_key_builder>` | ||
// specified in the HttpConnectionManager. The matching is done per HTTP request and is dependent | ||
// on the order of the fragments contained in the Key. | ||
message Key { | ||
message Fragment { | ||
oneof type { | ||
option (validate.required) = true; | ||
|
||
// A string to match against. | ||
string string_key = 1; | ||
} | ||
} | ||
|
||
// The ordered set of fragments to match against. The order must match the fragments in the | ||
// corresponding | ||
// :ref:`scope_key_builder<envoy_api_field_config.filter.network.http_connection_manager.v2.ScopedRoutes.scope_key_builder>`. | ||
repeated Fragment fragments = 1 [(validate.rules).repeated .min_items = 1]; | ||
} | ||
|
||
// The resource name to use for a :ref:`envoy_api_msg_DiscoveryRequest` to an RDS server to | ||
// fetch the :ref:`envoy_api_msg_RouteConfiguration` associated with this scope. | ||
string route_configuration_name = 2 [(validate.rules).string.min_bytes = 1]; | ||
|
||
// The key to match against. | ||
Key key = 3 [(validate.rules).message.required = true]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.