New Features
- This change implements policy inheritance, specifically
in the context of RouteOptions, such that a child route
in a delegation chain may inherit RouteOptions from its
ancestors. Parents higher in the hierarchy are given
preference when merging the RouteOptions down the delegation
chain, i.e. for a tree A->B->C the RouteOptions of A are
prioritized first, then the RouteOptions of B augment that
of A without overriding the options in A, then the options
of C augment the merge of A and B without overriding fields.
Additionally, it does the following:
- Refactors the RouteOption query API to perform merging
and prioritization within the query. - Translator tests for the many scenarios of policy inheritance.
- Converts delegation translator test to a table-driven test.
- E2e tests to verify the inheritance and merge functionality. (https://github.com/solo-io/solo-projects/issues/6161)
Fixes
- This change updates the route sorting such that regex based matchers
are prioritized over prefix based matchers to be consistent with
Gloo gateway v1. The Gateway API states that the precedence of
regex matches is implementation specific, so this change conforms
to the API requirements.
Further, it avoids prioritizing regex based matchers based on their
lengths as this is rather abitrary. E.g., /a/b./. is longer than
/a/b./c but less specific, so it's relative order should be lower
in the sorted order but if prioritized based on length it would
appear before a more specific match. If there is a tie among
regex routes, the other precedence rules govern the relative
ordering among them. (https://github.com/solo-io/solo-projects/issues/6175)
- Refactor our TestInstallation to make it more re-usable with Portal E2E tests. (https://github.com/solo-io/solo-projects/issues/6029)