Skip to content

Commit 697bee0

Browse files
authored
Ignore Node when deleting by NodeRef if it doesn't exist (#816)
1 parent b0d51a0 commit 697bee0

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

pkg/controller/machine/machine.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -614,16 +614,23 @@ func (r *Reconciler) deleteNodeForMachine(machine *clusterv1alpha1.Machine) erro
614614
if machine.Status.NodeRef != nil {
615615
objKey := ctrlruntimeclient.ObjectKey{Name: machine.Status.NodeRef.Name}
616616
node := &corev1.Node{}
617+
nodeFound := true
617618
if err := r.client.Get(r.ctx, objKey, node); err != nil {
618-
return fmt.Errorf("failed to get node %s: %v", machine.Status.NodeRef.Name, err)
619-
}
620-
621-
if err := r.client.Delete(r.ctx, node); err != nil {
622619
if !kerrors.IsNotFound(err) {
623-
return err
620+
return fmt.Errorf("failed to get node %s: %v", machine.Status.NodeRef.Name, err)
624621
}
622+
nodeFound = false
625623
klog.V(2).Infof("node %q does not longer exist for machine %q", machine.Status.NodeRef.Name, machine.Spec.Name)
626624
}
625+
626+
if nodeFound {
627+
if err := r.client.Delete(r.ctx, node); err != nil {
628+
if !kerrors.IsNotFound(err) {
629+
return err
630+
}
631+
klog.V(2).Infof("node %q does not longer exist for machine %q", machine.Status.NodeRef.Name, machine.Spec.Name)
632+
}
633+
}
627634
} else {
628635
selector, err := labels.Parse(NodeOwnerLabelName + "=" + string(machine.UID))
629636
if err != nil {

pkg/controller/machine/machine_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,25 @@ func TestControllerDeleteNodeForMachine(t *testing.T) {
548548
err: nil,
549549
shouldDeleteNode: "",
550550
},
551+
{
552+
name: "node referred by nodeRef doesn't exist",
553+
machine: &clusterv1alpha1.Machine{
554+
ObjectMeta: metav1.ObjectMeta{
555+
Name: "machine-1",
556+
Finalizers: []string{"machine-node-delete-finalizer"},
557+
},
558+
Status: clusterv1alpha1.MachineStatus{
559+
NodeRef: &corev1.ObjectReference{Name: "node-1"},
560+
},
561+
},
562+
nodes: []runtime.Object{&corev1.Node{
563+
ObjectMeta: metav1.ObjectMeta{
564+
Name: "node-0",
565+
}},
566+
},
567+
err: nil,
568+
shouldDeleteNode: "",
569+
},
551570
}
552571

553572
for _, test := range tests {

0 commit comments

Comments
 (0)