Skip to content

Commit 0ec625e

Browse files
committed
feat(mongodb): migrate into v1
1 parent fd6e880 commit 0ec625e

19 files changed

+26553
-28747
lines changed

internal/services/mongodb/data_source_instance.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66

77
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9-
mongodb "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1alpha1"
9+
mongodb "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1"
1010
"github.com/scaleway/scaleway-sdk-go/scw"
1111
"github.com/scaleway/terraform-provider-scaleway/v2/internal/datasource"
1212
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality"
@@ -85,7 +85,7 @@ func DataSourceInstanceRead(ctx context.Context, d *schema.ResourceData, m any)
8585

8686
_ = d.Set("name", instance.Name)
8787
_ = d.Set("version", instance.Version)
88-
_ = d.Set("node_number", int(instance.NodeNumber))
88+
_ = d.Set("node_number", int(instance.NodeAmount))
8989
_ = d.Set("node_type", instance.NodeType)
9090
_ = d.Set("project_id", instance.ProjectID)
9191
_ = d.Set("tags", instance.Tags)
@@ -94,22 +94,15 @@ func DataSourceInstanceRead(ctx context.Context, d *schema.ResourceData, m any)
9494

9595
if instance.Volume != nil {
9696
_ = d.Set("volume_type", instance.Volume.Type)
97-
_ = d.Set("volume_size_in_gb", int(instance.Volume.Size/scw.GB))
97+
_ = d.Set("volume_size_in_gb", int(instance.Volume.SizeBytes/scw.GB))
9898
}
9999

100100
publicNetworkEndpoint, publicNetworkExists := flattenPublicNetwork(instance.Endpoints)
101101
if publicNetworkExists {
102102
_ = d.Set("public_network", publicNetworkEndpoint)
103103
}
104104

105-
if len(instance.Settings) > 0 {
106-
settingsMap := make(map[string]string)
107-
for _, setting := range instance.Settings {
108-
settingsMap[setting.Name] = setting.Value
109-
}
110-
111-
_ = d.Set("settings", settingsMap)
112-
}
105+
_ = d.Set("settings", map[string]string{})
113106

114107
return nil
115108
}

