Skip to content

Commit 2afb5cd

Browse files
committed
Add scheme as struct member for tracker
1 parent 5085785 commit 2afb5cd

File tree

10 files changed

+18
-15
lines changed

10 files changed

+18
-15
lines changed

controllers/external/tracker.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,11 @@ type ObjectTracker struct {
3939

4040
Controller controller.Controller
4141
Cache cache.Cache
42+
Scheme *runtime.Scheme
4243
}
4344

4445
// Watch uses the controller to issue a Watch only if the object hasn't been seen before.
45-
func (o *ObjectTracker) Watch(scheme *runtime.Scheme, log logr.Logger, obj client.Object, handler handler.EventHandler, p ...predicate.Predicate) error {
46+
func (o *ObjectTracker) Watch(log logr.Logger, obj client.Object, handler handler.EventHandler, p ...predicate.Predicate) error {
4647
// Consider this a no-op if the controller isn't present.
4748
if o.Controller == nil {
4849
return nil
@@ -59,7 +60,7 @@ func (o *ObjectTracker) Watch(scheme *runtime.Scheme, log logr.Logger, obj clien
5960
o.Cache,
6061
obj.DeepCopyObject().(client.Object),
6162
handler,
62-
append(p, predicates.ResourceNotPaused(scheme, log))...,
63+
append(p, predicates.ResourceNotPaused(o.Scheme, log))...,
6364
))
6465
if err != nil {
6566
o.m.Delete(key)

controllers/external/tracker_test.go

+4-7
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
. "github.com/onsi/gomega"
2424
"github.com/pkg/errors"
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26-
"k8s.io/apimachinery/pkg/runtime"
2726
"sigs.k8s.io/controller-runtime/pkg/controller"
2827
"sigs.k8s.io/controller-runtime/pkg/log"
2928
"sigs.k8s.io/controller-runtime/pkg/source"
@@ -67,12 +66,11 @@ func TestRetryWatch(t *testing.T) {
6766
ctrl := newWatchCountController(true)
6867
tracker := ObjectTracker{Controller: ctrl}
6968

70-
scheme := runtime.NewScheme()
71-
err := tracker.Watch(scheme, logger, &clusterv1.Cluster{}, nil)
69+
err := tracker.Watch(logger, &clusterv1.Cluster{}, nil)
7270
g.Expect(err).To(HaveOccurred())
7371
g.Expect(ctrl.count).Should(Equal(1))
7472
// Calling Watch on same Object kind that failed earlier should be retryable.
75-
err = tracker.Watch(scheme, logger, &clusterv1.Cluster{}, nil)
73+
err = tracker.Watch(logger, &clusterv1.Cluster{}, nil)
7674
g.Expect(err).To(HaveOccurred())
7775
g.Expect(ctrl.count).Should(Equal(2))
7876
}
@@ -88,12 +86,11 @@ func TestWatchMultipleTimes(t *testing.T) {
8886
APIVersion: clusterv1.GroupVersion.Version,
8987
},
9088
}
91-
scheme := runtime.NewScheme()
92-
err := tracker.Watch(scheme, logger, obj, nil)
89+
err := tracker.Watch(logger, obj, nil)
9390
g.Expect(err).ToNot(HaveOccurred())
9491
g.Expect(ctrl.count).Should(Equal(1))
9592
// Calling Watch on same Object kind should not register watch again.
96-
err = tracker.Watch(scheme, logger, obj, nil)
93+
err = tracker.Watch(logger, obj, nil)
9794
g.Expect(err).ToNot(HaveOccurred())
9895
g.Expect(ctrl.count).Should(Equal(1))
9996
}

exp/internal/controllers/machinepool_controller.go

+1
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ func (r *MachinePoolReconciler) SetupWithManager(ctx context.Context, mgr ctrl.M
130130
r.externalTracker = external.ObjectTracker{
131131
Controller: c,
132132
Cache: mgr.GetCache(),
133+
Scheme: mgr.GetScheme(),
133134
}
134135
r.ssaCache = ssa.NewCache()
135136

exp/internal/controllers/machinepool_controller_phases.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func (r *MachinePoolReconciler) reconcileExternal(ctx context.Context, cluster *
123123
}
124124

125125
// Ensure we add a watch to the external object, if there isn't one already.
126-
if err := r.externalTracker.Watch(r.Client.Scheme(), log, obj, handler.EnqueueRequestForOwner(r.Client.Scheme(), r.Client.RESTMapper(), &expv1.MachinePool{})); err != nil {
126+
if err := r.externalTracker.Watch(log, obj, handler.EnqueueRequestForOwner(r.Client.Scheme(), r.Client.RESTMapper(), &expv1.MachinePool{})); err != nil {
127127
return external.ReconcileOutput{}, err
128128
}
129129

@@ -379,7 +379,7 @@ func (r *MachinePoolReconciler) reconcileMachines(ctx context.Context, s *scope,
379379
sampleInfraMachine.SetKind(infraMachineKind)
380380

381381
// Add watcher for infraMachine, if there isn't one already.
382-
if err := r.externalTracker.Watch(r.Client.Scheme(), log, sampleInfraMachine, handler.EnqueueRequestsFromMapFunc(r.infraMachineToMachinePoolMapper)); err != nil {
382+
if err := r.externalTracker.Watch(log, sampleInfraMachine, handler.EnqueueRequestsFromMapFunc(r.infraMachineToMachinePoolMapper)); err != nil {
383383
return err
384384
}
385385

internal/controllers/cluster/cluster_controller.go

+1
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, opt
9999
r.externalTracker = external.ObjectTracker{
100100
Controller: c,
101101
Cache: mgr.GetCache(),
102+
Scheme: mgr.GetScheme(),
102103
}
103104
return nil
104105
}

internal/controllers/cluster/cluster_controller_phases.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (r *Reconciler) reconcileExternal(ctx context.Context, cluster *clusterv1.C
9393
}
9494

9595
// Ensure we add a watcher to the external object.
96-
if err := r.externalTracker.Watch(r.Client.Scheme(), log, obj, handler.EnqueueRequestForOwner(r.Client.Scheme(), r.Client.RESTMapper(), &clusterv1.Cluster{})); err != nil {
96+
if err := r.externalTracker.Watch(log, obj, handler.EnqueueRequestForOwner(r.Client.Scheme(), r.Client.RESTMapper(), &clusterv1.Cluster{})); err != nil {
9797
return external.ReconcileOutput{}, err
9898
}
9999

internal/controllers/machine/machine_controller.go

+1
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, opt
151151
r.externalTracker = external.ObjectTracker{
152152
Controller: c,
153153
Cache: mgr.GetCache(),
154+
Scheme: mgr.GetScheme(),
154155
}
155156
r.ssaCache = ssa.NewCache()
156157
r.drainCache = drain.NewCache()

internal/controllers/machine/machine_controller_phases.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ func (r *Reconciler) ensureExternalOwnershipAndWatch(ctx context.Context, cluste
135135
}
136136

137137
// Ensure we add a watch to the external object, if there isn't one already.
138-
if err := r.externalTracker.Watch(r.Client.Scheme(), log, obj, handler.EnqueueRequestForOwner(r.Client.Scheme(), r.Client.RESTMapper(), &clusterv1.Machine{})); err != nil {
138+
if err := r.externalTracker.Watch(log, obj, handler.EnqueueRequestForOwner(r.Client.Scheme(), r.Client.RESTMapper(), &clusterv1.Machine{})); err != nil {
139139
return external.ReconcileOutput{}, err
140140
}
141141

internal/controllers/topology/cluster/cluster_controller.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ func (r *Reconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, opt
121121
r.externalTracker = external.ObjectTracker{
122122
Controller: c,
123123
Cache: mgr.GetCache(),
124+
Scheme: mgr.GetScheme(),
124125
}
125126
r.desiredStateGenerator = desiredstate.NewGenerator(r.Client, r.Tracker, r.RuntimeClient)
126127
r.recorder = mgr.GetEventRecorderFor("topology/cluster-controller")
@@ -295,15 +296,15 @@ func (r *Reconciler) reconcile(ctx context.Context, s *scope.Scope) (ctrl.Result
295296
// setupDynamicWatches create watches for InfrastructureCluster and ControlPlane CRs when they exist.
296297
func (r *Reconciler) setupDynamicWatches(ctx context.Context, s *scope.Scope) error {
297298
if s.Current.InfrastructureCluster != nil {
298-
if err := r.externalTracker.Watch(r.Client.Scheme(), ctrl.LoggerFrom(ctx), s.Current.InfrastructureCluster,
299+
if err := r.externalTracker.Watch(ctrl.LoggerFrom(ctx), s.Current.InfrastructureCluster,
299300
handler.EnqueueRequestForOwner(r.Client.Scheme(), r.Client.RESTMapper(), &clusterv1.Cluster{}),
300301
// Only trigger Cluster reconciliation if the InfrastructureCluster is topology owned.
301302
predicates.ResourceIsTopologyOwned(ctrl.LoggerFrom(ctx))); err != nil {
302303
return errors.Wrap(err, "error watching Infrastructure CR")
303304
}
304305
}
305306
if s.Current.ControlPlane.Object != nil {
306-
if err := r.externalTracker.Watch(r.Client.Scheme(), ctrl.LoggerFrom(ctx), s.Current.ControlPlane.Object,
307+
if err := r.externalTracker.Watch(ctrl.LoggerFrom(ctx), s.Current.ControlPlane.Object,
307308
handler.EnqueueRequestForOwner(r.Client.Scheme(), r.Client.RESTMapper(), &clusterv1.Cluster{}),
308309
// Only trigger Cluster reconciliation if the ControlPlane is topology owned.
309310
predicates.ResourceIsTopologyOwned(ctrl.LoggerFrom(ctx))); err != nil {

test/infrastructure/docker/exp/internal/controllers/dockermachinepool_controller.go

+1
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ func (r *DockerMachinePoolReconciler) SetupWithManager(ctx context.Context, mgr
201201
r.externalTracker = external.ObjectTracker{
202202
Controller: c,
203203
Cache: mgr.GetCache(),
204+
Scheme: mgr.GetScheme(),
204205
}
205206
r.ssaCache = ssa.NewCache()
206207

0 commit comments

Comments
 (0)