Skip to content

Commit 127122d

Browse files
committed
update gatewayRoute to contain spec.parentRefs instead of extracting that directly from each route during the resolve stage
1 parent cb4b6a2 commit 127122d

File tree

6 files changed

+33
-44
lines changed

6 files changed

+33
-44
lines changed

source/gateway.go

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434
coreinformers "k8s.io/client-go/informers/core/v1"
3535
cache "k8s.io/client-go/tools/cache"
3636
v1 "sigs.k8s.io/gateway-api/apis/v1"
37-
"sigs.k8s.io/gateway-api/apis/v1alpha2"
3837
v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1"
3938
gateway "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
4039
informers "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions"
@@ -55,6 +54,8 @@ type gatewayRoute interface {
5554
Metadata() *metav1.ObjectMeta
5655
// Hostnames returns the route's specified hostnames.
5756
Hostnames() []v1.Hostname
57+
// ParentRefs returns the route's parent references as defined in the route spec.
58+
ParentRefs() []v1.ParentReference
5859
// Protocol returns the route's protocol type.
5960
Protocol() v1.ProtocolType
6061
// RouteStatus returns the route's common status.
@@ -295,7 +296,7 @@ func (c *gatewayRouteResolver) resolve(rt gatewayRoute) (map[string]endpoint.Tar
295296
}
296297
hostTargets := make(map[string]endpoint.Targets)
297298

298-
routeParentRefs := getRouteParentRefs(rt)
299+
routeParentRefs := rt.ParentRefs()
299300

300301
if len(routeParentRefs) == 0 {
301302
log.Debugf("No parent references found for %s %s/%s", c.src.rtKind, rt.Metadata().Namespace, rt.Metadata().Name)
@@ -488,23 +489,6 @@ func gwRouteIsAccepted(conds []metav1.Condition) bool {
488489
}
489490
return false
490491
}
491-
func getRouteParentRefs(rt gatewayRoute) []v1.ParentReference {
492-
routeParentRefs := make([]v1.ParentReference, 0)
493-
494-
switch rt.Object().(type) {
495-
case *v1.HTTPRoute:
496-
routeParentRefs = rt.Object().(*v1.HTTPRoute).Spec.ParentRefs
497-
case *v1.GRPCRoute:
498-
routeParentRefs = rt.Object().(*v1.GRPCRoute).Spec.ParentRefs
499-
case *v1alpha2.UDPRoute:
500-
routeParentRefs = rt.Object().(*v1alpha2.UDPRoute).Spec.ParentRefs
501-
case *v1alpha2.TCPRoute:
502-
routeParentRefs = rt.Object().(*v1alpha2.TCPRoute).Spec.ParentRefs
503-
case *v1alpha2.TLSRoute:
504-
routeParentRefs = rt.Object().(*v1alpha2.TLSRoute).Spec.ParentRefs
505-
}
506-
return routeParentRefs
507-
}
508492

509493
func uniqueTargets(targets endpoint.Targets) endpoint.Targets {
510494
if len(targets) < 2 {

source/gateway_grpcroute.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,12 @@ func NewGatewayGRPCRouteSource(clients ClientGenerator, config *Config) (Source,
3333

3434
type gatewayGRPCRoute struct{ route v1.GRPCRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
3535

36-
func (rt *gatewayGRPCRoute) Object() kubeObject { return &rt.route }
37-
func (rt *gatewayGRPCRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
38-
func (rt *gatewayGRPCRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
39-
func (rt *gatewayGRPCRoute) Protocol() v1.ProtocolType { return v1.HTTPSProtocolType }
40-
func (rt *gatewayGRPCRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
36+
func (rt *gatewayGRPCRoute) Object() kubeObject { return &rt.route }
37+
func (rt *gatewayGRPCRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
38+
func (rt *gatewayGRPCRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
39+
func (rt *gatewayGRPCRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
40+
func (rt *gatewayGRPCRoute) Protocol() v1.ProtocolType { return v1.HTTPSProtocolType }
41+
func (rt *gatewayGRPCRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
4142

4243
type gatewayGRPCRouteInformer struct {
4344
informers_v1.GRPCRouteInformer

source/gateway_httproute.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@ func NewGatewayHTTPRouteSource(clients ClientGenerator, config *Config) (Source,
3434

3535
type gatewayHTTPRoute struct{ route v1.HTTPRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
3636

37-
func (rt *gatewayHTTPRoute) Object() kubeObject { return &rt.route }
38-
func (rt *gatewayHTTPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
39-
func (rt *gatewayHTTPRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
40-
func (rt *gatewayHTTPRoute) Protocol() v1.ProtocolType { return v1.HTTPProtocolType }
41-
func (rt *gatewayHTTPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
37+
func (rt *gatewayHTTPRoute) Object() kubeObject { return &rt.route }
38+
func (rt *gatewayHTTPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
39+
func (rt *gatewayHTTPRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
40+
func (rt *gatewayHTTPRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
41+
func (rt *gatewayHTTPRoute) Protocol() v1.ProtocolType { return v1.HTTPProtocolType }
42+
func (rt *gatewayHTTPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
4243

4344
type gatewayHTTPRouteInformer struct {
4445
informers_v1beta1.HTTPRouteInformer

source/gateway_tcproute.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@ func NewGatewayTCPRouteSource(clients ClientGenerator, config *Config) (Source,
3434

3535
type gatewayTCPRoute struct{ route v1alpha2.TCPRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
3636

37-
func (rt *gatewayTCPRoute) Object() kubeObject { return &rt.route }
38-
func (rt *gatewayTCPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
39-
func (rt *gatewayTCPRoute) Hostnames() []v1.Hostname { return nil }
40-
func (rt *gatewayTCPRoute) Protocol() v1.ProtocolType { return v1.TCPProtocolType }
41-
func (rt *gatewayTCPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
37+
func (rt *gatewayTCPRoute) Object() kubeObject { return &rt.route }
38+
func (rt *gatewayTCPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
39+
func (rt *gatewayTCPRoute) Hostnames() []v1.Hostname { return nil }
40+
func (rt *gatewayTCPRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
41+
func (rt *gatewayTCPRoute) Protocol() v1.ProtocolType { return v1.TCPProtocolType }
42+
func (rt *gatewayTCPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
4243

4344
type gatewayTCPRouteInformer struct {
4445
informers_v1a2.TCPRouteInformer

source/gateway_tlsroute.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@ func NewGatewayTLSRouteSource(clients ClientGenerator, config *Config) (Source,
3434

3535
type gatewayTLSRoute struct{ route v1alpha2.TLSRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
3636

37-
func (rt *gatewayTLSRoute) Object() kubeObject { return &rt.route }
38-
func (rt *gatewayTLSRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
39-
func (rt *gatewayTLSRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
40-
func (rt *gatewayTLSRoute) Protocol() v1.ProtocolType { return v1.TLSProtocolType }
41-
func (rt *gatewayTLSRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
37+
func (rt *gatewayTLSRoute) Object() kubeObject { return &rt.route }
38+
func (rt *gatewayTLSRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
39+
func (rt *gatewayTLSRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
40+
func (rt *gatewayTLSRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
41+
func (rt *gatewayTLSRoute) Protocol() v1.ProtocolType { return v1.TLSProtocolType }
42+
func (rt *gatewayTLSRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
4243

4344
type gatewayTLSRouteInformer struct {
4445
informers_v1a2.TLSRouteInformer

source/gateway_udproute.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@ func NewGatewayUDPRouteSource(clients ClientGenerator, config *Config) (Source,
3434

3535
type gatewayUDPRoute struct{ route v1alpha2.UDPRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
3636

37-
func (rt *gatewayUDPRoute) Object() kubeObject { return &rt.route }
38-
func (rt *gatewayUDPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
39-
func (rt *gatewayUDPRoute) Hostnames() []v1.Hostname { return nil }
40-
func (rt *gatewayUDPRoute) Protocol() v1.ProtocolType { return v1.UDPProtocolType }
41-
func (rt *gatewayUDPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
37+
func (rt *gatewayUDPRoute) Object() kubeObject { return &rt.route }
38+
func (rt *gatewayUDPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
39+
func (rt *gatewayUDPRoute) Hostnames() []v1.Hostname { return nil }
40+
func (rt *gatewayUDPRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
41+
func (rt *gatewayUDPRoute) Protocol() v1.ProtocolType { return v1.UDPProtocolType }
42+
func (rt *gatewayUDPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
4243

4344
type gatewayUDPRouteInformer struct {
4445
informers_v1a2.UDPRouteInformer

0 commit comments

Comments
 (0)