Skip to content

Commit

Permalink
feat(resource_folder): add retryable validation of parent_folder_uid …
Browse files Browse the repository at this point in the history
…existence

Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
  • Loading branch information
paulojmdias committed Feb 23, 2025
1 parent 6589613 commit 920df8f
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion internal/resources/grafana/resource_folder.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/json"
"regexp"
"strconv"
"time"

goapi "github.com/grafana/grafana-openapi-client-go/client"
"github.com/grafana/grafana-openapi-client-go/client/folders"
Expand All @@ -13,6 +14,7 @@ import (

"github.com/grafana/terraform-provider-grafana/v3/internal/common"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
)
Expand Down Expand Up @@ -98,7 +100,19 @@ func CreateFolder(ctx context.Context, d *schema.ResourceData, meta interface{})
}

if parentUID, ok := d.GetOk("parent_folder_uid"); ok {
body.ParentUID = parentUID.(string)
err := retry.RetryContext(ctx, 2*time.Minute, func() *retry.RetryError {
parentFolder, err := GetFolderByIDorUID(client.Folders, parentUID.(string))
if err != nil {
return retry.RetryableError(err)
}

body.ParentUID = parentFolder.UID
return nil
})

if err != nil {
return diag.Errorf("failed to find parent folder '%s': %s", parentUID, err)
}
}

resp, err := client.Folders.CreateFolder(&body)
Expand Down

0 comments on commit 920df8f

Please sign in to comment.