Skip to content

Commit 5ed1d2f

Browse files
committed
Fix predicate logging
1 parent 1cd1543 commit 5ed1d2f

File tree

12 files changed

+173
-120
lines changed

12 files changed

+173
-120
lines changed

controllers/external/tracker.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,16 @@ import (
3737
type ObjectTracker struct {
3838
m sync.Map
3939

40-
Controller controller.Controller
41-
Cache cache.Cache
42-
Scheme *runtime.Scheme
40+
Controller controller.Controller
41+
Cache cache.Cache
42+
Scheme *runtime.Scheme
43+
PredicateLogger *logr.Logger
4344
}
4445

4546
// Watch uses the controller to issue a Watch only if the object hasn't been seen before.
4647
func (o *ObjectTracker) Watch(log logr.Logger, obj client.Object, handler handler.EventHandler, p ...predicate.Predicate) error {
47-
if o.Controller == nil || o.Cache == nil || o.Scheme == nil {
48-
return errors.New("all of controller, cache and scheme must be set for object tracker")
48+
if o.Controller == nil || o.Cache == nil || o.Scheme == nil || o.PredicateLogger == nil {
49+
return errors.New("all of Controller, Cache, Scheme and PredicateLogger must be set for object tracker")
4950
}
5051

5152
gvk := obj.GetObjectKind().GroupVersionKind()
@@ -59,7 +60,7 @@ func (o *ObjectTracker) Watch(log logr.Logger, obj client.Object, handler handle
5960
o.Cache,
6061
obj.DeepCopyObject().(client.Object),
6162
handler,
62-
append(p, predicates.ResourceNotPaused(o.Scheme, log))...,
63+
append(p, predicates.ResourceNotPaused(o.Scheme, *o.PredicateLogger))...,
6364
))
6465
if err != nil {
6566
o.m.Delete(key)

controllers/external/tracker_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/pkg/errors"
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2626
"k8s.io/apimachinery/pkg/runtime"
27+
"k8s.io/utils/ptr"
2728
"sigs.k8s.io/controller-runtime/pkg/cache/informertest"
2829
"sigs.k8s.io/controller-runtime/pkg/controller"
2930
"sigs.k8s.io/controller-runtime/pkg/log"
@@ -66,7 +67,7 @@ func (c *watchCountController) Watch(_ source.Source) error {
6667
func TestRetryWatch(t *testing.T) {
6768
g := NewWithT(t)
6869
ctrl := newWatchCountController(true)
69-
tracker := ObjectTracker{Controller: ctrl, Scheme: runtime.NewScheme(), Cache: &informertest.FakeInformers{}}
70+
tracker := ObjectTracker{Controller: ctrl, Scheme: runtime.NewScheme(), Cache: &informertest.FakeInformers{}, PredicateLogger: ptr.To(logr.New(log.NullLogSink{}))}
7071

7172
err := tracker.Watch(logger, &clusterv1.Cluster{}, nil)
7273
g.Expect(err).To(HaveOccurred())
@@ -80,7 +81,7 @@ func TestRetryWatch(t *testing.T) {
8081
func TestWatchMultipleTimes(t *testing.T) {
8182
g := NewWithT(t)
8283
ctrl := &watchCountController{}
83-
tracker := ObjectTracker{Controller: ctrl, Scheme: runtime.NewScheme(), Cache: &informertest.FakeInformers{}}
84+
tracker := ObjectTracker{Controller: ctrl, Scheme: runtime.NewScheme(), Cache: &informertest.FakeInformers{}, PredicateLogger: ptr.To(logr.New(log.NullLogSink{}))}
8485

8586
obj := &clusterv1.Cluster{
8687
TypeMeta: metav1.TypeMeta{

exp/internal/controllers/machinepool_controller.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,10 @@ func (r *MachinePoolReconciler) SetupWithManager(ctx context.Context, mgr ctrl.M
134134
r.controller = c
135135
r.recorder = mgr.GetEventRecorderFor("machinepool-controller")
136136
r.externalTracker = external.ObjectTracker{
137-
Controller: c,
138-
Cache: mgr.GetCache(),
139-
Scheme: mgr.GetScheme(),
137+
Controller: c,
138+
Cache: mgr.GetCache(),
139+
Scheme: mgr.GetScheme(),
140+
PredicateLogger: &predicateLog,
140141
}
141142
r.ssaCache = ssa.NewCache()
142143

exp/internal/controllers/machinepool_controller_phases_test.go

Lines changed: 82 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"testing"
2222
"time"
2323

24+
"github.com/go-logr/logr"
2425
. "github.com/onsi/gomega"
2526
corev1 "k8s.io/api/core/v1"
2627
apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -33,6 +34,7 @@ import (
3334
"sigs.k8s.io/controller-runtime/pkg/cache/informertest"
3435
"sigs.k8s.io/controller-runtime/pkg/client"
3536
"sigs.k8s.io/controller-runtime/pkg/client/fake"
37+
"sigs.k8s.io/controller-runtime/pkg/log"
3638

3739
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
3840
"sigs.k8s.io/cluster-api/controllers/clustercache"
@@ -131,9 +133,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
131133
Client: fakeClient,
132134
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
133135
externalTracker: external.ObjectTracker{
134-
Controller: externalfake.Controller{},
135-
Cache: &informertest.FakeInformers{},
136-
Scheme: fakeClient.Scheme(),
136+
Controller: externalfake.Controller{},
137+
Cache: &informertest.FakeInformers{},
138+
Scheme: fakeClient.Scheme(),
139+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
137140
},
138141
}
139142

@@ -173,9 +176,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
173176
Client: fakeClient,
174177
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
175178
externalTracker: external.ObjectTracker{
176-
Controller: externalfake.Controller{},
177-
Cache: &informertest.FakeInformers{},
178-
Scheme: fakeClient.Scheme(),
179+
Controller: externalfake.Controller{},
180+
Cache: &informertest.FakeInformers{},
181+
Scheme: fakeClient.Scheme(),
182+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
179183
},
180184
}
181185

@@ -212,9 +216,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
212216
Client: fakeClient,
213217
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
214218
externalTracker: external.ObjectTracker{
215-
Controller: externalfake.Controller{},
216-
Cache: &informertest.FakeInformers{},
217-
Scheme: fakeClient.Scheme(),
219+
Controller: externalfake.Controller{},
220+
Cache: &informertest.FakeInformers{},
221+
Scheme: fakeClient.Scheme(),
222+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
218223
},
219224
}
220225

@@ -267,9 +272,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
267272
Client: fakeClient,
268273
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
269274
externalTracker: external.ObjectTracker{
270-
Controller: externalfake.Controller{},
271-
Cache: &informertest.FakeInformers{},
272-
Scheme: fakeClient.Scheme(),
275+
Controller: externalfake.Controller{},
276+
Cache: &informertest.FakeInformers{},
277+
Scheme: fakeClient.Scheme(),
278+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
273279
},
274280
}
275281

@@ -334,9 +340,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
334340
Client: fakeClient,
335341
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
336342
externalTracker: external.ObjectTracker{
337-
Controller: externalfake.Controller{},
338-
Cache: &informertest.FakeInformers{},
339-
Scheme: fakeClient.Scheme(),
343+
Controller: externalfake.Controller{},
344+
Cache: &informertest.FakeInformers{},
345+
Scheme: fakeClient.Scheme(),
346+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
340347
},
341348
}
342349

@@ -379,9 +386,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
379386
Client: fakeClient,
380387
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
381388
externalTracker: external.ObjectTracker{
382-
Controller: externalfake.Controller{},
383-
Cache: &informertest.FakeInformers{},
384-
Scheme: fakeClient.Scheme(),
389+
Controller: externalfake.Controller{},
390+
Cache: &informertest.FakeInformers{},
391+
Scheme: fakeClient.Scheme(),
392+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
385393
},
386394
}
387395

@@ -431,9 +439,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
431439
Client: fakeClient,
432440
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
433441
externalTracker: external.ObjectTracker{
434-
Controller: externalfake.Controller{},
435-
Cache: &informertest.FakeInformers{},
436-
Scheme: fakeClient.Scheme(),
442+
Controller: externalfake.Controller{},
443+
Cache: &informertest.FakeInformers{},
444+
Scheme: fakeClient.Scheme(),
445+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
437446
},
438447
}
439448

@@ -496,9 +505,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
496505
Client: fakeClient,
497506
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
498507
externalTracker: external.ObjectTracker{
499-
Controller: externalfake.Controller{},
500-
Cache: &informertest.FakeInformers{},
501-
Scheme: fakeClient.Scheme(),
508+
Controller: externalfake.Controller{},
509+
Cache: &informertest.FakeInformers{},
510+
Scheme: fakeClient.Scheme(),
511+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
502512
},
503513
}
504514

@@ -567,9 +577,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
567577
Client: fakeClient,
568578
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
569579
externalTracker: external.ObjectTracker{
570-
Controller: externalfake.Controller{},
571-
Cache: &informertest.FakeInformers{},
572-
Scheme: fakeClient.Scheme(),
580+
Controller: externalfake.Controller{},
581+
Cache: &informertest.FakeInformers{},
582+
Scheme: fakeClient.Scheme(),
583+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
573584
},
574585
}
575586

@@ -636,9 +647,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
636647
Client: fakeClient,
637648
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
638649
externalTracker: external.ObjectTracker{
639-
Controller: externalfake.Controller{},
640-
Cache: &informertest.FakeInformers{},
641-
Scheme: fakeClient.Scheme(),
650+
Controller: externalfake.Controller{},
651+
Cache: &informertest.FakeInformers{},
652+
Scheme: fakeClient.Scheme(),
653+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
642654
},
643655
}
644656

@@ -727,9 +739,10 @@ func TestReconcileMachinePoolPhases(t *testing.T) {
727739
Client: fakeClient,
728740
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
729741
externalTracker: external.ObjectTracker{
730-
Controller: externalfake.Controller{},
731-
Cache: &informertest.FakeInformers{},
732-
Scheme: fakeClient.Scheme(),
742+
Controller: externalfake.Controller{},
743+
Cache: &informertest.FakeInformers{},
744+
Scheme: fakeClient.Scheme(),
745+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
733746
},
734747
}
735748

@@ -1049,9 +1062,10 @@ func TestReconcileMachinePoolBootstrap(t *testing.T) {
10491062
r := &MachinePoolReconciler{
10501063
Client: fakeClient,
10511064
externalTracker: external.ObjectTracker{
1052-
Controller: externalfake.Controller{},
1053-
Cache: &informertest.FakeInformers{},
1054-
Scheme: fakeClient.Scheme(),
1065+
Controller: externalfake.Controller{},
1066+
Cache: &informertest.FakeInformers{},
1067+
Scheme: fakeClient.Scheme(),
1068+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
10551069
},
10561070
}
10571071

@@ -1349,9 +1363,10 @@ func TestReconcileMachinePoolInfrastructure(t *testing.T) {
13491363
Client: fakeClient,
13501364
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: defaultCluster.Name, Namespace: defaultCluster.Namespace}),
13511365
externalTracker: external.ObjectTracker{
1352-
Controller: externalfake.Controller{},
1353-
Cache: &informertest.FakeInformers{},
1354-
Scheme: fakeClient.Scheme(),
1366+
Controller: externalfake.Controller{},
1367+
Cache: &informertest.FakeInformers{},
1368+
Scheme: fakeClient.Scheme(),
1369+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
13551370
},
13561371
}
13571372

