From 035efbd309f0c331954f21ee7f1d1a3df79e6467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diogo=20Ferr=C3=A3o?= Date: Tue, 30 Apr 2024 16:10:54 +0100 Subject: [PATCH] Fix replacement of mongoDB instances, make storage class require replace (#350) * hotfix replacement of mongodb instances by adding delay to delete * improve explaining comment * increase delay time * improve comments regarding the wait timer --- .../internal/services/mongodbflex/instance/resource.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/stackit/internal/services/mongodbflex/instance/resource.go b/stackit/internal/services/mongodbflex/instance/resource.go index ae3385b4..4c4f3375 100644 --- a/stackit/internal/services/mongodbflex/instance/resource.go +++ b/stackit/internal/services/mongodbflex/instance/resource.go @@ -6,6 +6,7 @@ import ( "net/http" "regexp" "strings" + "time" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/attr" @@ -235,6 +236,9 @@ func (r *instanceResource) Schema(_ context.Context, _ resource.SchemaRequest, r Attributes: map[string]schema.Attribute{ "class": schema.StringAttribute{ Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "size": schema.Int64Attribute{ Required: true, @@ -520,6 +524,11 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Instance deletion waiting: %v", err)) return } + + // This is needed because the waiter is currently not working properly + // After the get request returns 404 (instance is deleted), creating a new instance with the same name still fails for a short period of time + time.Sleep(30 * time.Second) + tflog.Info(ctx, "MongoDB Flex instance deleted") }