@@ -87,7 +87,7 @@ func (r *IngressReconciler) SetupWithManager(mgr ctrl.Manager) error {
8787 bdr := ctrl .NewControllerManagedBy (mgr ).
8888 For (& networkingv1.Ingress {},
8989 builder .WithPredicates (
90- predicate . NewPredicateFuncs (r .checkIngressClass ),
90+ MatchesIngressClassPredicate (r .Client , r . Log , "" ),
9191 ),
9292 ).
9393 WithEventFilter (predicate .Or (eventFilters ... )).
@@ -166,10 +166,13 @@ func (r *IngressReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
166166 // create a translate context
167167 tctx := provider .NewDefaultTranslateContext (ctx )
168168
169- ingressClass , err := r . getIngressClass ( ctx , ingress )
169+ ingressClass , err := FindMatchingIngressClassByObject ( tctx , r . Client , r . Log , ingress , "" )
170170 if err != nil {
171- r .Log .Error (err , "failed to get IngressClass" )
172- return ctrl.Result {}, err
171+ if err := r .Provider .Delete (ctx , ingress ); err != nil {
172+ r .Log .Error (err , "failed to delete ingress resources" , "ingress" , ingress .Name )
173+ return ctrl.Result {}, nil
174+ }
175+ return ctrl.Result {}, nil
173176 }
174177
175178 tctx .RouteParentRefs = append (tctx .RouteParentRefs , gatewayv1.ParentReference {
@@ -222,22 +225,6 @@ func (r *IngressReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
222225 return ctrl.Result {}, nil
223226}
224227
225- // getIngressClass get the ingress class for the ingress
226- func (r * IngressReconciler ) getIngressClass (ctx context.Context , obj client.Object ) (* networkingv1.IngressClass , error ) {
227- ingress := obj .(* networkingv1.Ingress )
228- var ingressClassName string
229- if ingress .Spec .IngressClassName != nil {
230- ingressClassName = * ingress .Spec .IngressClassName
231- }
232- return GetIngressClass (ctx , r .Client , r .Log , ingressClassName , "" )
233- }
234-
235- // checkIngressClass check if the ingress uses the ingress class that we control
236- func (r * IngressReconciler ) checkIngressClass (obj client.Object ) bool {
237- _ , err := r .getIngressClass (context .Background (), obj )
238- return err == nil
239- }
240-
241228// matchesIngressController check if the ingress class is controlled by us
242229func (r * IngressReconciler ) matchesIngressController (obj client.Object ) bool {
243230 ingressClass , ok := obj .(* networkingv1.IngressClass )
@@ -322,7 +309,7 @@ func (r *IngressReconciler) listIngressesByService(ctx context.Context, obj clie
322309
323310 requests := make ([]reconcile.Request , 0 , len (ingressList .Items ))
324311 for _ , ingress := range ingressList .Items {
325- if r . checkIngressClass ( & ingress ) {
312+ if MatchesIngressClass ( r . Client , r . Log , & ingress , "" ) {
326313 requests = append (requests , reconcile.Request {
327314 NamespacedName : client.ObjectKey {
328315 Namespace : ingress .Namespace ,
@@ -356,7 +343,7 @@ func (r *IngressReconciler) listIngressesByEndpoints(ctx context.Context, obj cl
356343
357344 requests := make ([]reconcile.Request , 0 , len (ingressList .Items ))
358345 for _ , ingress := range ingressList .Items {
359- if r . checkIngressClass ( & ingress ) {
346+ if MatchesIngressClass ( r . Client , r . Log , & ingress , "" ) {
360347 requests = append (requests , reconcile.Request {
361348 NamespacedName : client.ObjectKey {
362349 Namespace : ingress .Namespace ,
@@ -389,7 +376,7 @@ func (r *IngressReconciler) listIngressesBySecret(ctx context.Context, obj clien
389376
390377 requests := make ([]reconcile.Request , 0 , len (ingressList .Items ))
391378 for _ , ingress := range ingressList .Items {
392- if r . checkIngressClass ( & ingress ) {
379+ if MatchesIngressClass ( r . Client , r . Log , & ingress , "" ) {
393380 requests = append (requests , reconcile.Request {
394381 NamespacedName : client.ObjectKey {
395382 Namespace : ingress .Namespace ,
0 commit comments