Skip to content

Commit 9ec8a53

Browse files
committed
add logger to object change predicate
1 parent 720b2e0 commit 9ec8a53

File tree

3 files changed

+35
-23
lines changed

3 files changed

+35
-23
lines changed

controllers/istiocontrolplane_controller.go

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -397,79 +397,82 @@ func (r *IstioControlPlaneReconciler) GetScheme() *runtime.Scheme {
397397
func (r *IstioControlPlaneReconciler) SetupWithManager(mgr ctrl.Manager) error {
398398
r.builder = ctrl.NewControllerManagedBy(mgr)
399399

400+
objectChangePredicate := util.ObjectChangePredicate{Logger: r.Log}
401+
400402
ctrl, err := r.builder.
401403
For(&servicemeshv1alpha1.IstioControlPlane{
402404
TypeMeta: metav1.TypeMeta{
403405
Kind: "IstioControlPlane",
404406
APIVersion: servicemeshv1alpha1.SchemeBuilder.GroupVersion.String(),
405407
},
406-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
408+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
407409
Owns(&appsv1.Deployment{
408410
TypeMeta: metav1.TypeMeta{
409411
Kind: "Deployment",
410412
APIVersion: appsv1.SchemeGroupVersion.String(),
411413
},
412-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
414+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
413415
Owns(&appsv1.DaemonSet{
414416
TypeMeta: metav1.TypeMeta{
415417
Kind: "DaemonSet",
416418
APIVersion: appsv1.SchemeGroupVersion.String(),
417419
},
418-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
420+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
419421
Owns(&corev1.ConfigMap{
420422
TypeMeta: metav1.TypeMeta{
421423
Kind: "ConfigMap",
422424
APIVersion: corev1.SchemeGroupVersion.String(),
423425
},
424-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
426+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
425427
Owns(&corev1.Secret{
426428
TypeMeta: metav1.TypeMeta{
427429
Kind: "Secret",
428430
APIVersion: corev1.SchemeGroupVersion.String(),
429431
},
430-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
432+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
431433
Owns(&corev1.Service{
432434
TypeMeta: metav1.TypeMeta{
433435
Kind: "Service",
434436
APIVersion: corev1.SchemeGroupVersion.String(),
435437
},
436-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
438+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
437439
Owns(&corev1.Endpoints{
438440
TypeMeta: metav1.TypeMeta{
439441
Kind: "Endpoints",
440442
APIVersion: corev1.SchemeGroupVersion.String(),
441443
},
442-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
444+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
443445
Owns(&corev1.ServiceAccount{
444446
TypeMeta: metav1.TypeMeta{
445447
Kind: "ServiceAccount",
446448
APIVersion: corev1.SchemeGroupVersion.String(),
447449
},
448-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
450+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
449451
Owns(&policyv1beta1.PodDisruptionBudget{
450452
TypeMeta: metav1.TypeMeta{
451453
Kind: "PodDisruptionBudget",
452454
APIVersion: policyv1beta1.SchemeGroupVersion.String(),
453455
},
454-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
456+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
455457
Owns(&rbacv1.Role{
456458
TypeMeta: metav1.TypeMeta{
457459
Kind: "Role",
458460
APIVersion: rbacv1.SchemeGroupVersion.String(),
459461
},
460-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
462+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
461463
Owns(&rbacv1.RoleBinding{
462464
TypeMeta: metav1.TypeMeta{
463465
Kind: "RoleBinding",
464466
APIVersion: rbacv1.SchemeGroupVersion.String(),
465467
},
466-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
468+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
467469
Owns(&autoscalingv1.HorizontalPodAutoscaler{
468470
TypeMeta: metav1.TypeMeta{
469471
Kind: "HorizontalPodAutoscaler",
470472
APIVersion: autoscalingv1.SchemeGroupVersion.String(),
471473
},
472474
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{
475+
Logger: r.Log,
473476
CalculateOptions: []util.CalculateOption{
474477
util.IgnoreMetadataAnnotations("autoscaling.alpha.kubernetes.io"),
475478
patch.IgnoreStatusFields(),
@@ -527,7 +530,7 @@ func (r *IstioControlPlaneReconciler) SetupWithManager(mgr ctrl.Manager) error {
527530
}
528531

529532
for _, t := range types {
530-
err := r.ctrl.Watch(&source.Kind{Type: t}, handler.EnqueueRequestsFromMapFunc(reconciler.EnqueueByOwnerAnnotationMapper()), util.ObjectChangePredicate{})
533+
err := r.ctrl.Watch(&source.Kind{Type: t}, handler.EnqueueRequestsFromMapFunc(reconciler.EnqueueByOwnerAnnotationMapper()), objectChangePredicate)
531534
if err != nil {
532535
return err
533536
}
@@ -577,7 +580,7 @@ func (r *IstioControlPlaneReconciler) SetupWithManager(mgr ctrl.Manager) error {
577580
}
578581
}),
579582
predicate.Or(
580-
util.ObjectChangePredicate{},
583+
objectChangePredicate,
581584
util.IMGWAddressChangePredicate{},
582585
),
583586
)
@@ -612,6 +615,7 @@ func (r *IstioControlPlaneReconciler) SetupWithManager(mgr ctrl.Manager) error {
612615
}),
613616
predicate.Or(
614617
util.ObjectChangePredicate{
618+
Logger: r.Log,
615619
CalculateOptions: []patch.CalculateOption{
616620
util.IgnoreMetadataAnnotations(patch.LastAppliedConfig),
617621
},
@@ -661,7 +665,7 @@ func (r *IstioControlPlaneReconciler) SetupWithManager(mgr ctrl.Manager) error {
661665

662666
return resources
663667
}),
664-
util.ObjectChangePredicate{},
668+
objectChangePredicate,
665669
)
666670
if err != nil {
667671
return err
@@ -742,7 +746,7 @@ func (r *IstioControlPlaneReconciler) SetupWithManager(mgr ctrl.Manager) error {
742746
return resources
743747
}),
744748
predicate.Or(
745-
util.ObjectChangePredicate{},
749+
objectChangePredicate,
746750
util.ClusterTypeChangePredicate{},
747751
),
748752
)
@@ -1405,7 +1409,7 @@ func (r *IstioControlPlaneReconciler) watchIstioCRs() error {
14051409
}
14061410

14071411
for _, t := range types {
1408-
err := r.ctrl.Watch(&source.Kind{Type: t}, eventHandler, util.ObjectChangePredicate{})
1412+
err := r.ctrl.Watch(&source.Kind{Type: t}, eventHandler, util.ObjectChangePredicate{Logger: r.Log})
14091413
if err != nil {
14101414
return err
14111415
}

controllers/meshgateway_controller.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,50 +172,53 @@ func (r *IstioMeshGatewayReconciler) GetScheme() *runtime.Scheme {
172172
func (r *IstioMeshGatewayReconciler) SetupWithManager(mgr ctrl.Manager) error {
173173
builder := ctrl.NewControllerManagedBy(mgr)
174174

175+
objectChangePredicate := util.ObjectChangePredicate{Logger: r.Log}
176+
175177
ctrl, err := builder.
176-
For(&servicemeshv1alpha1.IstioMeshGateway{}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
178+
For(&servicemeshv1alpha1.IstioMeshGateway{}, ctrlBuilder.WithPredicates(objectChangePredicate)).
177179
Owns(&appsv1.Deployment{
178180
TypeMeta: metav1.TypeMeta{
179181
Kind: "Deployment",
180182
APIVersion: appsv1.SchemeGroupVersion.String(),
181183
},
182-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
184+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
183185
Owns(&corev1.Service{
184186
TypeMeta: metav1.TypeMeta{
185187
Kind: "Service",
186188
APIVersion: corev1.SchemeGroupVersion.String(),
187189
},
188-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
190+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
189191
Owns(&corev1.ServiceAccount{
190192
TypeMeta: metav1.TypeMeta{
191193
Kind: "ServiceAccount",
192194
APIVersion: corev1.SchemeGroupVersion.String(),
193195
},
194-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
196+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
195197
Owns(&policyv1beta1.PodDisruptionBudget{
196198
TypeMeta: metav1.TypeMeta{
197199
Kind: "PodDisruptionBudget",
198200
APIVersion: policyv1beta1.SchemeGroupVersion.String(),
199201
},
200-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
202+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
201203
Owns(&rbacv1.Role{
202204
TypeMeta: metav1.TypeMeta{
203205
Kind: "Role",
204206
APIVersion: rbacv1.SchemeGroupVersion.String(),
205207
},
206-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
208+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
207209
Owns(&rbacv1.RoleBinding{
208210
TypeMeta: metav1.TypeMeta{
209211
Kind: "RoleBinding",
210212
APIVersion: rbacv1.SchemeGroupVersion.String(),
211213
},
212-
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{})).
214+
}, ctrlBuilder.WithPredicates(objectChangePredicate)).
213215
Owns(&autoscalingv1.HorizontalPodAutoscaler{
214216
TypeMeta: metav1.TypeMeta{
215217
Kind: "HorizontalPodAutoscaler",
216218
APIVersion: autoscalingv1.SchemeGroupVersion.String(),
217219
},
218220
}, ctrlBuilder.WithPredicates(util.ObjectChangePredicate{
221+
Logger: r.Log,
219222
CalculateOptions: []util.CalculateOption{
220223
util.IgnoreMetadataAnnotations("autoscaling.alpha.kubernetes.io"),
221224
patch.IgnoreStatusFields(),

internal/util/predicate.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"strings"
2323

2424
"emperror.dev/errors"
25+
"github.com/go-logr/logr"
2526
"sigs.k8s.io/controller-runtime/pkg/event"
2627
"sigs.k8s.io/controller-runtime/pkg/predicate"
2728

@@ -36,6 +37,7 @@ type CalculateOption = patch.CalculateOption
3637
type ObjectChangePredicate struct {
3738
predicate.Funcs
3839
CalculateOptions []CalculateOption
40+
Logger logr.Logger
3941
}
4042

4143
func (p ObjectChangePredicate) Update(e event.UpdateEvent) bool {
@@ -51,6 +53,9 @@ func (p ObjectChangePredicate) Update(e event.UpdateEvent) bool {
5153

5254
patchResult, err := patch.DefaultPatchMaker.Calculate(e.ObjectOld, e.ObjectNew, options...)
5355
if err != nil {
56+
if p.Logger != nil {
57+
p.Logger.Error(errors.WithStack(err), "could not calculate patch result")
58+
}
5459
return true
5560
} else if patchResult.IsEmpty() {
5661
return false

0 commit comments

Comments
 (0)