Skip to content

Commit 90e7b99

Browse files
committed
feat: improve locality handling and simplify test helpers for datawarehouse
1 parent 2439eac commit 90e7b99

File tree

6 files changed

+113
-30
lines changed

6 files changed

+113
-30
lines changed

go.sum

Lines changed: 59 additions & 0 deletions
Large diffs are not rendered by default.

internal/services/datawarehouse/deployment.go

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,11 @@ func ResourceDeployment() *schema.Resource {
148148
}
149149

150150
func resourceDeploymentCreate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
151-
api := NewAPI(meta)
151+
api, region, err := datawarehouseAPIWithRegion(d, meta)
152+
if err != nil {
153+
return diag.FromErr(err)
154+
}
152155

153-
region := scw.Region(d.Get("region").(string))
154156
req := &datawarehouseapi.CreateDeploymentRequest{
155157
Region: region,
156158
ProjectID: d.Get("project_id").(string),
@@ -183,18 +185,18 @@ func resourceDeploymentCreate(ctx context.Context, d *schema.ResourceData, meta
183185
return diag.FromErr(err)
184186
}
185187

186-
d.SetId(deployment.ID)
188+
d.SetId(regional.NewIDString(region, deployment.ID))
187189

188190
return resourceDeploymentRead(ctx, d, meta)
189191
}
190192

191193
func resourceDeploymentRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
192-
api := NewAPI(meta)
193-
194-
region := scw.Region(d.Get("region").(string))
195-
id := d.Id()
194+
api, region, id, err := NewAPIWithRegionAndID(meta, d.Id())
195+
if err != nil {
196+
return diag.FromErr(err)
197+
}
196198

197-
_, err := waitForDatawarehouseDeployment(ctx, api, region, id, d.Timeout(schema.TimeoutRead))
199+
_, err = waitForDatawarehouseDeployment(ctx, api, region, id, d.Timeout(schema.TimeoutRead))
198200
if err != nil {
199201
return diag.FromErr(err)
200202
}
@@ -213,7 +215,7 @@ func resourceDeploymentRead(ctx context.Context, d *schema.ResourceData, meta an
213215
return diag.FromErr(err)
214216
}
215217

216-
_ = d.Set("region", string(region))
218+
_ = d.Set("region", string(deployment.Region))
217219
_ = d.Set("project_id", deployment.ProjectID)
218220
_ = d.Set("name", deployment.Name)
219221
_ = d.Set("tags", types.FlattenSliceString(deployment.Tags))
@@ -237,14 +239,14 @@ func resourceDeploymentRead(ctx context.Context, d *schema.ResourceData, meta an
237239
}
238240

239241
func resourceDeploymentUpdate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
240-
api := NewAPI(meta)
242+
api, region, id, err := NewAPIWithRegionAndID(meta, d.Id())
243+
if err != nil {
244+
return diag.FromErr(err)
245+
}
241246

242247
var diags diag.Diagnostics
243248

244-
region := scw.Region(d.Get("region").(string))
245-
id := d.Id()
246-
247-
_, err := waitForDatawarehouseDeployment(ctx, api, region, id, d.Timeout(schema.TimeoutUpdate))
249+
_, err = waitForDatawarehouseDeployment(ctx, api, region, id, d.Timeout(schema.TimeoutUpdate))
248250
if err != nil {
249251
return diag.FromErr(err)
250252
}
@@ -315,12 +317,12 @@ func resourceDeploymentUpdate(ctx context.Context, d *schema.ResourceData, meta
315317
}
316318

