@@ -27,11 +27,17 @@ import (
27
27
"k8s.io/apimachinery/pkg/types"
28
28
ctrl "sigs.k8s.io/controller-runtime"
29
29
"sigs.k8s.io/controller-runtime/pkg/client"
30
+ "sigs.k8s.io/controller-runtime/pkg/event"
30
31
"sigs.k8s.io/controller-runtime/pkg/log"
32
+ "sigs.k8s.io/controller-runtime/pkg/predicate"
31
33
32
34
loxiapi "github.com/loxilb-io/kube-loxilb/pkg/api"
33
35
)
34
36
37
+ const (
38
+ loxilbIngressClassName = "loxilb"
39
+ )
40
+
35
41
type LoxilbIngressReconciler struct {
36
42
client.Client
37
43
Scheme * runtime.Scheme
@@ -173,7 +179,46 @@ func (r *LoxilbIngressReconciler) createLoxiModelList(ctx context.Context, ingre
173
179
}
174
180
175
181
func (r * LoxilbIngressReconciler ) SetupWithManager (mgr ctrl.Manager ) error {
182
+ checkIngClassNameFunc := func (ing * netv1.Ingress ) bool {
183
+ if ing .Spec .IngressClassName != nil {
184
+ if * ing .Spec .IngressClassName == loxilbIngressClassName {
185
+ return true
186
+ }
187
+ }
188
+ return false
189
+ }
190
+
176
191
return ctrl .NewControllerManagedBy (mgr ).
177
192
For (& netv1.Ingress {}).
193
+ WithEventFilter (predicate.Funcs {
194
+ UpdateFunc : func (e event.UpdateEvent ) bool {
195
+ ing , ok := e .ObjectNew .(* netv1.Ingress )
196
+ if ok {
197
+ return checkIngClassNameFunc (ing )
198
+ }
199
+ return false
200
+ },
201
+ DeleteFunc : func (e event.DeleteEvent ) bool {
202
+ ing , ok := e .Object .(* netv1.Ingress )
203
+ if ok {
204
+ return checkIngClassNameFunc (ing )
205
+ }
206
+ return false
207
+ },
208
+ CreateFunc : func (e event.CreateEvent ) bool {
209
+ ing , ok := e .Object .(* netv1.Ingress )
210
+ if ok {
211
+ return checkIngClassNameFunc (ing )
212
+ }
213
+ return false
214
+ },
215
+ GenericFunc : func (e event.GenericEvent ) bool {
216
+ ing , ok := e .Object .(* netv1.Ingress )
217
+ if ok {
218
+ return checkIngClassNameFunc (ing )
219
+ }
220
+ return false
221
+ },
222
+ }).
178
223
Complete (r )
179
224
}
0 commit comments