@@ -154,6 +154,13 @@ 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 (m .Status .NodeRef .Name ); err != nil {
160
+ return reconcile.Result {}, err
161
+ }
162
+ }
163
+
157
164
// Remove finalizer on successful deletion.
158
165
klog .Infof ("machine object %v deletion successful, removing finalizer." , name )
159
166
m .ObjectMeta .Finalizers = util .Filter (m .ObjectMeta .Finalizers , clusterv1 .MachineFinalizer )
@@ -238,3 +245,21 @@ func (r *ReconcileMachine) isDeleteAllowed(machine *clusterv1.Machine) bool {
238
245
// own machine.
239
246
return node .UID != machine .Status .NodeRef .UID
240
247
}
248
+
249
+ func (r * ReconcileMachine ) deleteNode (name string ) error {
250
+ var node corev1.Node
251
+ if err := r .Client .Get (context .Background (), client.ObjectKey {Name : name }, & node ); err != nil {
252
+ if apierrors .IsNotFound (err ) {
253
+ klog .Infof ("Node %q not found" , name )
254
+ return nil
255
+ } else {
256
+ klog .Errorf ("Failed to get node %q: %v" , name , err )
257
+ return err
258
+ }
259
+ } else if err := r .Client .Delete (context .Background (), & node ); err != nil {
260
+ klog .Errorf ("Failed to delete node %q : %v" , name , err )
261
+ return err
262
+ }
263
+ klog .Infof ("Deleted node %q" , name )
264
+ return nil
265
+ }
0 commit comments