Skip to content

Commit cff2277

Browse files
imdegaraeapedriza
andauthored
Fix machine deletion sequence when controlplane is not ready yet (#933)
Signed-off-by: Adrian Pedriza <[email protected]> Co-authored-by: Adrian Pedriza <[email protected]>
1 parent dce736a commit cff2277

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

internal/controller/controlplane/k0s_controlplane_controller.go

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -498,26 +498,28 @@ func (c *K0sController) reconcileMachines(ctx context.Context, cluster *clusterv
498498
}
499499

500500
func (c *K0sController) runMachineDeletionSequence(ctx context.Context, logger logr.Logger, cluster *clusterv1.Cluster, kcp *cpv1beta1.K0sControlPlane, machine *clusterv1.Machine) error {
501-
kubeClient, err := c.getKubeClient(ctx, cluster)
502-
if err != nil {
503-
return fmt.Errorf("error getting cluster client set for deletion: %w", err)
504-
}
505-
506-
waitCtx, cancel := context.WithTimeout(ctx, 60*time.Second)
507-
defer cancel()
508-
err = wait.PollUntilContextCancel(waitCtx, 10*time.Second, true, func(fctx context.Context) (bool, error) {
509-
if err := c.markChildControlNodeToLeave(fctx, machine.Name, kubeClient); err != nil {
510-
return false, fmt.Errorf("error marking controlnode to leave: %w", err)
501+
if kcp.Status.Ready {
502+
kubeClient, err := c.getKubeClient(ctx, cluster)
503+
if err != nil {
504+
return fmt.Errorf("error getting cluster client set for deletion: %w", err)
511505
}
512506

513-
ok, err := c.checkMachineLeft(fctx, machine.Name, kubeClient)
507+
waitCtx, cancel := context.WithTimeout(ctx, 60*time.Second)
508+
defer cancel()
509+
err = wait.PollUntilContextCancel(waitCtx, 10*time.Second, true, func(fctx context.Context) (bool, error) {
510+
if err := c.markChildControlNodeToLeave(fctx, machine.Name, kubeClient); err != nil {
511+
return false, fmt.Errorf("error marking controlnode to leave: %w", err)
512+
}
513+
514+
ok, err := c.checkMachineLeft(fctx, machine.Name, kubeClient)
515+
if err != nil {
516+
logger.Error(err, "Error checking machine left", "machine", machine.Name)
517+
}
518+
return ok, err
519+
})
514520
if err != nil {
515-
logger.Error(err, "Error checking machine left", "machine", machine.Name)
521+
return fmt.Errorf("error checking machine left: %w", err)
516522
}
517-
return ok, err
518-
})
519-
if err != nil {
520-
return fmt.Errorf("error checking machine left: %w", err)
521523
}
522524

523525
if err := c.deleteBootstrapConfig(ctx, machine.Name, kcp); err != nil {

0 commit comments

Comments
 (0)