Skip to content

Commit c65cb7f

Browse files
committed
removing finalizer manager method
1 parent 2705990 commit c65cb7f

File tree

2 files changed

+29
-14
lines changed

2 files changed

+29
-14
lines changed

controllers/crds/cninode_controller.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ func (r *CNINodeReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
133133

134134
if cniNode.GetDeletionTimestamp().IsZero() {
135135
cniNodeCopy := cniNode.DeepCopy()
136-
shouldPatch, err := r.ensureTagsAndLables(cniNodeCopy, node, nodeFound)
136+
shouldPatch, err := r.ensureTagsAndLabels(cniNodeCopy, node, nodeFound)
137137
shouldPatch = r.ensureFinalizer(cniNodeCopy) || shouldPatch
138138

139139
if shouldPatch {
@@ -164,8 +164,11 @@ func (r *CNINodeReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
164164
}
165165
}
166166

167-
if err := r.finalizerManager.RemoveFinalizers(ctx, cniNode, config.NodeTerminationFinalizer); err != nil {
167+
if err := r.removeFinalizers(ctx, cniNode, config.NodeTerminationFinalizer); err != nil {
168168
r.log.Error(err, "failed to remove finalizer on CNINode, will retry", "cniNode", cniNode.Name, "finalizer", config.NodeTerminationFinalizer)
169+
if apierrors.IsConflict(err) {
170+
return ctrl.Result{Requeue: true}, nil
171+
}
169172
return ctrl.Result{}, err
170173
}
171174
return ctrl.Result{}, nil
@@ -185,7 +188,7 @@ func (r *CNINodeReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
185188
Spec: cniNode.Spec,
186189
}
187190

188-
if err := r.finalizerManager.RemoveFinalizers(ctx, cniNode, config.NodeTerminationFinalizer); err != nil {
191+
if err := r.removeFinalizers(ctx, cniNode, config.NodeTerminationFinalizer); err != nil {
189192
r.log.Error(err, "failed to remove finalizer on CNINode, will retry")
190193
return ctrl.Result{}, err
191194
}
@@ -255,7 +258,7 @@ func (r *CNINodeReconciler) GetNodeID(node *v1.Node) (string, error) {
255258
return "", fmt.Errorf("invalid provider ID format for node %s, with providerId", node.Spec.ProviderID)
256259
}
257260

258-
func (r *CNINodeReconciler) ensureTagsAndLables(cniNode *v1alpha1.CNINode, node *v1.Node, nodeFound bool) (bool, error) {
261+
func (r *CNINodeReconciler) ensureTagsAndLabels(cniNode *v1alpha1.CNINode, node *v1.Node, nodeFound bool) (bool, error) {
259262
shouldPatch := false
260263
var err error
261264
if cniNode.Spec.Tags == nil {
@@ -296,3 +299,19 @@ func (r *CNINodeReconciler) ensureFinalizer(cniNode *v1alpha1.CNINode) bool {
296299
}
297300
return shouldPatch
298301
}
302+
303+
func (r *CNINodeReconciler) removeFinalizers(ctx context.Context, cniNode *v1alpha1.CNINode, finalizer string) error {
304+
cniNodeCopy := cniNode.DeepCopy()
305+
needsUpdate := false
306+
307+
if controllerutil.ContainsFinalizer(cniNodeCopy, finalizer) {
308+
r.log.Info("removing finalizer for cninode", "name", cniNode.GetName(), "finalizer", finalizer)
309+
controllerutil.RemoveFinalizer(cniNodeCopy, finalizer)
310+
needsUpdate = true
311+
}
312+
313+
if !needsUpdate {
314+
return nil
315+
}
316+
return r.Client.Patch(ctx, cniNodeCopy, client.MergeFromWithOptions(cniNode, client.MergeFromWithOptimisticLock{}))
317+
}

controllers/crds/cninode_controller_test.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,6 @@ func TestCNINodeReconcile(t *testing.T) {
121121
return f.mockResourceCleaner
122122
}
123123
f.mockResourceCleaner.EXPECT().DeleteLeakedResources().Times(0)
124-
125-
f.mockFinalizerManager.EXPECT().
126-
RemoveFinalizers(gomock.Any(), gomock.Any(), config.NodeTerminationFinalizer).
127-
Return(nil)
128124
},
129125
asserts: func(res reconcile.Result, err error, cniNode *v1alpha1.CNINode) {
130126
assert.NoError(t, err)
@@ -157,9 +153,6 @@ func TestCNINodeReconcile(t *testing.T) {
157153
return f.mockResourceCleaner
158154
}
159155
f.mockResourceCleaner.EXPECT().DeleteLeakedResources().Times(1).Return(nil)
160-
f.mockFinalizerManager.EXPECT().
161-
RemoveFinalizers(gomock.Any(), gomock.Any(), config.NodeTerminationFinalizer).
162-
Return(nil)
163156

164157
},
165158
asserts: func(res reconcile.Result, err error, cniNode *v1alpha1.CNINode) {
@@ -180,7 +173,7 @@ func TestCNINodeReconcile(t *testing.T) {
180173
},
181174
Spec: v1alpha1.CNINodeSpec{
182175
Tags: map[string]string{
183-
config.VPCCNIClusterNameKey: mockClusterName,
176+
config.VPCCNIClusterNameKey: mockClusterName,
184177
config.NetworkInterfaceNodeIDKey: "i-1234567890",
185178
},
186179
},
@@ -193,6 +186,7 @@ func TestCNINodeReconcile(t *testing.T) {
193186
assert.Contains(t, cniNode.Finalizers, config.NodeTerminationFinalizer)
194187
},
195188
},
189+
196190
}
197191
for _, tt := range tests {
198192
t.Run(tt.name, func(t *testing.T) {
@@ -218,8 +212,10 @@ func TestCNINodeReconcile(t *testing.T) {
218212
res, err := mock.Reconciler.Reconcile(context.Background(), reconcileRequest)
219213

220214
cniNode := &v1alpha1.CNINode{}
221-
getErr := mock.Reconciler.Client.Get(context.Background(), reconcileRequest.NamespacedName, cniNode)
222-
assert.NoError(t, getErr)
215+
if tt.args.mockCNINode.GetDeletionTimestamp() == nil {
216+
getErr := mock.Reconciler.Client.Get(context.Background(), reconcileRequest.NamespacedName, cniNode)
217+
assert.NoError(t, getErr)
218+
}
223219

224220
if tt.asserts != nil {
225221
tt.asserts(res, err, cniNode)

0 commit comments

Comments
 (0)