@@ -18,6 +18,7 @@ import (
1818 "fmt"
1919 "reflect"
2020
21+ "github.com/api7/gopkg/pkg/log"
2122 "github.com/go-logr/logr"
2223 corev1 "k8s.io/api/core/v1"
2324 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -26,15 +27,12 @@ import (
2627 ctrl "sigs.k8s.io/controller-runtime"
2728 "sigs.k8s.io/controller-runtime/pkg/builder"
2829 "sigs.k8s.io/controller-runtime/pkg/client"
29- "sigs.k8s.io/controller-runtime/pkg/event"
3030 "sigs.k8s.io/controller-runtime/pkg/handler"
3131 "sigs.k8s.io/controller-runtime/pkg/predicate"
3232 "sigs.k8s.io/controller-runtime/pkg/reconcile"
3333 gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
3434 "sigs.k8s.io/gateway-api/apis/v1beta1"
3535
36- "github.com/api7/gopkg/pkg/log"
37-
3836 "github.com/apache/apisix-ingress-controller/api/v1alpha1"
3937 "github.com/apache/apisix-ingress-controller/internal/controller/indexer"
4038 "github.com/apache/apisix-ingress-controller/internal/provider"
@@ -51,7 +49,7 @@ type GatewayReconciler struct { //nolint:revive
5149
5250// SetupWithManager sets up the controller with the Manager.
5351func (r * GatewayReconciler ) SetupWithManager (mgr ctrl.Manager ) error {
54- return ctrl .NewControllerManagedBy (mgr ).
52+ bdr := ctrl .NewControllerManagedBy (mgr ).
5553 For (
5654 & gatewayv1.Gateway {},
5755 builder .WithPredicates (
@@ -85,25 +83,16 @@ func (r *GatewayReconciler) SetupWithManager(mgr ctrl.Manager) error {
8583 Watches (
8684 & corev1.Secret {},
8785 handler .EnqueueRequestsFromMapFunc (r .listGatewaysForSecret ),
88- ).
89- Watches (& v1beta1.ReferenceGrant {},
86+ )
87+
88+ if GetEnableReferenceGrant () {
89+ bdr .Watches (& v1beta1.ReferenceGrant {},
9090 handler .EnqueueRequestsFromMapFunc (r .listReferenceGrantsForGateway ),
91- builder .WithPredicates (predicate.Funcs {
92- CreateFunc : func (e event.CreateEvent ) bool {
93- return referenceGrantHasGatewayFrom (e .Object )
94- },
95- UpdateFunc : func (e event.UpdateEvent ) bool {
96- return referenceGrantHasGatewayFrom (e .ObjectOld ) || referenceGrantHasGatewayFrom (e .ObjectNew )
97- },
98- DeleteFunc : func (e event.DeleteEvent ) bool {
99- return referenceGrantHasGatewayFrom (e .Object )
100- },
101- GenericFunc : func (e event.GenericEvent ) bool {
102- return referenceGrantHasGatewayFrom (e .Object )
103- },
104- }),
105- ).
106- Complete (r )
91+ builder .WithPredicates (referenceGrantPredicates (KindGateway )),
92+ )
93+ }
94+
95+ return bdr .Complete (r )
10796}
10897
10998func (r * GatewayReconciler ) Reconcile (ctx context.Context , req ctrl.Request ) (ctrl.Result , error ) {
@@ -184,14 +173,9 @@ func (r *GatewayReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
184173 }
185174 }
186175
187- var referenceGrantList v1beta1.ReferenceGrantList
188- if err := r .List (ctx , & referenceGrantList ); err != nil {
189- r .Log .Error (err , "failed to list reference grants" )
190- return ctrl.Result {}, err
191- }
192- listenerStatuses , err := getListenerStatus (ctx , r .Client , gateway , referenceGrantList .Items )
176+ listenerStatuses , err := getListenerStatus (ctx , r .Client , gateway )
193177 if err != nil {
194- r .Log .Error (err , "failed to get listener status" , "gateway" , types .NamespacedName { Namespace : gateway . GetNamespace (), Name : gateway . GetName ()} )
178+ r .Log .Error (err , "failed to get listener status" , "gateway" , req .NamespacedName )
195179 return ctrl.Result {}, err
196180 }
197181
@@ -391,12 +375,12 @@ func (r *GatewayReconciler) listReferenceGrantsForGateway(ctx context.Context, o
391375 }
392376
393377 for _ , gateway := range gatewayList .Items {
378+ gw := v1beta1.ReferenceGrantFrom {
379+ Group : gatewayv1 .GroupName ,
380+ Kind : KindGateway ,
381+ Namespace : v1beta1 .Namespace (gateway .GetNamespace ()),
382+ }
394383 for _ , from := range grant .Spec .From {
395- gw := v1beta1.ReferenceGrantFrom {
396- Group : gatewayv1 .GroupName ,
397- Kind : KindGateway ,
398- Namespace : v1beta1 .Namespace (gateway .GetNamespace ()),
399- }
400384 if from == gw {
401385 requests = append (requests , reconcile.Request {
402386 NamespacedName : types.NamespacedName {
@@ -410,19 +394,6 @@ func (r *GatewayReconciler) listReferenceGrantsForGateway(ctx context.Context, o
410394 return requests
411395}
412396
413- func referenceGrantHasGatewayFrom (obj client.Object ) bool {
414- grant , ok := obj .(* v1beta1.ReferenceGrant )
415- if ! ok {
416- return false
417- }
418- for _ , from := range grant .Spec .From {
419- if from .Kind == KindGateway && string (from .Group ) == gatewayv1 .GroupName {
420- return true
421- }
422- }
423- return false
424- }
425-
426397func (r * GatewayReconciler ) processInfrastructure (tctx * provider.TranslateContext , gateway * gatewayv1.Gateway ) error {
427398 rk := provider.ResourceKind {
428399 Kind : gateway .Kind ,
0 commit comments