@@ -178,6 +178,14 @@ func (r *ReconcileMachine) Reconcile(request reconcile.Request) (reconcile.Resul
178
178
return reconcile.Result {}, err
179
179
}
180
180
181
+ if m .Status .NodeRef != nil {
182
+ klog .Infof ("Deleting node %q for machine %q" , m .Status .NodeRef .Name , m .Name )
183
+ if err := r .deleteNode (ctx , m .Status .NodeRef .Name ); err != nil {
184
+ klog .Errorf ("Error deleting node %q for machine %q" , name , err )
185
+ return reconcile.Result {}, err
186
+ }
187
+ }
188
+
181
189
// Remove finalizer on successful deletion.
182
190
m .ObjectMeta .Finalizers = util .Filter (m .ObjectMeta .Finalizers , clusterv1 .MachineFinalizer )
183
191
if err := r .Client .Update (context .Background (), m ); err != nil {
@@ -263,3 +271,16 @@ func (r *ReconcileMachine) isDeleteAllowed(machine *clusterv1.Machine) bool {
263
271
// own machine.
264
272
return node .UID != machine .Status .NodeRef .UID
265
273
}
274
+
275
+ func (r * ReconcileMachine ) deleteNode (ctx context.Context , name string ) error {
276
+ var node corev1.Node
277
+ if err := r .Client .Get (ctx , client.ObjectKey {Name : name }, & node ); err != nil {
278
+ if apierrors .IsNotFound (err ) {
279
+ klog .V (2 ).Infof ("Node %q not found" , name )
280
+ return nil
281
+ }
282
+ klog .Errorf ("Failed to get node %q: %v" , name , err )
283
+ return err
284
+ }
285
+ return r .Client .Delete (ctx , & node )
286
+ }
0 commit comments