File tree Expand file tree Collapse file tree 2 files changed +31
-5
lines changed Expand file tree Collapse file tree 2 files changed +31
-5
lines changed Original file line number Diff line number Diff 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 {
Original file line number Diff line number Diff 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 {
You can’t perform that action at this time.
0 commit comments