From 7f4805b691e06a2770d5db51e98966b24bb5eddd Mon Sep 17 00:00:00 2001 From: Srinivas Chavan <36725125+srinivaschavan@users.noreply.github.com> Date: Tue, 10 Sep 2024 10:50:23 +0530 Subject: [PATCH] wait for cluster --- internal/provider/cluster_resource.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/internal/provider/cluster_resource.go b/internal/provider/cluster_resource.go index 3815c93..b16a5eb 100644 --- a/internal/provider/cluster_resource.go +++ b/internal/provider/cluster_resource.go @@ -6,6 +6,7 @@ import ( "fmt" "strconv" "strings" + "time" "github.com/hashicorp/terraform-plugin-framework/attr" "github.com/hashicorp/terraform-plugin-framework/diag" @@ -534,6 +535,22 @@ func (r *clusterResource) Create(ctx context.Context, req resource.CreateRequest // This attr is useful in Update only, copied value from state to prevent inconsistency state.BatchUpgradePercent = data.BatchUpgradePercent resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) + + tflog.Debug(ctx, "Waiting for cluster to be ready...!") + for start_time := time.Now(); time.Since(start_time) < time.Minute*30; { + time.Sleep(time.Minute) + cluster, err := r.client.Qbert().GetCluster(ctx, projectID, clusterID) + if err != nil { + resp.Diagnostics.AddError("Failed to get cluster.", err.Error()) + return + } + if cluster.Status == "ok" && cluster.TaskStatus == "success" { + tflog.Debug(ctx, "Cluster is ready.") + return + } + tflog.Debug(ctx, fmt.Sprintf("Cluster is not ready yet...status: %s, task_status: %s", cluster.Status, cluster.TaskStatus)) + } + resp.Diagnostics.AddError("Cluster creation timed out.", "Waited for 30 minutes.") } func (r *clusterResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { @@ -1586,6 +1603,7 @@ func createCreateClusterRequest(ctx context.Context, clusterModel *resource_clus return createClusterReq, diags } createClusterReq.CloudProperties = cloudProperties + createClusterReq.ApiServerFlags = cloudProperties.APIServerFlags } createClusterReq.EtcdBackup, diags = getEtcdBackupConfig(ctx, clusterModel.EtcdBackup)