Skip to content

Commit 0ca0637

Browse files
enxebreopenshift-merge-robot
authored andcommitted
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 3fc0ac8 commit 0ca0637

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)