api: move generic matcher proto to its own package#17096
api: move generic matcher proto to its own package#17096htuch merged 26 commits intoenvoyproxy:mainfrom
Conversation
Signed-off-by: Snow Pettersen <snowp@lyft.com>
Signed-off-by: Snow Pettersen <snowp@lyft.com>
htuch
left a comment
There was a problem hiding this comment.
@snowp very exciting to see routing and sub-linear matchers coming together.
One question I have on this is whether we are breaking the circular dependency at the ideal place. The fact that generic matchers depend on HeaderMatcher in router seems wrong, ideally the header matcher would be somewhere generic. OTOH to fix this would require wasting time deprecating the existing location and moving the type for route table, which is very disruptive to existing users (almost everyone using Envoy and HTTP).
Is what you ahve here the least bad you can think of?
|
While you're at it, can you also update the following doc to indicate an exception for Thanks! |
Signed-off-by: Snow Pettersen <snowp@lyft.com>
Signed-off-by: Snow Pettersen <snowp@lyft.com>
I think this is the least bad in terms how many people this would be affected by it (only users of the new matching API). I'm also not sure if moving the header matching protos would help without a breaking API change: the protos currently referencing them are not in alpha, so even if we copied them we wouldn't be able to remove the build time dependency on the existing route matching protos since we need to keep the deprecated field around. With this change we can remove the old matching tree proto (immediately? or maybe following a deprecation cycle?) and continue to evolve the new proto without being held back by the API stability policy. |
Signed-off-by: Snow Pettersen <snowp@lyft.com>
|
Another thought: Since we're moving this any way, would it make sense to move it to the cncf/xds repo at this point? |
|
@markdroth I'm not opposed to that since I don't think it would be too much work, so happy to do that if we feel like it's the right call. @envoyproxy/api-shepherds thoughts? |
|
Also: given the exception we're now giving breaking changes to alpha protos, does it still make sense to provide the migration path that this PR offers at the moment? After looking at it some more, none of the affected protos are referenced by type url (only ExtensionWithMatch is, which isnt changed), so if we were to swap the type of the Thoughts? |
|
I think moving to Migration path makes sense if it helps out in your situation @snowp, otherwise I think it's fine to just make the breaking change in alpha. |
|
Looking into what it would take to migrate this to udpa there are two messages outside of the immediate field that would also need to be migrated: TypedExtensionConfig and matcher.v3.StringMatcher. We could add these to udpa as well, though that will involve duck typing more functions (like I've done in this PR via templating) to make them compatible with the identical protos in the Envoy repo vs the udpa repo. Thoughts? Not sure if this makes things more complicated than they have to be |
Signed-off-by: Snow Pettersen <snowp@lyft.com>
…matcher Signed-off-by: Snow Pettersen <snowp@lyft.com>
markdroth
left a comment
There was a problem hiding this comment.
I'd be fine with creating a copy of both TypedExtensionConfig and StringMatcher in the cncf/xds repo.
api/API_VERSIONING.md
Outdated
| may be granted for scenarios in which these stricter conditions model behavior already implied | ||
| structurally or by documentation. | ||
|
|
||
| * Messages marked as [#alpha:] are excluded from the backwards compatibility guarantees. |
There was a problem hiding this comment.
Please put this in the bulletted list below, which lists the other items that have an exception.
Signed-off-by: Snow Pettersen <snowp@lyft.com>
Signed-off-by: Snow Pettersen <snowp@lyft.com>
Signed-off-by: Snow Pettersen <snowp@lyft.com>
Signed-off-by: Snow Pettersen <snowp@lyft.com>
|
Looks like CI failures. |
Signed-off-by: Snow Pettersen <snowp@lyft.com>
Signed-off-by: Snow Pettersen <snowp@lyft.com>
Signed-off-by: Snow Pettersen <snowp@lyft.com>
Seems like the deps issue is resolved and there shouldn't be problems with deps without releases or targeting specific commits. /lgtm deps |
Signed-off-by: Snow Pettersen <snowp@lyft.com>
mathetake
left a comment
There was a problem hiding this comment.
LGTM for changes to SPIFFE validator extension
Signed-off-by: Snow Pettersen <snowp@lyft.com>
|
Finally passed CI on this on, ptal @htuch |
* main: (687 commits) ci: set build debug information from env (envoyproxy#17635) ext_authz: do the authentication even the direct response is set (envoyproxy#17546) upstream: various cleanups in connection pool code (envoyproxy#17644) owners: promote Dmitry to maintainer (envoyproxy#17642) quiche: client session supports creating bidi stream (envoyproxy#17543) Update HTTP/2 METADATA documentation. (envoyproxy#17637) ext_proc: Check validity of the :status header (envoyproxy#17596) test: add ASSERT indicating that gRPC stream has not been started yet (envoyproxy#17614) ensure that the inline cookie header will be folded correctly (envoyproxy#17560) cluster_manager: Make ClusterEntry a class instead of a struct (envoyproxy#17616) owners: make Raúl a Thrift senior extension maintainer (envoyproxy#17641) quiche: update QUICHE dependency (envoyproxy#17618) Delete mock for removed RouteEntry::perFilterConfig() method (envoyproxy#17623) REPO_LAYOUT.md: fix outdated link (envoyproxy#17626) hcm: forbid use of detection extensions with use_remote_addr/xff_num_trusted_hops (envoyproxy#17558) thrift proxy: add request shadowing support (envoyproxy#17544) ext_proc: Ensure that timer is always cancelled (envoyproxy#17569) Proposal: Add CachePolicy interface to allow for custom cache behavior (envoyproxy#17362) proto: fix verify to point at v3 only (envoyproxy#17622) api: move generic matcher proto to its own package (envoyproxy#17096) ...
* main: (687 commits) ci: set build debug information from env (envoyproxy#17635) ext_authz: do the authentication even the direct response is set (envoyproxy#17546) upstream: various cleanups in connection pool code (envoyproxy#17644) owners: promote Dmitry to maintainer (envoyproxy#17642) quiche: client session supports creating bidi stream (envoyproxy#17543) Update HTTP/2 METADATA documentation. (envoyproxy#17637) ext_proc: Check validity of the :status header (envoyproxy#17596) test: add ASSERT indicating that gRPC stream has not been started yet (envoyproxy#17614) ensure that the inline cookie header will be folded correctly (envoyproxy#17560) cluster_manager: Make ClusterEntry a class instead of a struct (envoyproxy#17616) owners: make Raúl a Thrift senior extension maintainer (envoyproxy#17641) quiche: update QUICHE dependency (envoyproxy#17618) Delete mock for removed RouteEntry::perFilterConfig() method (envoyproxy#17623) REPO_LAYOUT.md: fix outdated link (envoyproxy#17626) hcm: forbid use of detection extensions with use_remote_addr/xff_num_trusted_hops (envoyproxy#17558) thrift proxy: add request shadowing support (envoyproxy#17544) ext_proc: Ensure that timer is always cancelled (envoyproxy#17569) Proposal: Add CachePolicy interface to allow for custom cache behavior (envoyproxy#17362) proto: fix verify to point at v3 only (envoyproxy#17622) api: move generic matcher proto to its own package (envoyproxy#17096) ... Signed-off-by: Michael Puncel <mpuncel@squareup.com>
In order to unblock a dependency between route_components.proto and the matcher tree, move the alpha Matcher to its own package. To provide an upgrade path for users using this, we'll keep the old copy around for a single deprecation cycle. Risk Level: Low Testing: n/a Docs Changes: n/a Release Notes: Deprecation note Signed-off-by: Snow Pettersen <snowp@lyft.com>
In order to unblock a dependency between route_components.proto and the matcher tree, move the alpha Matcher to
its own package. To provide an upgrade path for users using this, we'll keep the old copy around for a single deprecation
cycle.
Signed-off-by: Snow Pettersen snowp@lyft.com
Risk Level: Low
Testing: n/a
Docs Changes: n/a
Release Notes: Deprecation note