@@ -1437,9 +1452,10 @@ func TestReconcileMachinePoolMachines(t *testing.T) {
14371452
Client: env,
14381453
ssaCache: ssa.NewCache(),
14391454
externalTracker: external.ObjectTracker{
1440-
Controller: externalfake.Controller{},
1441-
Cache: &informertest.FakeInformers{},
1442-
Scheme: env.Scheme(),
1455+
Controller: externalfake.Controller{},
1456+
Cache: &informertest.FakeInformers{},
1457+
Scheme: env.Scheme(),
1458+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
14431459
},
14441460
}
14451461
scope := &scope{
@@ -1505,9 +1521,10 @@ func TestReconcileMachinePoolMachines(t *testing.T) {
15051521
Client: env,
15061522
ssaCache: ssa.NewCache(),
15071523
externalTracker: external.ObjectTracker{
1508-
Controller: externalfake.Controller{},
1509-
Cache: &informertest.FakeInformers{},
1510-
Scheme: env.Scheme(),
1524+
Controller: externalfake.Controller{},
1525+
Cache: &informertest.FakeInformers{},
1526+
Scheme: env.Scheme(),
1527+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
15111528
},
15121529
}
15131530

@@ -1868,9 +1885,10 @@ func TestReconcileMachinePoolScaleToFromZero(t *testing.T) {
18681885
ClusterCache: clustercache.NewFakeClusterCache(env.GetClient(), client.ObjectKey{Name: testCluster.Name, Namespace: testCluster.Namespace}),
18691886
recorder: record.NewFakeRecorder(32),
18701887
externalTracker: external.ObjectTracker{
1871-
Controller: externalfake.Controller{},
1872-
Cache: &informertest.FakeInformers{},
1873-
Scheme: fakeClient.Scheme(),
1888+
Controller: externalfake.Controller{},
1889+
Cache: &informertest.FakeInformers{},
1890+
Scheme: fakeClient.Scheme(),
1891+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
18741892
},
18751893
}
18761894

@@ -1935,9 +1953,10 @@ func TestReconcileMachinePoolScaleToFromZero(t *testing.T) {
19351953
ClusterCache: clustercache.NewFakeClusterCache(env.GetClient(), client.ObjectKey{Name: testCluster.Name, Namespace: testCluster.Namespace}),
19361954
recorder: record.NewFakeRecorder(32),
19371955
externalTracker: external.ObjectTracker{
1938-
Controller: externalfake.Controller{},
1939-
Cache: &informertest.FakeInformers{},
1940-
Scheme: fakeClient.Scheme(),
1956+
Controller: externalfake.Controller{},
1957+
Cache: &informertest.FakeInformers{},
1958+
Scheme: fakeClient.Scheme(),
1959+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
19411960
},
19421961
}
19431962

@@ -1985,9 +2004,10 @@ func TestReconcileMachinePoolScaleToFromZero(t *testing.T) {
19852004
recorder: record.NewFakeRecorder(32),
19862005
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: testCluster.Name, Namespace: testCluster.Namespace}),
19872006
externalTracker: external.ObjectTracker{
1988-
Controller: externalfake.Controller{},
1989-
Cache: &informertest.FakeInformers{},
1990-
Scheme: fakeClient.Scheme(),
2007+
Controller: externalfake.Controller{},
2008+
Cache: &informertest.FakeInformers{},
2009+
Scheme: fakeClient.Scheme(),
2010+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
19912011
},
19922012
}
19932013

