From 2f101fa59430f9719731de5d16989973c431090a Mon Sep 17 00:00:00 2001 From: sethp-nr <30441101+sethp-nr@users.noreply.github.com> Date: Mon, 2 Mar 2020 12:02:05 -0800 Subject: [PATCH] fix: KubeadmControlPlane should allow orphans Check for the "orphan" finalizer and avoid deleting dependents if present. --- .../controllers/kubeadm_control_plane_controller.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/controlplane/kubeadm/controllers/kubeadm_control_plane_controller.go b/controlplane/kubeadm/controllers/kubeadm_control_plane_controller.go index 8b2761106e7f..ce358fa11790 100644 --- a/controlplane/kubeadm/controllers/kubeadm_control_plane_controller.go +++ b/controlplane/kubeadm/controllers/kubeadm_control_plane_controller.go @@ -738,6 +738,14 @@ func (r *KubeadmControlPlaneReconciler) generateMachine(ctx context.Context, kcp // https://github.com/kubernetes-sigs/cluster-api/issues/2064 func (r *KubeadmControlPlaneReconciler) reconcileDelete(ctx context.Context, cluster *clusterv1.Cluster, kcp *controlplanev1.KubeadmControlPlane) (_ ctrl.Result, reterr error) { logger := r.Log.WithValues("namespace", kcp.Namespace, "kubeadmControlPlane", kcp.Name, "cluster", cluster.Name) + + for _, f := range kcp.Finalizers { + if f == metav1.FinalizerOrphanDependents { + logger.Info("Waiting for orphan finalizer...") + return ctrl.Result{RequeueAfter: DeleteRequeueAfter}, nil + } + } + allMachines, err := r.managementCluster.GetMachinesForCluster(ctx, util.ObjectKey(cluster)) if err != nil { logger.Error(err, "failed to retrieve machines for cluster")