From 1bfff7c238c9024c1539244a51749b6b75472802 Mon Sep 17 00:00:00 2001 From: Md Tahsin Rahman Date: Mon, 30 Sep 2019 23:46:37 +0600 Subject: [PATCH] Do not requeue forever if only cluster is deployed --- controllers/cluster_controller_phases.go | 29 ++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/controllers/cluster_controller_phases.go b/controllers/cluster_controller_phases.go index 97e7b45ccd06..c2c70c67a2ff 100644 --- a/controllers/cluster_controller_phases.go +++ b/controllers/cluster_controller_phases.go @@ -181,10 +181,35 @@ func (r *ClusterReconciler) reconcileKubeconfig(ctx context.Context, cluster *cl return nil } - _, err := secret.Get(r.Client, cluster, secret.Kubeconfig) + machines, err := getActiveMachinesInCluster(ctx, r.Client, cluster.Namespace, cluster.Name) + if err != nil { + return errors.Wrap(err, "failed to get active machines in cluster") + } + + foundControlPlane := false + for _, m := range machines { + if util.IsControlPlaneMachine(m) { + foundControlPlane = true + break + } + } + + if !foundControlPlane { + // TODO: fix this after #1456 is merged + r.Log.Info("no controlPlane machine found, skip reconciling kuberconfig secret") + return nil + } + + _, err = secret.Get(r.Client, cluster, secret.Kubeconfig) switch { case apierrors.IsNotFound(err): - return kubeconfig.CreateSecret(ctx, r.Client, cluster) + err = kubeconfig.CreateSecret(ctx, r.Client, cluster) + if apierrors.IsNotFound(err) { + return errors.Wrapf(&capierrors.RequeueAfterError{RequeueAfter: 30 * time.Second}, + "could not find secret %q for Cluster %q in namespace %q, requeuing", + secret.ClusterCA, cluster.Name, cluster.Namespace) + } + return err case err != nil: return errors.Wrapf(err, "failed to retrieve Kubeconfig Secret for Cluster %q in namespace %q", cluster.Name, cluster.Namespace) }