Skip to content

Commit e7f1621

Browse files
committed
controller/machine: use unstructured caching client
Signed-off-by: Stefan Büringer [email protected]
1 parent e8eb540 commit e7f1621

File tree

11 files changed

+115
-81
lines changed

11 files changed

+115
-81
lines changed

controllers/alias.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,22 @@ func (r *ClusterReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manag
5858

5959
// MachineReconciler reconciles a Machine object.
6060
type MachineReconciler struct {
61-
Client client.Client
62-
APIReader client.Reader
63-
Tracker *remote.ClusterCacheTracker
61+
Client client.Client
62+
UnstructuredCachingClient client.Client
63+
APIReader client.Reader
64+
Tracker *remote.ClusterCacheTracker
6465

6566
// WatchFilterValue is the label value used to filter events prior to reconciliation.
6667
WatchFilterValue string
6768
}
6869

6970
func (r *MachineReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, options controller.Options) error {
7071
return (&machinecontroller.Reconciler{
71-
Client: r.Client,
72-
APIReader: r.APIReader,
73-
Tracker: r.Tracker,
74-
WatchFilterValue: r.WatchFilterValue,
72+
Client: r.Client,
73+
UnstructuredCachingClient: r.UnstructuredCachingClient,
74+
APIReader: r.APIReader,
75+
Tracker: r.Tracker,
76+
WatchFilterValue: r.WatchFilterValue,
7577
}).SetupWithManager(ctx, mgr, options)
7678
}
7779

internal/controllers/cluster/suite_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,10 @@ func TestMain(m *testing.M) {
8888
panic(fmt.Sprintf("Failed to start ClusterReconciler: %v", err))
8989
}
9090
if err := (&machinecontroller.Reconciler{
91-
Client: mgr.GetClient(),
92-
APIReader: mgr.GetAPIReader(),
93-
Tracker: tracker,
91+
Client: mgr.GetClient(),
92+
UnstructuredCachingClient: mgr.GetClient(),
93+
APIReader: mgr.GetAPIReader(),
94+
Tracker: tracker,
9495
}).SetupWithManager(ctx, mgr, controller.Options{MaxConcurrentReconciles: 1}); err != nil {
9596
panic(fmt.Sprintf("Failed to start MachineReconciler: %v", err))
9697
}

internal/controllers/machine/machine_controller.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,10 @@ var (
7373

7474
// Reconciler reconciles a Machine object.
7575
type Reconciler struct {
76-
Client client.Client
77-
APIReader client.Reader
78-
Tracker *remote.ClusterCacheTracker
76+
Client client.Client
77+
UnstructuredCachingClient client.Client
78+
APIReader client.Reader
79+
Tracker *remote.ClusterCacheTracker
7980

8081
// WatchFilterValue is the label value used to filter events prior to reconciliation.
8182
WatchFilterValue string
@@ -755,7 +756,7 @@ func (r *Reconciler) reconcileDeleteExternal(ctx context.Context, m *clusterv1.M
755756
}
756757

757758
// get the external object
758-
obj, err := external.Get(ctx, r.Client, ref, m.Namespace)
759+
obj, err := external.Get(ctx, r.UnstructuredCachingClient, ref, m.Namespace)
759760
if err != nil && !apierrors.IsNotFound(errors.Cause(err)) {
760761
return nil, errors.Wrapf(err, "failed to get %s %q for Machine %q in namespace %q",
761762
ref.GroupVersionKind(), ref.Name, m.Name, m.Namespace)

internal/controllers/machine/machine_controller_noderef_test.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,9 @@ func TestGetNode(t *testing.T) {
132132
g.Expect(err).ToNot(HaveOccurred())
133133

134134
r := &Reconciler{
135-
Tracker: tracker,
136-
Client: env,
135+
Tracker: tracker,
136+
Client: env,
137+
UnstructuredCachingClient: env,
137138
}
138139

139140
w, err := ctrl.NewControllerManagedBy(env.Manager).For(&corev1.Node{}).Build(r)
@@ -740,7 +741,10 @@ func TestPatchNode(t *testing.T) {
740741
},
741742
}
742743

743-
r := Reconciler{Client: env}
744+
r := Reconciler{
745+
Client: env,
746+
UnstructuredCachingClient: env,
747+
}
744748
for _, tc := range testCases {
745749
t.Run(tc.name, func(t *testing.T) {
746750
g := NewWithT(t)

internal/controllers/machine/machine_controller_phases.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func (r *Reconciler) reconcileExternal(ctx context.Context, cluster *clusterv1.C
9595
return external.ReconcileOutput{}, err
9696
}
9797

98-
obj, err := external.Get(ctx, r.Client, ref, m.Namespace)
98+
obj, err := external.Get(ctx, r.UnstructuredCachingClient, ref, m.Namespace)
9999
if err != nil {
100100
if apierrors.IsNotFound(errors.Cause(err)) {
101101
log.Info("could not find external ref, requeuing", ref.Kind, klog.KRef(ref.Namespace, ref.Name))

internal/controllers/machine/machine_controller_phases_test.go

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -900,13 +900,15 @@ func TestReconcileBootstrap(t *testing.T) {
900900
}
901901

902902
bootstrapConfig := &unstructured.Unstructured{Object: tc.bootstrapConfig}
903+
c := fake.NewClientBuilder().
904+
WithObjects(tc.machine,
905+
builder.GenericBootstrapConfigCRD.DeepCopy(),
906+
builder.GenericInfrastructureMachineCRD.DeepCopy(),
907+
bootstrapConfig,
908+
).Build()
903909
r := &Reconciler{
904-
Client: fake.NewClientBuilder().
905-
WithObjects(tc.machine,
906-
builder.GenericBootstrapConfigCRD.DeepCopy(),
907-
builder.GenericInfrastructureMachineCRD.DeepCopy(),
908-
bootstrapConfig,
909-
).Build(),
910+
Client: c,
911+
UnstructuredCachingClient: c,
910912
}
911913

912914
s := &scope{cluster: defaultCluster, machine: tc.machine}
@@ -1111,13 +1113,15 @@ func TestReconcileInfrastructure(t *testing.T) {
11111113
}
11121114

11131115
infraConfig := &unstructured.Unstructured{Object: tc.infraConfig}
1116+
c := fake.NewClientBuilder().
1117+
WithObjects(tc.machine,
1118+
builder.GenericBootstrapConfigCRD.DeepCopy(),
1119+
builder.GenericInfrastructureMachineCRD.DeepCopy(),
1120+
infraConfig,
1121+
).Build()
11141122
r := &Reconciler{
1115-
Client: fake.NewClientBuilder().
1116-
WithObjects(tc.machine,
1117-
builder.GenericBootstrapConfigCRD.DeepCopy(),
1118-
builder.GenericInfrastructureMachineCRD.DeepCopy(),
1119-
infraConfig,
1120-
).Build(),
1123+
Client: c,
1124+
UnstructuredCachingClient: c,
11211125
}
11221126
s := &scope{cluster: defaultCluster, machine: tc.machine}
11231127
result, err := r.reconcileInfrastructure(ctx, s)

internal/controllers/machine/machine_controller_test.go

Lines changed: 48 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -389,12 +389,14 @@ func TestMachineFinalizer(t *testing.T) {
389389
t.Run(tc.name, func(t *testing.T) {
390390
g := NewWithT(t)
391391

392+
c := fake.NewClientBuilder().WithObjects(
393+
clusterCorrectMeta,
394+
machineValidCluster,
395+
machineWithFinalizer,
396+
).Build()
392397
mr := &Reconciler{
393-
Client: fake.NewClientBuilder().WithObjects(
394-
clusterCorrectMeta,
395-
machineValidCluster,
396-
machineWithFinalizer,
397-
).Build(),
398+
Client: c,
399+
UnstructuredCachingClient: c,
398400
}
399401

400402
_, _ = mr.Reconcile(ctx, tc.request)
@@ -556,8 +558,9 @@ func TestMachineOwnerReference(t *testing.T) {
556558
machineValidControlled,
557559
).WithStatusSubresource(&clusterv1.Machine{}).Build()
558560
mr := &Reconciler{
559-
Client: c,
560-
APIReader: c,
561+
Client: c,
562+
UnstructuredCachingClient: c,
563+
APIReader: c,
561564
}
562565

563566
key := client.ObjectKey{Namespace: tc.m.Namespace, Name: tc.m.Name}
@@ -727,9 +730,10 @@ func TestReconcileRequest(t *testing.T) {
727730
).WithStatusSubresource(&clusterv1.Machine{}).WithIndex(&corev1.Node{}, index.NodeProviderIDField, index.NodeByProviderID).Build()
728731

729732
r := &Reconciler{
730-
Client: clientFake,
731-
Tracker: remote.NewTestClusterCacheTracker(logr.New(log.NullLogSink{}), clientFake, scheme.Scheme, client.ObjectKey{Name: testCluster.Name, Namespace: testCluster.Namespace}),
732-
ssaCache: ssa.NewCache(),
733+
Client: clientFake,
734+
UnstructuredCachingClient: clientFake,
735+
Tracker: remote.NewTestClusterCacheTracker(logr.New(log.NullLogSink{}), clientFake, scheme.Scheme, client.ObjectKey{Name: testCluster.Name, Namespace: testCluster.Namespace}),
736+
ssaCache: ssa.NewCache(),
733737
}
734738

735739
result, err := r.Reconcile(ctx, reconcile.Request{NamespacedName: util.ObjectKey(&tc.machine)})
@@ -975,9 +979,10 @@ func TestMachineConditions(t *testing.T) {
975979
Build()
976980

977981
r := &Reconciler{
978-
Client: clientFake,
979-
Tracker: remote.NewTestClusterCacheTracker(logr.New(log.NullLogSink{}), clientFake, scheme.Scheme, client.ObjectKey{Name: testCluster.Name, Namespace: testCluster.Namespace}),
980-
ssaCache: ssa.NewCache(),
982+
Client: clientFake,
983+
UnstructuredCachingClient: clientFake,
984+
Tracker: remote.NewTestClusterCacheTracker(logr.New(log.NullLogSink{}), clientFake, scheme.Scheme, client.ObjectKey{Name: testCluster.Name, Namespace: testCluster.Namespace}),
985+
ssaCache: ssa.NewCache(),
981986
}
982987

983988
_, err := r.Reconcile(ctx, reconcile.Request{NamespacedName: util.ObjectKey(&machine)})
@@ -1064,8 +1069,10 @@ func TestReconcileDeleteExternal(t *testing.T) {
10641069
objs = append(objs, bootstrapConfig)
10651070
}
10661071

1072+
c := fake.NewClientBuilder().WithObjects(objs...).Build()
10671073
r := &Reconciler{
1068-
Client: fake.NewClientBuilder().WithObjects(objs...).Build(),
1074+
Client: c,
1075+
UnstructuredCachingClient: c,
10691076
}
10701077

10711078
obj, err := r.reconcileDeleteExternal(ctx, machine, machine.Spec.Bootstrap.ConfigRef)
@@ -1106,8 +1113,10 @@ func TestRemoveMachineFinalizerAfterDeleteReconcile(t *testing.T) {
11061113
},
11071114
}
11081115
key := client.ObjectKey{Namespace: m.Namespace, Name: m.Name}
1116+
c := fake.NewClientBuilder().WithObjects(testCluster, m).WithStatusSubresource(&clusterv1.Machine{}).Build()
11091117
mr := &Reconciler{
1110-
Client: fake.NewClientBuilder().WithObjects(testCluster, m).WithStatusSubresource(&clusterv1.Machine{}).Build(),
1118+
Client: c,
1119+
UnstructuredCachingClient: c,
11111120
}
11121121
_, err := mr.Reconcile(ctx, reconcile.Request{NamespacedName: key})
11131122
g.Expect(err).ToNot(HaveOccurred())
@@ -1232,8 +1241,10 @@ func TestIsNodeDrainedAllowed(t *testing.T) {
12321241
var objs []client.Object
12331242
objs = append(objs, testCluster, tt.machine)
12341243

1244+
c := fake.NewClientBuilder().WithObjects(objs...).Build()
12351245
r := &Reconciler{
1236-
Client: fake.NewClientBuilder().WithObjects(objs...).Build(),
1246+
Client: c,
1247+
UnstructuredCachingClient: c,
12371248
}
12381249

12391250
got := r.isNodeDrainAllowed(tt.machine)
@@ -1357,8 +1368,10 @@ func TestIsNodeVolumeDetachingAllowed(t *testing.T) {
13571368
var objs []client.Object
13581369
objs = append(objs, testCluster, tt.machine)
13591370

1371+
c := fake.NewClientBuilder().WithObjects(objs...).Build()
13601372
r := &Reconciler{
1361-
Client: fake.NewClientBuilder().WithObjects(objs...).Build(),
1373+
Client: c,
1374+
UnstructuredCachingClient: c,
13621375
}
13631376

13641377
got := r.isNodeVolumeDetachingAllowed(tt.machine)
@@ -1709,16 +1722,18 @@ func TestIsDeleteNodeAllowed(t *testing.T) {
17091722
m2.Labels[clusterv1.MachineControlPlaneLabel] = ""
17101723
}
17111724

1725+
c := fake.NewClientBuilder().WithObjects(
1726+
tc.cluster,
1727+
tc.machine,
1728+
m1,
1729+
m2,
1730+
emp,
1731+
mcpBeingDeleted,
1732+
empBeingDeleted,
1733+
).Build()
17121734
mr := &Reconciler{
1713-
Client: fake.NewClientBuilder().WithObjects(
1714-
tc.cluster,
1715-
tc.machine,
1716-
m1,
1717-
m2,
1718-
emp,
1719-
mcpBeingDeleted,
1720-
empBeingDeleted,
1721-
).Build(),
1735+
Client: c,
1736+
UnstructuredCachingClient: c,
17221737
}
17231738

17241739
err := mr.isDeleteNodeAllowed(ctx, tc.cluster, tc.machine)
@@ -1981,7 +1996,8 @@ func TestNodeToMachine(t *testing.T) {
19811996
}
19821997

19831998
r := &Reconciler{
1984-
Client: env,
1999+
Client: env,
2000+
UnstructuredCachingClient: env,
19852001
}
19862002
for _, node := range fakeNodes {
19872003
request := r.nodeToMachine(ctx, node)
@@ -2159,10 +2175,11 @@ func TestNodeDeletion(t *testing.T) {
21592175
tracker := remote.NewTestClusterCacheTracker(ctrl.Log, fakeClient, fakeScheme, client.ObjectKeyFromObject(&testCluster))
21602176

21612177
r := &Reconciler{
2162-
Client: fakeClient,
2163-
Tracker: tracker,
2164-
recorder: record.NewFakeRecorder(10),
2165-
nodeDeletionRetryTimeout: 10 * time.Millisecond,
2178+
Client: fakeClient,
2179+
UnstructuredCachingClient: fakeClient,
2180+
Tracker: tracker,
2181+
recorder: record.NewFakeRecorder(10),
2182+
nodeDeletionRetryTimeout: 10 * time.Millisecond,
21662183
}
21672184

21682185
cluster := testCluster.DeepCopy()

internal/controllers/machine/suite_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,10 @@ func TestMain(m *testing.M) {
8787
panic(fmt.Sprintf("Failed to start ClusterCacheReconciler: %v", err))
8888
}
8989
if err := (&Reconciler{
90-
Client: mgr.GetClient(),
91-
APIReader: mgr.GetAPIReader(),
92-
Tracker: tracker,
90+
Client: mgr.GetClient(),
91+
UnstructuredCachingClient: mgr.GetClient(),
92+
APIReader: mgr.GetAPIReader(),
93+
Tracker: tracker,
9394
}).SetupWithManager(ctx, mgr, controller.Options{MaxConcurrentReconciles: 1}); err != nil {
9495
panic(fmt.Sprintf("Failed to start MachineReconciler: %v", err))
9596
}

internal/controllers/machinehealthcheck/suite_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,10 @@ func TestMain(m *testing.M) {
9797
panic(fmt.Sprintf("Failed to start Reconciler : %v", err))
9898
}
9999
if err := (&machinecontroller.Reconciler{
100-
Client: mgr.GetClient(),
101-
APIReader: mgr.GetAPIReader(),
102-
Tracker: tracker,
100+
Client: mgr.GetClient(),
101+
UnstructuredCachingClient: mgr.GetClient(),
102+
APIReader: mgr.GetAPIReader(),
103+
Tracker: tracker,
103104
}).SetupWithManager(ctx, mgr, controller.Options{MaxConcurrentReconciles: 1}); err != nil {
104105
panic(fmt.Sprintf("Failed to start MachineReconciler: %v", err))
105106
}

internal/controllers/machineset/suite_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,10 @@ func TestMain(m *testing.M) {
9696
panic(fmt.Sprintf("Failed to start MMachineSetReconciler: %v", err))
9797
}
9898
if err := (&machinecontroller.Reconciler{
99-
Client: mgr.GetClient(),
100-
APIReader: mgr.GetAPIReader(),
101-
Tracker: tracker,
99+
Client: mgr.GetClient(),
100+
UnstructuredCachingClient: mgr.GetClient(),
101+
APIReader: mgr.GetAPIReader(),
102+
Tracker: tracker,
102103
}).SetupWithManager(ctx, mgr, controller.Options{MaxConcurrentReconciles: 1}); err != nil {
103104
panic(fmt.Sprintf("Failed to start MachineReconciler: %v", err))
104105
}

0 commit comments

Comments
 (0)