Skip to content

Commit

Permalink
refactor(xds): route builder (#7211)
Browse files Browse the repository at this point in the history
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
  • Loading branch information
mmorel-35 authored Oct 10, 2023
1 parent 8e0d91a commit 4c067a8
Show file tree
Hide file tree
Showing 19 changed files with 611 additions and 569 deletions.
22 changes: 9 additions & 13 deletions pkg/plugins/policies/meshhttproute/xds/configurer.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@ import (

envoy_route "github.com/envoyproxy/go-control-plane/envoy/config/route/v3"
envoy_type_matcher "github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3"
"google.golang.org/protobuf/types/known/anypb"

common_api "github.com/kumahq/kuma/api/common/v1alpha1"
api "github.com/kumahq/kuma/pkg/plugins/policies/meshhttproute/api/v1alpha1"
"github.com/kumahq/kuma/pkg/plugins/policies/meshhttproute/xds/filters"
"github.com/kumahq/kuma/pkg/plugins/runtime/gateway/route"
util_proto "github.com/kumahq/kuma/pkg/util/proto"
"github.com/kumahq/kuma/pkg/xds/cache/sha256"
envoy_common "github.com/kumahq/kuma/pkg/xds/envoy"
envoy_routes "github.com/kumahq/kuma/pkg/xds/envoy/routes"
)

type RoutesConfigurer struct {
Expand All @@ -32,17 +31,14 @@ func (c RoutesConfigurer) Configure(virtualHost *envoy_route.VirtualHost) error
}

for _, match := range matches {
rb := &route.RouteBuilder{}

rb.Configure(route.RouteMustConfigureFunc(func(envoyRoute *envoy_route.Route) {
// todo: create configurers for Match and Action
envoyRoute.Match = match.routeMatch
envoyRoute.Action = &envoy_route.Route_Route{
Route: c.routeAction(c.Split),
}
envoyRoute.TypedPerFilterConfig = map[string]*anypb.Any{}
envoyRoute.Name = h
}))
rb := envoy_routes.NewRouteBuilder(envoy_common.APIV3, h).
Configure(envoy_routes.RouteMustConfigureFunc(func(envoyRoute *envoy_route.Route) {
// todo: create configurers for Match and Action
envoyRoute.Match = match.routeMatch
envoyRoute.Action = &envoy_route.Route_Route{
Route: c.routeAction(c.Split),
}
}))

// We pass the information about whether this match was created from
// a prefix match along to the filters because it's no longer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ import (

api "github.com/kumahq/kuma/pkg/plugins/policies/meshloadbalancingstrategy/api/v1alpha1"
"github.com/kumahq/kuma/pkg/plugins/policies/meshloadbalancingstrategy/plugin/xds"
"github.com/kumahq/kuma/pkg/plugins/runtime/gateway/route"
"github.com/kumahq/kuma/pkg/test"
"github.com/kumahq/kuma/pkg/util/pointer"
util_proto "github.com/kumahq/kuma/pkg/util/proto"
envoy_common "github.com/kumahq/kuma/pkg/xds/envoy"
envoy_routes "github.com/kumahq/kuma/pkg/xds/envoy/routes"
)

var _ = Describe("HashPolicyConfigurer", func() {
Expand All @@ -25,11 +26,13 @@ var _ = Describe("HashPolicyConfigurer", func() {
configurer := &xds.HashPolicyConfigurer{
HashPolicies: given.hashPolicies,
}
rb, err := (&route.RouteBuilder{}).Configure(route.RouteMustConfigureFunc(func(envoyRoute *envoy_route.Route) {
envoyRoute.Action = &envoy_route.Route_Route{
Route: &envoy_route.RouteAction{},
}
})).Build()
rb, err := envoy_routes.NewRouteBuilder(envoy_common.APIV3, envoy_common.AnonymousResource).
Configure(
envoy_routes.RouteMustConfigureFunc(func(envoyRoute *envoy_route.Route) {
envoyRoute.Action = &envoy_route.Route_Route{
Route: &envoy_route.RouteAction{},
}
})).Build()
Expect(err).ToNot(HaveOccurred())

// when
Expand Down
16 changes: 8 additions & 8 deletions pkg/plugins/policies/meshratelimit/plugin/xds/configurer.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,26 +17,26 @@ import (
"github.com/kumahq/kuma/pkg/util/pointer"
"github.com/kumahq/kuma/pkg/util/proto"
listeners_v3 "github.com/kumahq/kuma/pkg/xds/envoy/listeners/v3"
rate_limit "github.com/kumahq/kuma/pkg/xds/envoy/routes/v3"
envoy_routes_v3 "github.com/kumahq/kuma/pkg/xds/envoy/routes/v3"
)

func RateLimitConfigurationFromPolicy(rl *api.LocalHTTP) *rate_limit.RateLimitConfiguration {
func RateLimitConfigurationFromPolicy(rl *api.LocalHTTP) *envoy_routes_v3.RateLimitConfiguration {
if pointer.Deref(rl.Disabled) || rl.RequestRate == nil {
return nil
}

onRateLimit := &rate_limit.OnRateLimit{}
onRateLimit := &envoy_routes_v3.OnRateLimit{}
if rl.OnRateLimit != nil {
for _, h := range pointer.Deref(rl.OnRateLimit.Headers).Add {
onRateLimit.Headers = append(onRateLimit.Headers, &rate_limit.Headers{
onRateLimit.Headers = append(onRateLimit.Headers, &envoy_routes_v3.Headers{
Key: string(h.Name),
Value: string(h.Value),
Append: true,
})
}
for _, header := range pointer.Deref(rl.OnRateLimit.Headers).Set {
for _, val := range strings.Split(string(header.Value), ",") {
onRateLimit.Headers = append(onRateLimit.Headers, &rate_limit.Headers{
onRateLimit.Headers = append(onRateLimit.Headers, &envoy_routes_v3.Headers{
Key: string(header.Name),
Value: val,
Append: false,
Expand All @@ -46,7 +46,7 @@ func RateLimitConfigurationFromPolicy(rl *api.LocalHTTP) *rate_limit.RateLimitCo
onRateLimit.Status = pointer.Deref(rl.OnRateLimit.Status)
}

return &rate_limit.RateLimitConfiguration{
return &envoy_routes_v3.RateLimitConfiguration{
Interval: rl.RequestRate.Interval.Duration,
Requests: rl.RequestRate.Num,
OnRateLimit: onRateLimit,
Expand Down Expand Up @@ -82,7 +82,7 @@ func (c *Configurer) ConfigureRoute(route *envoy_route.RouteConfiguration) error
return nil
}

rateLimit, err := rate_limit.NewRateLimitConfiguration(rlConf)
rateLimit, err := envoy_routes_v3.NewRateLimitConfiguration(rlConf)
if err != nil {
return err
}
Expand All @@ -104,7 +104,7 @@ func (c *Configurer) configureHttpListener(filterChain *envoy_listener.FilterCha
return nil
}

rateLimit, err := rate_limit.NewRateLimitConfiguration(rlConf)
rateLimit, err := envoy_routes_v3.NewRateLimitConfiguration(rlConf)
if err != nil {
return err
}
Expand Down
54 changes: 0 additions & 54 deletions pkg/plugins/runtime/gateway/route/builders.go

This file was deleted.

Loading

0 comments on commit 4c067a8

Please sign in to comment.