in pkg/controllers/egressrules_controller.go [75:94]
func (r *AzureFirewallRulesReconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr).
For(&azurefirewallrulesv1.AzureFirewallRules{}).
Watches(&source.Kind{Type: &corev1.Node{}}, &handler.EnqueueRequestForObject{}).
WithEventFilter(predicate.Funcs{
UpdateFunc: func(e event.UpdateEvent) bool {
if _, ok := e.ObjectNew.(*corev1.Node); ok {
oldObj := e.ObjectOld.(*corev1.Node)
newObj := e.ObjectNew.(*corev1.Node)
labelChanged := !reflect.DeepEqual(oldObj.GetLabels(), newObj.GetLabels())
ipChanged := oldObj.Status.Addresses[0].Address != newObj.Status.Addresses[0].Address
// Only trigger the reconciler if a specific field has changed.
return labelChanged || ipChanged
}
return true
},
}).
Complete(r)
}