@@ -2031,9 +2051,10 @@ func TestReconcileMachinePoolScaleToFromZero(t *testing.T) {
20312051
recorder: record.NewFakeRecorder(32),
20322052
ClusterCache: clustercache.NewFakeClusterCache(fakeClient, client.ObjectKey{Name: testCluster.Name, Namespace: testCluster.Namespace}),
20332053
externalTracker: external.ObjectTracker{
2034-
Controller: externalfake.Controller{},
2035-
Cache: &informertest.FakeInformers{},
2036-
Scheme: fakeClient.Scheme(),
2054+
Controller: externalfake.Controller{},
2055+
Cache: &informertest.FakeInformers{},
2056+
Scheme: fakeClient.Scheme(),
2057+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
20372058
},
20382059
}
20392060

@@ -2099,9 +2120,10 @@ func TestReconcileMachinePoolScaleToFromZero(t *testing.T) {
20992120
ClusterCache: clustercache.NewFakeClusterCache(env.GetClient(), client.ObjectKey{Name: testCluster.Name, Namespace: testCluster.Namespace}),
21002121
recorder: record.NewFakeRecorder(32),
21012122
externalTracker: external.ObjectTracker{
2102-
Controller: externalfake.Controller{},
2103-
Cache: &informertest.FakeInformers{},
2104-
Scheme: fakeClient.Scheme(),
2123+
Controller: externalfake.Controller{},
2124+
Cache: &informertest.FakeInformers{},
2125+
Scheme: fakeClient.Scheme(),
2126+
PredicateLogger: ptr.To(logr.New(log.NullLogSink{})),
21052127
},
21062128
}
21072129

0 commit comments

Comments
 (0)