gateway-api: patch route informer results with TypeMeta

This commit is contained in:
Andy Bursavich 2022-12-28 17:25:05 -08:00
parent be93cbe5a1
commit ad7e1509e0
4 changed files with 40 additions and 12 deletions

View File

@ -31,9 +31,9 @@ func NewGatewayHTTPRouteSource(clients ClientGenerator, config *Config) (Source,
}) })
} }
type gatewayHTTPRoute struct{ route *v1beta1.HTTPRoute } type gatewayHTTPRoute struct{ route v1beta1.HTTPRoute } // NOTE: Must update TypeMeta in List when changing the APIVersion.
func (rt *gatewayHTTPRoute) Object() kubeObject { return rt.route } func (rt *gatewayHTTPRoute) Object() kubeObject { return &rt.route }
func (rt *gatewayHTTPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta } func (rt *gatewayHTTPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
func (rt *gatewayHTTPRoute) Hostnames() []v1beta1.Hostname { return rt.route.Spec.Hostnames } func (rt *gatewayHTTPRoute) Hostnames() []v1beta1.Hostname { return rt.route.Spec.Hostnames }
func (rt *gatewayHTTPRoute) Protocol() v1beta1.ProtocolType { return v1beta1.HTTPProtocolType } func (rt *gatewayHTTPRoute) Protocol() v1beta1.ProtocolType { return v1beta1.HTTPProtocolType }
@ -50,7 +50,14 @@ func (inf gatewayHTTPRouteInformer) List(namespace string, selector labels.Selec
} }
routes := make([]gatewayRoute, len(list)) routes := make([]gatewayRoute, len(list))
for i, rt := range list { for i, rt := range list {
routes[i] = &gatewayHTTPRoute{rt} // List results are supposed to be treated as read-only.
// We make a shallow copy since we're only interested in setting the TypeMeta.
clone := *rt
clone.TypeMeta = metav1.TypeMeta{
APIVersion: v1beta1.GroupVersion.String(),
Kind: "HTTPRoute",
}
routes[i] = &gatewayHTTPRoute{clone}
} }
return routes, nil return routes, nil
} }

View File

@ -32,9 +32,9 @@ func NewGatewayTCPRouteSource(clients ClientGenerator, config *Config) (Source,
}) })
} }
type gatewayTCPRoute struct{ route *v1alpha2.TCPRoute } 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) Object() kubeObject { return &rt.route }
func (rt *gatewayTCPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta } func (rt *gatewayTCPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
func (rt *gatewayTCPRoute) Hostnames() []v1beta1.Hostname { return nil } func (rt *gatewayTCPRoute) Hostnames() []v1beta1.Hostname { return nil }
func (rt *gatewayTCPRoute) Protocol() v1beta1.ProtocolType { return v1beta1.TCPProtocolType } func (rt *gatewayTCPRoute) Protocol() v1beta1.ProtocolType { return v1beta1.TCPProtocolType }
@ -53,7 +53,14 @@ func (inf gatewayTCPRouteInformer) List(namespace string, selector labels.Select
} }
routes := make([]gatewayRoute, len(list)) routes := make([]gatewayRoute, len(list))
for i, rt := range list { for i, rt := range list {
routes[i] = &gatewayTCPRoute{rt} // List results are supposed to be treated as read-only.
// We make a shallow copy since we're only interested in setting the TypeMeta.
clone := *rt
clone.TypeMeta = metav1.TypeMeta{
APIVersion: v1alpha2.GroupVersion.String(),
Kind: "TCPRoute",
}
routes[i] = &gatewayTCPRoute{clone}
} }
return routes, nil return routes, nil
} }

View File

@ -32,9 +32,9 @@ func NewGatewayTLSRouteSource(clients ClientGenerator, config *Config) (Source,
}) })
} }
type gatewayTLSRoute struct{ route *v1alpha2.TLSRoute } 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) Object() kubeObject { return &rt.route }
func (rt *gatewayTLSRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta } func (rt *gatewayTLSRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
func (rt *gatewayTLSRoute) Hostnames() []v1beta1.Hostname { func (rt *gatewayTLSRoute) Hostnames() []v1beta1.Hostname {
return v1b1Hostnames(rt.route.Spec.Hostnames) return v1b1Hostnames(rt.route.Spec.Hostnames)
@ -55,7 +55,14 @@ func (inf gatewayTLSRouteInformer) List(namespace string, selector labels.Select
} }
routes := make([]gatewayRoute, len(list)) routes := make([]gatewayRoute, len(list))
for i, rt := range list { for i, rt := range list {
routes[i] = &gatewayTLSRoute{rt} // List results are supposed to be treated as read-only.
// We make a shallow copy since we're only interested in setting the TypeMeta.
clone := *rt
clone.TypeMeta = metav1.TypeMeta{
APIVersion: v1alpha2.GroupVersion.String(),
Kind: "TLSRoute",
}
routes[i] = &gatewayTLSRoute{clone}
} }
return routes, nil return routes, nil
} }

View File

@ -32,9 +32,9 @@ func NewGatewayUDPRouteSource(clients ClientGenerator, config *Config) (Source,
}) })
} }
type gatewayUDPRoute struct{ route *v1alpha2.UDPRoute } 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) Object() kubeObject { return &rt.route }
func (rt *gatewayUDPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta } func (rt *gatewayUDPRoute) Metadata() *metav1.ObjectMeta { return &rt.route.ObjectMeta }
func (rt *gatewayUDPRoute) Hostnames() []v1beta1.Hostname { return nil } func (rt *gatewayUDPRoute) Hostnames() []v1beta1.Hostname { return nil }
func (rt *gatewayUDPRoute) Protocol() v1beta1.ProtocolType { return v1beta1.UDPProtocolType } func (rt *gatewayUDPRoute) Protocol() v1beta1.ProtocolType { return v1beta1.UDPProtocolType }
@ -53,7 +53,14 @@ func (inf gatewayUDPRouteInformer) List(namespace string, selector labels.Select
} }
routes := make([]gatewayRoute, len(list)) routes := make([]gatewayRoute, len(list))
for i, rt := range list { for i, rt := range list {
routes[i] = &gatewayUDPRoute{rt} // List results are supposed to be treated as read-only.
// We make a shallow copy since we're only interested in setting the TypeMeta.
clone := *rt
clone.TypeMeta = metav1.TypeMeta{
APIVersion: v1alpha2.GroupVersion.String(),
Kind: "UDPRoute",
}
routes[i] = &gatewayUDPRoute{clone}
} }
return routes, nil return routes, nil
} }