Skip to content

Commit 940baad

Browse files
committed
manage updating vpc enable update
1 parent f9ec200 commit 940baad

File tree

6 files changed

+2892
-478
lines changed

6 files changed

+2892
-478
lines changed

go.mod

Lines changed: 3 additions & 3 deletions
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.20250129134826-04caf0452484
33+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32.0.20250206084743-1234a876129f
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
@@ -128,9 +128,9 @@ require (
128128
go.opentelemetry.io/otel/trace v1.31.0 // indirect
129129
golang.org/x/mod v0.21.0 // indirect
130130
golang.org/x/net v0.33.0 // indirect
131-
golang.org/x/sync v0.10.0 // indirect
131+
golang.org/x/sync v0.11.0 // indirect
132132
golang.org/x/sys v0.28.0 // indirect
133-
golang.org/x/text v0.21.0 // indirect
133+
golang.org/x/text v0.22.0 // indirect
134134
golang.org/x/time v0.3.0 // indirect
135135
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
136136
google.golang.org/appengine v1.6.8 // indirect

go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,10 @@ github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250128135513-ad2f1fb6c4b9
290290
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250128135513-ad2f1fb6c4b9/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
291291
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250129134826-04caf0452484 h1:CQNllJ4XCELHD64WYXHh0ytdJYr0DAEcr0GkvAQfds4=
292292
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.31.0.20250129134826-04caf0452484/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
293+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32.0.20250205152403-321fffa9b773 h1:GcnDK6t8Q4wXHW5EACR1HRs1emlOeMACRrJ0JXOwBoo=
294+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32.0.20250205152403-321fffa9b773/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk=
295+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32.0.20250206084743-1234a876129f h1:xHnQ7GB9FaK4uB6XZHwQslYIG55uI9WJXbgHblIC5o0=
296+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32.0.20250206084743-1234a876129f/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk=
293297
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
294298
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
295299
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
@@ -378,6 +382,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
378382
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
379383
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
380384
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
385+
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
386+
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
381387
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
382388
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
383389
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -409,6 +415,8 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
409415
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
410416
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
411417
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
418+
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
419+
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
412420
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
413421
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
414422
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

internal/services/applesilicon/server.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -260,9 +260,13 @@ func ResourceAppleSiliconServerUpdate(ctx context.Context, d *schema.ResourceDat
260260
req.EnableVpc = &enableVpc
261261
}
262262

263+
_, err = asAPI.UpdateServer(req, scw.WithContext(ctx))
264+
if err != nil {
265+
return diag.FromErr(err)
266+
}
267+
263268
if d.HasChange("private_network") && *req.EnableVpc {
264269
privateNetwork := d.Get("private_network")
265-
266270
req := &applesilicon.PrivateNetworkAPISetServerPrivateNetworksRequest{
267271
Zone: zone,
268272
ServerID: ID,
@@ -277,11 +281,6 @@ func ResourceAppleSiliconServerUpdate(ctx context.Context, d *schema.ResourceDat
277281
_, err = waitForAppleSiliconPrivateNetworkServer(ctx, appleSilisonPrivateNetworkAPI, zone, ID, d.Timeout(schema.TimeoutCreate))
278282
}
279283

280-
_, err = asAPI.UpdateServer(req, scw.WithContext(ctx))
281-
if err != nil {
282-
return diag.FromErr(err)
283-
}
284-
285284
return ResourceAppleSiliconServerRead(ctx, d, m)
286285
}
287286

internal/services/applesilicon/server_test.go

Lines changed: 61 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,61 @@ func TestAccServer_Basic(t *testing.T) {
4343
})
4444
}
4545

46+
func TestAccServer_EnableDisabledVPC(t *testing.T) {
47+
//t.Skip("Skipping AppleSilicon VPC not available")
48+
tt := acctest.NewTestTools(t)
49+
defer tt.Cleanup()
50+
resource.ParallelTest(t, resource.TestCase{
51+
PreCheck: func() { acctest.PreCheck(t) },
52+
ProviderFactories: tt.ProviderFactories,
53+
CheckDestroy: isServerDestroyed(tt),
54+
Steps: []resource.TestStep{
55+
{
56+
Config: `
57+
58+
resource scaleway_apple_silicon_server main {
59+
name = "TestAccServerEnableVPC"
60+
type = "M2-M"
61+
enable_vpc = true
62+
}
63+
`,
64+
Check: resource.ComposeTestCheckFunc(
65+
isServerPresent(tt, "scaleway_apple_silicon_server.main"),
66+
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "name", "TestAccServerEnableVPC"),
67+
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "type", "M2-M"),
68+
// Computed
69+
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "ip"),
70+
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "vnc_url"),
71+
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "created_at"),
72+
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "deletable_at"),
73+
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "vpc_status", "vpc_enabled"),
74+
),
75+
},
76+
{
77+
Config: `
78+
79+
resource scaleway_apple_silicon_server main {
80+
name = "TestAccServerEnableVPC"
81+
type = "M2-M"
82+
enable_vpc = false
83+
}
84+
`,
85+
Check: resource.ComposeTestCheckFunc(
86+
isServerPresent(tt, "scaleway_apple_silicon_server.main"),
87+
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "name", "TestAccServerEnableVPC"),
88+
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "type", "M2-M"),
89+
// Computed
90+
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "ip"),
91+
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "vnc_url"),
92+
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "created_at"),
93+
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "deletable_at"),
94+
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "vpc_status", "vpc_updating"),
95+
),
96+
},
97+
},
98+
})
99+
}
100+
46101
func TestAccServer_EnableVPC(t *testing.T) {
47102
//t.Skip("Skipping AppleSilicon VPC not available")
48103
tt := acctest.NewTestTools(t)
@@ -60,9 +115,6 @@ func TestAccServer_EnableVPC(t *testing.T) {
60115
61116
resource "scaleway_vpc_private_network" "pn01" {
62117
name = "TestAccServerEnableVPC"
63-
ipv4_subnet {
64-
subnet = "172.16.64.0/22"
65-
}
66118
vpc_id = scaleway_vpc.vpc01.id
67119
}
68120
@@ -90,24 +142,22 @@ func TestAccServer_EnableVPC(t *testing.T) {
90142
},
91143
{
92144
Config: `
93-
resource scaleway_apple_silicon_server main {
94-
name = "TestAccServerEnableVPC"
95-
type = "M2-M"
96-
enable_vpc = false
97-
}
98-
`,
145+
resource scaleway_apple_silicon_server main {
146+
name = "TestAccServerEnableVPC"
147+
type = "M2-M"
148+
enable_vpc = false
149+
}
150+
`,
99151
Check: resource.ComposeTestCheckFunc(
100152
isServerPresent(tt, "scaleway_apple_silicon_server.main"),
101153
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "name", "TestAccServerEnableVPC"),
102154
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "type", "M2-M"),
103-
resource.TestCheckNoResourceAttr("scaleway_apple_silicon_server.main", "private_network"),
104155
// Computed
105156
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "ip"),
106157
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "vnc_url"),
107158
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "created_at"),
108159
resource.TestCheckResourceAttrSet("scaleway_apple_silicon_server.main", "deletable_at"),
109160
resource.TestCheckResourceAttr("scaleway_apple_silicon_server.main", "vpc_status", "vpc_updating"),
110-
resource.TestCheckNoResourceAttr("scaleway_apple_silicon_server.main", "vpc_id"),
111161
),
112162
},
113163
},

0 commit comments

Comments
 (0)