internal/services/mongodb/data_source_instance_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func TestAccDataSourceMongoDBInstance_ByName(t *testing.T) {
2020
Config: `
2121
resource "scaleway_mongodb_instance" "test" {
2222
name = "test-mongodb-instance-by-name"
23-
version = "7.0.12"
23+
version = "7.0"
2424
node_type = "MGDB-PLAY2-NANO"
2525
node_number = 1
2626
user_name = "my_initial_user"
@@ -33,7 +33,7 @@ func TestAccDataSourceMongoDBInstance_ByName(t *testing.T) {
3333
`,
3434
Check: resource.ComposeTestCheckFunc(
3535
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_name", "name", "test-mongodb-instance-by-name"),
36-
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_name", "version", "7.0.12"),
36+
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_name", "version", "7.0"),
3737
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_name", "node_type", "mgdb-play2-nano"),
3838
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_name", "node_number", "1"),
3939
),
@@ -55,7 +55,7 @@ func TestAccDataSourceMongoDBInstance_ByID(t *testing.T) {
5555
Config: `
5656
resource "scaleway_mongodb_instance" "test" {
5757
name = "test-mongodb-instance-id"
58-
version = "7.0.12"
58+
version = "7.0"
5959
node_type = "MGDB-PLAY2-NANO"
6060
node_number = 1
6161
user_name = "my_initial_user"
@@ -68,7 +68,7 @@ func TestAccDataSourceMongoDBInstance_ByID(t *testing.T) {
6868
`,
6969
Check: resource.ComposeTestCheckFunc(
7070
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_id", "name", "test-mongodb-instance-id"),
71-
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_id", "version", "7.0.12"),
71+
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_id", "version", "7.0"),
7272
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_id", "node_type", "mgdb-play2-nano"),
7373
resource.TestCheckResourceAttr("data.scaleway_mongodb_instance.test_by_id", "node_number", "1"),
7474
),

internal/services/mongodb/helpers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"time"
66

77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8-
mongodb "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1alpha1"
8+
mongodb "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1"
99
"github.com/scaleway/scaleway-sdk-go/scw"
1010
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/zonal"
1111
"github.com/scaleway/terraform-provider-scaleway/v2/internal/meta"

internal/services/mongodb/instance.go

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ import (
44
"context"
55
"errors"
66
"fmt"
7+
"strings"
78
"time"
89

910
"github.com/hashicorp/go-cty/cty"
1011
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
12+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
1113
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1214
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1315
ipamAPI "github.com/scaleway/scaleway-sdk-go/api/ipam/v1"
14-
mongodb "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1alpha1"
16+
mongodb "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1"
1517
"github.com/scaleway/scaleway-sdk-go/scw"
1618
"github.com/scaleway/terraform-provider-scaleway/v2/internal/dsf"
1719
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
@@ -232,6 +234,21 @@ func ResourceInstance() *schema.Resource {
232234
"region": regional.Schema(),
233235
"project_id": account.ProjectIDSchema(),
234236
},
237+
CustomizeDiff: customdiff.All(
238+
func(ctx context.Context, d *schema.ResourceDiff, meta interface{}) error {
239+
if d.HasChange("version") {
240+
v := d.Get("version").(string)
241+
parts := strings.Split(v, ".")
242+
if len(parts) > 2 {
243+
majorMinor := parts[0] + "." + parts[1]
244+
if err := d.SetNew("version", majorMinor); err != nil {
245+
return err
246+
}
247+
}
248+
}
249+
return nil
250+
},
251+
),
235252
}
236253
}
237254

@@ -248,42 +265,41 @@ func ResourceInstanceCreate(ctx context.Context, d *schema.ResourceData, m any)
248265
var res *mongodb.Instance
249266

250267
if exist {
251-
volume := &mongodb.RestoreSnapshotRequestVolumeDetails{
252-
VolumeType: mongodb.VolumeType(d.Get("volume_type").(string)),
253-
}
254-
id := regional.ExpandID(snapshotID.(string))
255268
restoreSnapshotRequest := &mongodb.RestoreSnapshotRequest{
256-
SnapshotID: id.ID,
269+
SnapshotID: regional.ExpandID(snapshotID.(string)).ID,
257270
InstanceName: types.ExpandOrGenerateString(d.Get("name"), "mongodb"),
258-
NodeNumber: *nodeNumber,
271+
NodeAmount: *nodeNumber,
259272
NodeType: d.Get("node_type").(string),
260-
Volume: volume,
273+
VolumeType: mongodb.VolumeType(d.Get("volume_type").(string)),
261274
}
262275

263276
res, err = mongodbAPI.RestoreSnapshot(restoreSnapshotRequest, scw.WithContext(ctx))
264277
if err != nil {
265278
return diag.FromErr(err)
266279
}
267280
} else {
281+
version := d.Get("version").(string)
282+
normalizeVersion := NormalizeMongoDBVersion(version)
283+
268284
createReq := &mongodb.CreateInstanceRequest{
269285
ProjectID: d.Get("project_id").(string),
270286
Name: types.ExpandOrGenerateString(d.Get("name"), "mongodb"),
271-
Version: d.Get("version").(string),
287+
Version: normalizeVersion,
272288
NodeType: d.Get("node_type").(string),
273-
NodeNumber: *nodeNumber,
289+
NodeAmount: *nodeNumber,
274290
UserName: d.Get("user_name").(string),
275291
Password: d.Get("password").(string),
276292
}
277293

278-
volumeRequestDetails := &mongodb.CreateInstanceRequestVolumeDetails{
279-
VolumeType: mongodb.VolumeType(d.Get("volume_type").(string)),
294+
volumeRequestDetails := &mongodb.Volume{
295+
Type: mongodb.VolumeType(d.Get("volume_type").(string)),
280296
}
281297
volumeSize, volumeSizeExist := d.GetOk("volume_size_in_gb")
282298

283299
if volumeSizeExist {
284-
volumeRequestDetails.VolumeSize = scw.Size(uint64(volumeSize.(int)) * uint64(scw.GB))
300+
volumeRequestDetails.SizeBytes = scw.Size(uint64(volumeSize.(int)) * uint64(scw.GB))
285301
} else {
286-
volumeRequestDetails.VolumeSize = scw.Size(defaultVolumeSize * uint64(scw.GB))
302+
volumeRequestDetails.SizeBytes = scw.Size(defaultVolumeSize * uint64(scw.GB))
287303
}
288304

289305
createReq.Volume = volumeRequestDetails
@@ -316,14 +332,14 @@ func ResourceInstanceCreate(ctx context.Context, d *schema.ResourceData, m any)
316332
items := pubList.([]any)
317333
if len(items) > 0 {
318334
eps = append(eps, &mongodb.EndpointSpec{
319-
Public: &mongodb.EndpointSpecPublicDetails{},
335+
PublicNetwork: &mongodb.EndpointSpecPublicNetworkDetails{},
320336
})
321337
}
322338
}
323339

324340
if len(eps) == 0 {
325341
eps = append(eps, &mongodb.EndpointSpec{
326-
Public: &mongodb.EndpointSpecPublicDetails{},
342+
PublicNetwork: &mongodb.EndpointSpecPublicNetworkDetails{},
327343
})
328344
}
329345

@@ -369,7 +385,7 @@ func ResourceInstanceRead(ctx context.Context, d *schema.ResourceData, m any) di
369385

370386
_ = d.Set("name", instance.Name)
371387
_ = d.Set("version", instance.Version)
372-
_ = d.Set("node_number", int(instance.NodeNumber))
388+
_ = d.Set("node_number", int(instance.NodeAmount))
373389
_ = d.Set("node_type", instance.NodeType)
374390
_ = d.Set("project_id", instance.ProjectID)
375391
_ = d.Set("tags", instance.Tags)
@@ -378,7 +394,7 @@ func ResourceInstanceRead(ctx context.Context, d *schema.ResourceData, m any) di
378394

379395
if instance.Volume != nil {
380396
_ = d.Set("volume_type", instance.Volume.Type)
381-
_ = d.Set("volume_size_in_gb", int(instance.Volume.Size/scw.GB))
397+
_ = d.Set("volume_size_in_gb", int(instance.Volume.SizeBytes/scw.GB))
382398
}
383399

384400
publicNetworkEndpoint, publicNetworkExists := flattenPublicNetwork(instance.Endpoints)
@@ -441,14 +457,7 @@ func ResourceInstanceRead(ctx context.Context, d *schema.ResourceData, m any) di
441457
_ = d.Set("private_ip", privateIPs)
442458
}
443459

444-
if len(instance.Settings) > 0 {
445-
settingsMap := make(map[string]string)
446-
for _, setting := range instance.Settings {
447-
settingsMap[setting.Name] = setting.Value
448-
}
449-
450-
_ = d.Set("settings", settingsMap)
451-
}
460+
_ = d.Set("settings", map[string]string{})
452461

453462
return diags
454463
}
@@ -479,9 +488,9 @@ func ResourceInstanceUpdate(ctx context.Context, d *schema.ResourceData, m any)
479488
size := scw.Size(newSize * uint64(scw.GB))
480489

