@@ -154,6 +154,14 @@ func (r *ReconcileMachine) Reconcile(request reconcile.Request) (reconcile.Resul
154
154
return reconcile.Result {}, err
155
155
}
156
156
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
+
157
165
// Remove finalizer on successful deletion.
158
166
klog .Infof ("machine object %v deletion successful, removing finalizer." , name )
159
167
m .ObjectMeta .Finalizers = util .Filter (m .ObjectMeta .Finalizers , clusterv1 .MachineFinalizer )
@@ -238,3 +246,16 @@ func (r *ReconcileMachine) isDeleteAllowed(machine *clusterv1.Machine) bool {
238
246
// own machine.
239
247
return node .UID != machine .Status .NodeRef .UID
240
248
}
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