diff --git a/internal/controller/apisixconsumer_controller.go b/internal/controller/apisixconsumer_controller.go index de132ac1ff..eb9b3c7323 100644 --- a/internal/controller/apisixconsumer_controller.go +++ b/internal/controller/apisixconsumer_controller.go @@ -117,6 +117,7 @@ func (r *ApisixConsumerReconciler) SetupWithManager(mgr ctrl.Manager) error { predicate.Or( predicate.GenerationChangedPredicate{}, predicate.AnnotationChangedPredicate{}, + predicate.NewPredicateFuncs(TypePredicate[*corev1.Secret]()), ), ). Watches( diff --git a/internal/controller/apisixroute_controller.go b/internal/controller/apisixroute_controller.go index 4806fbddaf..99fee29276 100644 --- a/internal/controller/apisixroute_controller.go +++ b/internal/controller/apisixroute_controller.go @@ -63,13 +63,12 @@ func (r *ApisixRouteReconciler) SetupWithManager(mgr ctrl.Manager) error { WithEventFilter( predicate.Or( predicate.GenerationChangedPredicate{}, - predicate.NewPredicateFuncs(func(obj client.Object) bool { - _, ok := obj.(*corev1.Secret) - return ok - }), + predicate.AnnotationChangedPredicate{}, + predicate.NewPredicateFuncs(TypePredicate[*corev1.Secret]()), ), ). - Watches(&networkingv1.IngressClass{}, + Watches( + &networkingv1.IngressClass{}, handler.EnqueueRequestsFromMapFunc(r.listApisixRouteForIngressClass), builder.WithPredicates( predicate.NewPredicateFuncs(matchesIngressController), diff --git a/internal/controller/apisixtls_controller.go b/internal/controller/apisixtls_controller.go index 3d762a3ada..020aebcd4e 100644 --- a/internal/controller/apisixtls_controller.go +++ b/internal/controller/apisixtls_controller.go @@ -65,6 +65,7 @@ func (r *ApisixTlsReconciler) SetupWithManager(mgr ctrl.Manager) error { predicate.Or( predicate.GenerationChangedPredicate{}, predicate.AnnotationChangedPredicate{}, + predicate.NewPredicateFuncs(TypePredicate[*corev1.Secret]()), ), ). Watches( diff --git a/internal/controller/consumer_controller.go b/internal/controller/consumer_controller.go index 732c3f778a..0484680c5d 100644 --- a/internal/controller/consumer_controller.go +++ b/internal/controller/consumer_controller.go @@ -65,10 +65,7 @@ func (r *ConsumerReconciler) SetupWithManager(mgr ctrl.Manager) error { WithEventFilter( predicate.Or( predicate.GenerationChangedPredicate{}, - predicate.NewPredicateFuncs(func(obj client.Object) bool { - _, ok := obj.(*corev1.Secret) - return ok - }), + predicate.NewPredicateFuncs(TypePredicate[*corev1.Secret]()), ), ). Watches(&gatewayv1.Gateway{}, diff --git a/internal/controller/gateway_controller.go b/internal/controller/gateway_controller.go index 8040d98028..31a64824ac 100644 --- a/internal/controller/gateway_controller.go +++ b/internal/controller/gateway_controller.go @@ -68,10 +68,7 @@ func (r *GatewayReconciler) SetupWithManager(mgr ctrl.Manager) error { WithEventFilter( predicate.Or( predicate.GenerationChangedPredicate{}, - predicate.NewPredicateFuncs(func(obj client.Object) bool { - _, ok := obj.(*corev1.Secret) - return ok - }), + predicate.NewPredicateFuncs(TypePredicate[*corev1.Secret]()), ), ). Watches( diff --git a/internal/controller/gatewayclass_congroller.go b/internal/controller/gatewayclass_controller.go similarity index 100% rename from internal/controller/gatewayclass_congroller.go rename to internal/controller/gatewayclass_controller.go diff --git a/internal/controller/gatewayproxy_controller.go b/internal/controller/gatewayproxy_controller.go index d1a4b80357..43ba32f743 100644 --- a/internal/controller/gatewayproxy_controller.go +++ b/internal/controller/gatewayproxy_controller.go @@ -30,6 +30,7 @@ import ( ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/handler" + "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" gatewayv1 "sigs.k8s.io/gateway-api/apis/v1" @@ -51,6 +52,12 @@ type GatewayProxyController struct { func (r *GatewayProxyController) SetupWithManager(mrg ctrl.Manager) error { return ctrl.NewControllerManagedBy(mrg). For(&v1alpha1.GatewayProxy{}). + WithEventFilter( + predicate.Or( + predicate.GenerationChangedPredicate{}, + predicate.NewPredicateFuncs(TypePredicate[*corev1.Secret]()), + ), + ). Watches(&corev1.Service{}, handler.EnqueueRequestsFromMapFunc(r.listGatewayProxiesForProviderService), ). diff --git a/internal/controller/ingress_controller.go b/internal/controller/ingress_controller.go index c4df1226ca..001a9f9bd7 100644 --- a/internal/controller/ingress_controller.go +++ b/internal/controller/ingress_controller.go @@ -75,6 +75,7 @@ func (r *IngressReconciler) SetupWithManager(mgr ctrl.Manager) error { predicate.Or( predicate.GenerationChangedPredicate{}, predicate.AnnotationChangedPredicate{}, + predicate.NewPredicateFuncs(TypePredicate[*corev1.Secret]()), ), ). Watches( diff --git a/internal/controller/ingressclass_controller.go b/internal/controller/ingressclass_controller.go index 0d71bd54b7..f653dbbdfe 100644 --- a/internal/controller/ingressclass_controller.go +++ b/internal/controller/ingressclass_controller.go @@ -62,10 +62,8 @@ func (r *IngressClassReconciler) SetupWithManager(mgr ctrl.Manager) error { WithEventFilter( predicate.Or( predicate.GenerationChangedPredicate{}, - predicate.NewPredicateFuncs(func(obj client.Object) bool { - _, ok := obj.(*corev1.Secret) - return ok - }), + predicate.AnnotationChangedPredicate{}, + predicate.NewPredicateFuncs(TypePredicate[*corev1.Secret]()), ), ). Watches( diff --git a/internal/controller/utils.go b/internal/controller/utils.go index d1049046fb..45cbf12c9e 100644 --- a/internal/controller/utils.go +++ b/internal/controller/utils.go @@ -1471,3 +1471,10 @@ func addProviderEndpointsToTranslateContext(tctx *provider.TranslateContext, c c return nil } + +func TypePredicate[T client.Object]() func(obj client.Object) bool { + return func(obj client.Object) bool { + _, ok := obj.(T) + return ok + } +}