Skip to content

Commit 716903e

Browse files
committed
Delete node on machine deletion
1 parent 9d16c16 commit 716903e

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

pkg/controller/machine/controller.go

+25
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,13 @@ 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(m.Status.NodeRef.Name); err != nil {
160+
return reconcile.Result{}, err
161+
}
162+
}
163+
157164
// Remove finalizer on successful deletion.
158165
klog.Infof("machine object %v deletion successful, removing finalizer.", name)
159166
m.ObjectMeta.Finalizers = util.Filter(m.ObjectMeta.Finalizers, clusterv1.MachineFinalizer)
@@ -238,3 +245,21 @@ func (r *ReconcileMachine) isDeleteAllowed(machine *clusterv1.Machine) bool {
238245
// own machine.
239246
return node.UID != machine.Status.NodeRef.UID
240247
}
248+
249+
func (r *ReconcileMachine) deleteNode(name string) error {
250+
var node corev1.Node
251+
if err := r.Client.Get(context.Background(), client.ObjectKey{Name: name}, &node); err != nil {
252+
if apierrors.IsNotFound(err) {
253+
klog.Infof("Node %q not found", name)
254+
return nil
255+
} else {
256+
klog.Errorf("Failed to get node %q: %v", name, err)
257+
return err
258+
}
259+
} else if err := r.Client.Delete(context.Background(), &node); err != nil {
260+
klog.Errorf("Failed to delete node %q : %v", name, err)
261+
return err
262+
}
263+
klog.Infof("Deleted node %q", name)
264+
return nil
265+
}

0 commit comments

Comments
 (0)