Skip to content

Commit d0a32ab

Browse files
committed
tests
1 parent 5684804 commit d0a32ab

File tree

8 files changed

+3478
-12
lines changed

8 files changed

+3478
-12
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ require (
3030
github.com/nats-io/jwt/v2 v2.7.3
3131
github.com/nats-io/nats.go v1.37.0
3232
github.com/robfig/cron/v3 v3.0.1
33-
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250128135513-ad2f1fb6c4b9
33+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250129134826-04caf0452484
3434
github.com/stretchr/testify v1.9.0
3535
golang.org/x/crypto v0.31.0
3636
gopkg.in/dnaeon/go-vcr.v3 v3.2.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31 h1:Fj7jPyu9TQjqfXcLylINK5PANS
288288
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
289289
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250128135513-ad2f1fb6c4b9 h1:qvgJcZjBgpQ6AkNA4yBtYKa9QJ4a0MME603X+Fe81Sg=
290290
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250128135513-ad2f1fb6c4b9/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
291+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250129134826-04caf0452484 h1:CQNllJ4XCELHD64WYXHh0ytdJYr0DAEcr0GkvAQfds4=
292+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250129134826-04caf0452484/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
291293
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
292294
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
293295
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=

internal/services/applesilicon/clients.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,13 @@ func NewAPIWithZoneAndID(m interface{}, id string) (*applesilicon.API, scw.Zone,
2929
}
3030
return asAPI, zone, ID, nil
3131
}
32+
33+
func newPrivateNetworkAPIWithZone(d *schema.ResourceData, m interface{}) (*applesilicon.PrivateNetworkAPI, scw.Zone, error) {
34+
privateNetworkAPI := applesilicon.NewPrivateNetworkAPI(meta.ExtractScwClient(m))
35+
36+
zone, err := meta.ExtractZone(d, m)
37+
if err != nil {
38+
return nil, "", err
39+
}
40+
return privateNetworkAPI, zone, nil
41+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package applesilicon
2+
3+
import (
4+
"context"
5+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
6+
applesilicon "github.com/scaleway/scaleway-sdk-go/api/applesilicon/v1alpha1"
7+
"github.com/scaleway/scaleway-sdk-go/scw"
8+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
9+
)
10+
11+
func detachAllPrivateNetworkFromServer(ctx context.Context, d *schema.ResourceData, m interface{}, serverID string) error {
12+
privateNetworkAPI, zone, err := newPrivateNetworkAPIWithZone(d, m)
13+
if err != nil {
14+
return err
15+
}
16+
listPrivateNetwork, err := privateNetworkAPI.ListServerPrivateNetworks(&applesilicon.PrivateNetworkAPIListServerPrivateNetworksRequest{
17+
Zone: zone,
18+
ServerID: &serverID,
19+
}, scw.WithContext(ctx))
20+
if err != nil {
21+
return err
22+
}
23+
24+
for _, pn := range listPrivateNetwork.ServerPrivateNetworks {
25+
err := privateNetworkAPI.DeleteServerPrivateNetwork(&applesilicon.PrivateNetworkAPIDeleteServerPrivateNetworkRequest{
26+
Zone: zone,
27+
ServerID: serverID,
28+
PrivateNetworkID: pn.PrivateNetworkID,
29+
}, scw.WithContext(ctx))
30+
if err != nil {
31+
return err
32+
}
33+
}
34+
35+
_, err = waitForAppleSiliconPrivateNetworkServer(ctx, privateNetworkAPI, zone, serverID, d.Timeout(schema.TimeoutDelete))
36+
if err != nil && !httperrors.Is404(err) {
37+
return err
38+
}
39+
return nil
40+
}

internal/services/applesilicon/server.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,11 @@ func ResourceAppleSiliconServerUpdate(ctx context.Context, d *schema.ResourceDat
241241
return diag.FromErr(err)
242242
}
243243

244+
appleSilisonPrivateNetworkAPI, zone, err := newPrivateNetworkAPIWithZone(d, m)
245+
if err != nil {
246+
return diag.FromErr(err)
247+
}
248+
244249
req := &applesilicon.UpdateServerRequest{
245250
Zone: zone,
246251
ServerID: ID,
@@ -255,6 +260,23 @@ func ResourceAppleSiliconServerUpdate(ctx context.Context, d *schema.ResourceDat
255260
req.EnableVpc = &enableVpc
256261
}
257262

263+
if d.HasChange("private_network") {
264+
privateNetwork := d.Get("private_network")
265+
266+
req := &applesilicon.PrivateNetworkAPISetServerPrivateNetworksRequest{
267+
Zone: zone,
268+
ServerID: ID,
269+
PerPrivateNetworkIpamIPIDs: expandPrivateNetworks(privateNetwork),
270+
}
271+
272+
_, err := appleSilisonPrivateNetworkAPI.SetServerPrivateNetworks(req, scw.WithContext(ctx))
273+
if err != nil {
274+
return diag.FromErr(err)
275+
}
276+
277+
_, err = waitForAppleSiliconPrivateNetworkServer(ctx, appleSilisonPrivateNetworkAPI, zone, ID, d.Timeout(schema.TimeoutCreate))
278+
}
279+
258280
_, err = asAPI.UpdateServer(req, scw.WithContext(ctx))
259281
if err != nil {
260282
return diag.FromErr(err)
@@ -269,6 +291,11 @@ func ResourceAppleSiliconServerDelete(ctx context.Context, d *schema.ResourceDat
269291
return diag.FromErr(err)
270292
}
271293

294+
err = detachAllPrivateNetworkFromServer(ctx, d, m, ID)
295+
if err != nil {
296+
return diag.FromErr(err)
297+
}
298+
272299
err = asAPI.DeleteServer(&applesilicon.DeleteServerRequest{
273300
Zone: zone,
274301
ServerID: ID,

internal/services/applesilicon/server_test.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ func TestAccServer_Basic(t *testing.T) {
2424
{
2525
Config: `
2626
resource scaleway_apple_silicon_server main {
27-
name = "test-m1"
27+
name = "test-m2"
2828
type = "M2-M"
2929
}
3030
`,
3131
Check: resource.ComposeTestCheckFunc(
3232
isServerPresent(tt, "scaleway_apple_silicon_server.main"),
33-
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "name", "test-m1"),
33+
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "name", "test-m2"),
3434
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "type", "M2-M"),
3535
// Computed
3636
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "ip"),
@@ -55,11 +55,11 @@ func TestAccServer_EnableVPC(t *testing.T) {
5555
{
5656
Config: `
5757
resource "scaleway_vpc" "vpc01" {
58-
name = "TestAccScalewayBaremetalIPAM"
58+
name = "TestAccServer_EnableVPC"
5959
}
6060
6161
resource "scaleway_vpc_private_network" "pn01" {
62-
name = "TestAccScalewayBaremetalIPAM"
62+
name = "TestAccServer_EnableVPC"
6363
ipv4_subnet {
6464
subnet = "172.16.64.0/22"
6565
}
@@ -84,10 +84,6 @@ func TestAccServer_EnableVPC(t *testing.T) {
8484
name = "test-m2"
8585
type = "M2-M"
8686
enable_vpc = true
87-
private_network {
88-
id = scaleway_vpc_private_network.pn01.id
89-
ipam_ip_ids = [scaleway_ipam_ip.ip01.id]
90-
}
9187
}
9288
`,
9389
Check: resource.ComposeTestCheckFunc(
@@ -113,13 +109,14 @@ func TestAccServer_EnableVPC(t *testing.T) {
113109
Check: resource.ComposeTestCheckFunc(
114110
isServerPresent(tt, "scaleway_apple_silicon_server.main"),
115111
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "name", "test-m2"),
116-
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "type", "M1-M"),
112+
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "type", "M2-M"),
117113
// Computed
118114
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "ip"),
119115
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "vnc_url"),
120116
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "created_at"),
121117
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "deletable_at"),
122-
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "vpc_status", "vpc_disabled"),
118+
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "vpc_status", "vpc_updating"),
119+
resource.TestCheckNoResourceAttr("scaleway_apple_silicon_server.main", "vpc_id"),
123120
),
124121
},
125122
},

0 commit comments

Comments
 (0)