mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 01:26:59 +02:00
update gatewayRoute to contain spec.parentRefs instead of extracting that directly from each route during the resolve stage
This commit is contained in:
parent
cb4b6a222e
commit
127122de09
@ -34,7 +34,6 @@ import (
|
||||
coreinformers "k8s.io/client-go/informers/core/v1"
|
||||
cache "k8s.io/client-go/tools/cache"
|
||||
v1 "sigs.k8s.io/gateway-api/apis/v1"
|
||||
"sigs.k8s.io/gateway-api/apis/v1alpha2"
|
||||
v1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1"
|
||||
gateway "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
|
||||
informers "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions"
|
||||
@ -55,6 +54,8 @@ type gatewayRoute interface {
|
||||
Metadata() *metav1.ObjectMeta
|
||||
// Hostnames returns the route's specified hostnames.
|
||||
Hostnames() []v1.Hostname
|
||||
// ParentRefs returns the route's parent references as defined in the route spec.
|
||||
ParentRefs() []v1.ParentReference
|
||||
// Protocol returns the route's protocol type.
|
||||
Protocol() v1.ProtocolType
|
||||
// RouteStatus returns the route's common status.
|
||||
@ -295,7 +296,7 @@ func (c *gatewayRouteResolver) resolve(rt gatewayRoute) (map[string]endpoint.Tar
|
||||
}
|
||||
hostTargets := make(map[string]endpoint.Targets)
|
||||
|
||||
routeParentRefs := getRouteParentRefs(rt)
|
||||
routeParentRefs := rt.ParentRefs()
|
||||
|
||||
if len(routeParentRefs) == 0 {
|
||||
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 {
|
||||
}
|
||||
return false
|
||||
}
|
||||
func getRouteParentRefs(rt gatewayRoute) []v1.ParentReference {
|
||||
routeParentRefs := make([]v1.ParentReference, 0)
|
||||
|
||||
switch rt.Object().(type) {
|
||||
case *v1.HTTPRoute:
|
||||
routeParentRefs = rt.Object().(*v1.HTTPRoute).Spec.ParentRefs
|
||||
case *v1.GRPCRoute:
|
||||
routeParentRefs = rt.Object().(*v1.GRPCRoute).Spec.ParentRefs
|
||||
case *v1alpha2.UDPRoute:
|
||||
routeParentRefs = rt.Object().(*v1alpha2.UDPRoute).Spec.ParentRefs
|
||||
case *v1alpha2.TCPRoute:
|
||||
routeParentRefs = rt.Object().(*v1alpha2.TCPRoute).Spec.ParentRefs
|
||||
case *v1alpha2.TLSRoute:
|
||||
routeParentRefs = rt.Object().(*v1alpha2.TLSRoute).Spec.ParentRefs
|
||||
}
|
||||
return routeParentRefs
|
||||
}
|
||||
|
||||
func uniqueTargets(targets endpoint.Targets) endpoint.Targets {
|
||||
if len(targets) < 2 {
|
||||
|
@ -33,11 +33,12 @@ func NewGatewayGRPCRouteSource(clients ClientGenerator, config *Config) (Source,
|
||||
|
||||
type gatewayGRPCRoute struct{ route v1.GRPCRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
|
||||
|
||||
func (rt *gatewayGRPCRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayGRPCRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayGRPCRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
|
||||
func (rt *gatewayGRPCRoute) Protocol() v1.ProtocolType { return v1.HTTPSProtocolType }
|
||||
func (rt *gatewayGRPCRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
func (rt *gatewayGRPCRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayGRPCRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayGRPCRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
|
||||
func (rt *gatewayGRPCRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
|
||||
func (rt *gatewayGRPCRoute) Protocol() v1.ProtocolType { return v1.HTTPSProtocolType }
|
||||
func (rt *gatewayGRPCRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
|
||||
type gatewayGRPCRouteInformer struct {
|
||||
informers_v1.GRPCRouteInformer
|
||||
|
@ -34,11 +34,12 @@ func NewGatewayHTTPRouteSource(clients ClientGenerator, config *Config) (Source,
|
||||
|
||||
type gatewayHTTPRoute struct{ route v1.HTTPRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
|
||||
|
||||
func (rt *gatewayHTTPRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayHTTPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayHTTPRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
|
||||
func (rt *gatewayHTTPRoute) Protocol() v1.ProtocolType { return v1.HTTPProtocolType }
|
||||
func (rt *gatewayHTTPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
func (rt *gatewayHTTPRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayHTTPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayHTTPRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
|
||||
func (rt *gatewayHTTPRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
|
||||
func (rt *gatewayHTTPRoute) Protocol() v1.ProtocolType { return v1.HTTPProtocolType }
|
||||
func (rt *gatewayHTTPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
|
||||
type gatewayHTTPRouteInformer struct {
|
||||
informers_v1beta1.HTTPRouteInformer
|
||||
|
@ -34,11 +34,12 @@ func NewGatewayTCPRouteSource(clients ClientGenerator, config *Config) (Source,
|
||||
|
||||
type gatewayTCPRoute struct{ route v1alpha2.TCPRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
|
||||
|
||||
func (rt *gatewayTCPRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayTCPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayTCPRoute) Hostnames() []v1.Hostname { return nil }
|
||||
func (rt *gatewayTCPRoute) Protocol() v1.ProtocolType { return v1.TCPProtocolType }
|
||||
func (rt *gatewayTCPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
func (rt *gatewayTCPRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayTCPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayTCPRoute) Hostnames() []v1.Hostname { return nil }
|
||||
func (rt *gatewayTCPRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
|
||||
func (rt *gatewayTCPRoute) Protocol() v1.ProtocolType { return v1.TCPProtocolType }
|
||||
func (rt *gatewayTCPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
|
||||
type gatewayTCPRouteInformer struct {
|
||||
informers_v1a2.TCPRouteInformer
|
||||
|
@ -34,11 +34,12 @@ func NewGatewayTLSRouteSource(clients ClientGenerator, config *Config) (Source,
|
||||
|
||||
type gatewayTLSRoute struct{ route v1alpha2.TLSRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
|
||||
|
||||
func (rt *gatewayTLSRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayTLSRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayTLSRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
|
||||
func (rt *gatewayTLSRoute) Protocol() v1.ProtocolType { return v1.TLSProtocolType }
|
||||
func (rt *gatewayTLSRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
func (rt *gatewayTLSRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayTLSRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayTLSRoute) Hostnames() []v1.Hostname { return rt.route.Spec.Hostnames }
|
||||
func (rt *gatewayTLSRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
|
||||
func (rt *gatewayTLSRoute) Protocol() v1.ProtocolType { return v1.TLSProtocolType }
|
||||
func (rt *gatewayTLSRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
|
||||
type gatewayTLSRouteInformer struct {
|
||||
informers_v1a2.TLSRouteInformer
|
||||
|
@ -34,11 +34,12 @@ func NewGatewayUDPRouteSource(clients ClientGenerator, config *Config) (Source,
|
||||
|
||||
type gatewayUDPRoute struct{ route v1alpha2.UDPRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
|
||||
|
||||
func (rt *gatewayUDPRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayUDPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayUDPRoute) Hostnames() []v1.Hostname { return nil }
|
||||
func (rt *gatewayUDPRoute) Protocol() v1.ProtocolType { return v1.UDPProtocolType }
|
||||
func (rt *gatewayUDPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
func (rt *gatewayUDPRoute) Object() kubeObject { return &rt.route }
|
||||
func (rt *gatewayUDPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
|
||||
func (rt *gatewayUDPRoute) Hostnames() []v1.Hostname { return nil }
|
||||
func (rt *gatewayUDPRoute) ParentRefs() []v1.ParentReference { return rt.route.Spec.ParentRefs }
|
||||
func (rt *gatewayUDPRoute) Protocol() v1.ProtocolType { return v1.UDPProtocolType }
|
||||
func (rt *gatewayUDPRoute) RouteStatus() v1.RouteStatus { return rt.route.Status.RouteStatus }
|
||||
|
||||
type gatewayUDPRouteInformer struct {
|
||||
informers_v1a2.UDPRouteInformer
|
||||
|
Loading…
Reference in New Issue
Block a user