317319
func resourceDeploymentDelete(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
318-
api := NewAPI(meta)
319-
320-
region := scw.Region(d.Get("region").(string))
321-
id := d.Id()
320+
api, region, id, err := NewAPIWithRegionAndID(meta, d.Id())
321+
if err != nil {
322+
return diag.FromErr(err)
323+
}
322324

323-
_, err := waitForDatawarehouseDeployment(ctx, api, region, id, d.Timeout(schema.TimeoutDelete))
325+
_, err = waitForDatawarehouseDeployment(ctx, api, region, id, d.Timeout(schema.TimeoutDelete))
324326
if err != nil {
325327
return diag.FromErr(err)
326328
}

internal/services/datawarehouse/deployment_test.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func TestAccDeployment_Basic(t *testing.T) {
1818
tt := acctest.NewTestTools(t)
1919
defer tt.Cleanup()
2020

21-
latestVersion := fetchLatestClickHouseVersion(t, tt)
21+
latestVersion := fetchLatestClickHouseVersion(tt)
2222

2323
resource.ParallelTest(t, resource.TestCase{
2424
PreCheck: func() { acctest.PreCheck(t) },
@@ -79,10 +79,6 @@ resource "scaleway_datawarehouse_deployment" "main" {
7979
})
8080
}
8181

82-
// Helpers
83-
84-
// isDeploymentPresent is now defined in helpers_test.go
85-
8682
func isDeploymentDestroyed(tt *acctest.TestTools) resource.TestCheckFunc {
8783
return func(s *terraform.State) error {
8884
for _, rs := range s.RootModule().Resources {

internal/services/datawarehouse/helpers.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ package datawarehouse
33
import (
44
"time"
55

6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
67
datawarehouseapi "github.com/scaleway/scaleway-sdk-go/api/datawarehouse/v1beta1"
8+
"github.com/scaleway/scaleway-sdk-go/scw"
9+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
710
"github.com/scaleway/terraform-provider-scaleway/v2/internal/meta"
811
)
912

@@ -14,3 +17,27 @@ const (
1417
func NewAPI(m any) *datawarehouseapi.API {
1518
return datawarehouseapi.NewAPI(meta.ExtractScwClient(m))
1619
}
20+
21+
// datawarehouseAPIWithRegion returns a new Datawarehouse API and the region for a Create request
22+
func datawarehouseAPIWithRegion(d *schema.ResourceData, m any) (*datawarehouseapi.API, scw.Region, error) {
23+
api := datawarehouseapi.NewAPI(meta.ExtractScwClient(m))
24+
25+
region, err := meta.ExtractRegion(d, m)
26+
if err != nil {
27+
return nil, "", err
28+
}
29+
30+
return api, region, nil
31+
}
32+
33+
// NewAPIWithRegionAndID returns a Datawarehouse API with region and ID extracted from the state
34+
func NewAPIWithRegionAndID(m any, id string) (*datawarehouseapi.API, scw.Region, string, error) {
35+
api := datawarehouseapi.NewAPI(meta.ExtractScwClient(m))
36+
37+
region, id, err := regional.ParseID(id)
38+
if err != nil {
39+
return nil, "", "", err
40+
}
41+
42+
return api, region, id, nil
43+
}

internal/services/datawarehouse/helpers_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package datawarehouse_test
33
import (
44
"context"
55
"fmt"
6-
"testing"
76

87
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
98
"github.com/hashicorp/terraform-plugin-testing/terraform"
@@ -16,18 +15,18 @@ import (
1615
// Common helper functions shared across all datawarehouse tests
1716

1817
// fetchLatestClickHouseVersion returns the latest available ClickHouse version for testing purposes
19-
func fetchLatestClickHouseVersion(t *testing.T, tt *acctest.TestTools) string {
20-
t.Helper()
18+
func fetchLatestClickHouseVersion(tt *acctest.TestTools) string {
19+
tt.T.Helper()
2120

2221
api := datawarehouse.NewAPI(tt.Meta)
2322

2423
versionsResp, err := api.ListVersions(&datawarehouseSDK.ListVersionsRequest{}, scw.WithAllPages())
2524
if err != nil {
26-
t.Fatalf("unable to fetch datawarehouse versions: %s", err)
25+
tt.T.Fatalf("unable to fetch datawarehouse versions: %s", err)
2726
}
2827

2928
if len(versionsResp.Versions) == 0 {
30-
t.Fatal("no datawarehouse versions available")
29+
tt.T.Fatal("no datawarehouse versions available")
3130
}
3231

3332
return versionsResp.Versions[0].Version

internal/services/datawarehouse/user_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func TestAccUser_Basic(t *testing.T) {
1818
tt := acctest.NewTestTools(t)
1919
defer tt.Cleanup()
2020

21-
latestVersion := fetchLatestClickHouseVersion(t, tt)
21+
latestVersion := fetchLatestClickHouseVersion(tt)
2222

2323
resource.ParallelTest(t, resource.TestCase{
2424
PreCheck: func() { acctest.PreCheck(t) },

0 commit comments

Comments
 (0)