@@ -25,8 +25,10 @@ import (
2525 corev1 "k8s.io/api/core/v1"
2626 discoveryv1 "k8s.io/api/discovery/v1"
2727 networkingv1 "k8s.io/api/networking/v1"
28+ networkingv1beta1 "k8s.io/api/networking/v1beta1"
2829 "k8s.io/apimachinery/pkg/runtime"
29- "k8s.io/apimachinery/pkg/types"
30+ "k8s.io/apimachinery/pkg/runtime/schema"
31+ k8stypes "k8s.io/apimachinery/pkg/types"
3032 ctrl "sigs.k8s.io/controller-runtime"
3133 "sigs.k8s.io/controller-runtime/pkg/client"
3234 "sigs.k8s.io/controller-runtime/pkg/handler"
@@ -47,6 +49,8 @@ type GatewayProxyController struct {
4749 Scheme * runtime.Scheme
4850 Log logr.Logger
4951 Provider provider.Provider
52+
53+ ICGVK schema.GroupVersionKind
5054}
5155
5256func (r * GatewayProxyController ) SetupWithManager (mrg ctrl.Manager ) error {
@@ -93,7 +97,7 @@ func (r *GatewayProxyController) Reconcile(ctx context.Context, req ctrl.Request
9397 if providerService == nil {
9498 tctx .EndpointSlices [req .NamespacedName ] = nil
9599 } else {
96- if err := addProviderEndpointsToTranslateContext (tctx , r .Client , types .NamespacedName {
100+ if err := addProviderEndpointsToTranslateContext (tctx , r .Client , k8stypes .NamespacedName {
97101 Namespace : gp .Namespace ,
98102 Name : providerService .Name ,
99103 }); err != nil {
@@ -106,7 +110,7 @@ func (r *GatewayProxyController) Reconcile(ctx context.Context, req ctrl.Request
106110 if auth .AdminKey != nil && auth .AdminKey .ValueFrom != nil && auth .AdminKey .ValueFrom .SecretKeyRef != nil {
107111 var (
108112 secret corev1.Secret
109- secretNN = types .NamespacedName {
113+ secretNN = k8stypes .NamespacedName {
110114 Namespace : gp .GetNamespace (),
111115 Name : auth .AdminKey .ValueFrom .SecretKeyRef .Name ,
112116 }
@@ -120,27 +124,42 @@ func (r *GatewayProxyController) Reconcile(ctx context.Context, req ctrl.Request
120124
121125 // list Gateways that reference the GatewayProxy
122126 var (
123- gatewayList gatewayv1.GatewayList
124- ingressClassList networkingv1.IngressClassList
125- indexKey = indexer .GenIndexKey (gp .GetNamespace (), gp .GetName ())
127+ gatewayList gatewayv1.GatewayList
128+ indexKey = indexer .GenIndexKey (gp .GetNamespace (), gp .GetName ())
126129 )
127130 if err := r .List (ctx , & gatewayList , client.MatchingFields {indexer .ParametersRef : indexKey }); err != nil {
128131 r .Log .Error (err , "failed to list GatewayList" )
129132 return ctrl.Result {}, nil
130133 }
131134
132- // list IngressClasses that reference the GatewayProxy
133- if err := r .List (ctx , & ingressClassList , client.MatchingFields {indexer .IngressClassParametersRef : indexKey }); err != nil {
134- r .Log .Error (err , "failed to list IngressClassList" )
135- return reconcile.Result {}, err
136- }
137-
138135 // append referrers to translate context
139136 for _ , item := range gatewayList .Items {
140137 tctx .GatewayProxyReferrers [req .NamespacedName ] = append (tctx .GatewayProxyReferrers [req .NamespacedName ], utils .NamespacedNameKind (& item ))
141138 }
142- for _ , item := range ingressClassList .Items {
143- tctx .GatewayProxyReferrers [req .NamespacedName ] = append (tctx .GatewayProxyReferrers [req .NamespacedName ], utils .NamespacedNameKind (& item ))
139+
140+ switch r .ICGVK .Version {
141+ case networkingv1 .SchemeGroupVersion .Version , "" :
142+ var ingressClassList networkingv1.IngressClassList
143+ // list IngressClasses that reference the GatewayProxy
144+ if err := r .List (ctx , & ingressClassList , client.MatchingFields {indexer .IngressClassParametersRef : indexKey }); err != nil {
145+ r .Log .Error (err , "failed to list IngressClassList" )
146+ return reconcile.Result {}, err
147+ }
148+
149+ for _ , item := range ingressClassList .Items {
150+ tctx .GatewayProxyReferrers [req .NamespacedName ] = append (tctx .GatewayProxyReferrers [req .NamespacedName ], utils .NamespacedNameKind (& item ))
151+ }
152+ case networkingv1beta1 .SchemeGroupVersion .Version :
153+ var ingressClassList networkingv1beta1.IngressClassList
154+ // list IngressClasses that reference the GatewayProxy
155+ if err := r .List (ctx , & ingressClassList , client.MatchingFields {indexer .IngressClassParametersRef : indexKey }); err != nil {
156+ r .Log .Error (err , "failed to list IngressClassList" )
157+ return reconcile.Result {}, err
158+ }
159+
160+ for _ , item := range ingressClassList .Items {
161+ tctx .GatewayProxyReferrers [req .NamespacedName ] = append (tctx .GatewayProxyReferrers [req .NamespacedName ], utils .NamespacedNameKind (& item ))
162+ }
144163 }
145164
146165 if err := r .Provider .Update (ctx , tctx , & gp ); err != nil {
0 commit comments