481490
upgradeInstanceRequests := mongodb.UpgradeInstanceRequest{
482-
InstanceID: ID,
483-
Region: region,
484-
VolumeSize: &size,
491+
InstanceID: ID,
492+
Region: region,
493+
VolumeSizeBytes: &size,
485494
}
486495

487496
_, err = mongodbAPI.UpgradeInstance(&upgradeInstanceRequests, scw.WithContext(ctx))

internal/services/mongodb/instance_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
99
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
10-
mongodbSDK "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1alpha1"
10+
mongodbSDK "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1"
1111
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
1212
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
1313
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/mongodb"
@@ -25,7 +25,7 @@ func TestAccMongoDBInstance_Basic(t *testing.T) {
2525
{
2626
Config: `
2727
resource scaleway_mongodb_instance main {
28-
name = "test-mongodb-basic1"
28+
name = "test-mongodb-basic-1"
2929
version = "7.0.12"
3030
node_type = "MGDB-PLAY2-NANO"
3131
node_number = 1
@@ -35,9 +35,9 @@ func TestAccMongoDBInstance_Basic(t *testing.T) {
3535
`,
3636
Check: resource.ComposeTestCheckFunc(
3737
isMongoDBInstancePresent(tt, "scaleway_mongodb_instance.main"),
38-
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "name", "test-mongodb-basic1"),
38+
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "name", "test-mongodb-basic-1"),
3939
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "node_type", "mgdb-play2-nano"),
40-
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "version", "7.0.12"),
40+
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "version", "7.0"),
4141
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "node_number", "1"),
4242
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "user_name", "my_initial_user"),
4343
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "password", "thiZ_is_v&ry_s3cret"),

internal/services/mongodb/snapshot.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9-
mongodb "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1alpha1"
9+
mongodb "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1"
1010
"github.com/scaleway/scaleway-sdk-go/scw"
1111
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality"
1212
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
@@ -134,12 +134,12 @@ func ResourceSnapshotRead(ctx context.Context, d *schema.ResourceData, m any) di
134134
return diag.FromErr(err)
135135
}
136136

137-
_ = d.Set("instance_id", zonal.NewIDString(zone, snapshot.InstanceID))
137+
_ = d.Set("instance_id", zonal.NewIDString(zone, *snapshot.InstanceID))
138138
_ = d.Set("name", snapshot.Name)
139139
_ = d.Set("instance_name", snapshot.InstanceName)
140-
_ = d.Set("size", int64(snapshot.Size))
140+
_ = d.Set("size", int64(snapshot.SizeBytes))
141141
_ = d.Set("node_type", snapshot.NodeType)
142-
_ = d.Set("volume_type", snapshot.VolumeType.Type)
142+
_ = d.Set("volume_type", snapshot.VolumeType)
143143
_ = d.Set("expires_at", types.FlattenTime(snapshot.ExpiresAt))
144144
_ = d.Set("created_at", types.FlattenTime(snapshot.CreatedAt))
145145
_ = d.Set("updated_at", types.FlattenTime(snapshot.UpdatedAt))

internal/services/mongodb/snapshot_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66

77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
9-
mongodbSDK "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1alpha1"
9+
mongodbSDK "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1"
1010
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
1111
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
1212
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/mongodb"

0 commit comments

Comments
 (0)