Skip to content

Commit 566c0f4

Browse files
committed
Delete node on machine deletion
1 parent 9d16c16 commit 566c0f4

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

pkg/controller/machine/controller.go

+21
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,14 @@ func (r *ReconcileMachine) Reconcile(request reconcile.Request) (reconcile.Resul
154154
return reconcile.Result{}, err
155155
}
156156

157+
if m.Status.NodeRef != nil {
158+
klog.Infof("Deleting node %q for machine %q", m.Status.NodeRef.Name, m.Name)
159+
if err := r.deleteNode(ctx, m.Status.NodeRef.Name); err != nil {
160+
klog.Errorf("Error deleting node %q for machine %q", name, err)
161+
return reconcile.Result{}, err
162+
}
163+
}
164+
157165
// Remove finalizer on successful deletion.
158166
klog.Infof("machine object %v deletion successful, removing finalizer.", name)
159167
m.ObjectMeta.Finalizers = util.Filter(m.ObjectMeta.Finalizers, clusterv1.MachineFinalizer)
@@ -238,3 +246,16 @@ func (r *ReconcileMachine) isDeleteAllowed(machine *clusterv1.Machine) bool {
238246
// own machine.
239247
return node.UID != machine.Status.NodeRef.UID
240248
}
249+
250+
func (r *ReconcileMachine) deleteNode(ctx context.Context, name string) error {
251+
var node corev1.Node
252+
if err := r.Client.Get(ctx, client.ObjectKey{Name: name}, &node); err != nil {
253+
if apierrors.IsNotFound(err) {
254+
klog.V(2).Infof("Node %q not found", name)
255+
return nil
256+
}
257+
klog.Errorf("Failed to get node %q: %v", name, err)
258+
return err
259+
}
260+
return r.Client.Delete(ctx, &node)
261+
}

0 commit comments

Comments
 (0)