Skip to content

Commit 4708f8e

Browse files
enxebrek8s-ci-robot
authored andcommitted
Delete node on machine deletion (#809)
1 parent fbb9787 commit 4708f8e

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
@@ -178,6 +178,14 @@ func (r *ReconcileMachine) Reconcile(request reconcile.Request) (reconcile.Resul
178178
return reconcile.Result{}, err
179179
}
180180

181+
if m.Status.NodeRef != nil {
182+
klog.Infof("Deleting node %q for machine %q", m.Status.NodeRef.Name, m.Name)
183+
if err := r.deleteNode(ctx, m.Status.NodeRef.Name); err != nil {
184+
klog.Errorf("Error deleting node %q for machine %q", name, err)
185+
return reconcile.Result{}, err
186+
}
187+
}
188+
181189
// Remove finalizer on successful deletion.
182190
m.ObjectMeta.Finalizers = util.Filter(m.ObjectMeta.Finalizers, clusterv1.MachineFinalizer)
183191
if err := r.Client.Update(context.Background(), m); err != nil {
@@ -263,3 +271,16 @@ func (r *ReconcileMachine) isDeleteAllowed(machine *clusterv1.Machine) bool {
263271
// own machine.
264272
return node.UID != machine.Status.NodeRef.UID
265273
}
274+
275+
func (r *ReconcileMachine) deleteNode(ctx context.Context, name string) error {
276+
var node corev1.Node
277+
if err := r.Client.Get(ctx, client.ObjectKey{Name: name}, &node); err != nil {
278+
if apierrors.IsNotFound(err) {
279+
klog.V(2).Infof("Node %q not found", name)
280+
return nil
281+
}
282+
klog.Errorf("Failed to get node %q: %v", name, err)
283+
return err
284+
}
285+
return r.Client.Delete(ctx, &node)
286+
}

0 commit comments

Comments
 (0)