Skip to content

Commit 7b6a621

Browse files
committed
UPSTREAM: <809>: openshift: Delete node on machine deletion
When deleting a machine this also deletes the backed node right away from the machine controller after the actuator succeed deleting the cloud instance, so no need to wait for the cloud nodelifecycle controller to garbage collect the orphan node
1 parent 0c3e884 commit 7b6a621

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

pkg/controller/machine/controller.go

Lines changed: 21 additions & 0 deletions
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, machinev1.MachineFinalizer)
@@ -238,3 +246,16 @@ func (r *ReconcileMachine) isDeleteAllowed(machine *machinev1.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)