Skip to content

Commit 9c253f1

Browse files
authored
fix: fix checkdestroy function (#1276)
1 parent b496953 commit 9c253f1

File tree

45 files changed

+81344
-72667
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+81344
-72667
lines changed

scaleway/resource_instance_server.go

+4
Original file line numberDiff line numberDiff line change
@@ -952,7 +952,11 @@ func resourceScalewayInstanceServerDelete(ctx context.Context, d *schema.Resourc
952952
Zone: zone,
953953
ServerID: id,
954954
}, scw.WithContext(ctx))
955+
if err != nil && !is404Error(err) {
956+
return diag.FromErr(err)
957+
}
955958

959+
_, err = waitForInstanceServer(ctx, instanceAPI, zone, id, d.Timeout(schema.TimeoutDelete))
956960
if err != nil && !is404Error(err) {
957961
return diag.FromErr(err)
958962
}

scaleway/resource_instance_snapshot.go

+7
Original file line numberDiff line numberDiff line change
@@ -178,5 +178,12 @@ func resourceScalewayInstanceSnapshotDelete(ctx context.Context, d *schema.Resou
178178
}
179179
}
180180

181+
_, err = waitForInstanceSnapshot(ctx, instanceAPI, zone, id, d.Timeout(schema.TimeoutDelete))
182+
if err != nil {
183+
if !is404Error(err) {
184+
return diag.FromErr(err)
185+
}
186+
}
187+
181188
return nil
182189
}

scaleway/resource_instance_snapshot_test.go

+37-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,11 @@ func TestAccScalewayInstanceSnapshot_ServerWithBlockVolume(t *testing.T) {
6767
resource.Test(t, resource.TestCase{
6868
PreCheck: func() { testAccPreCheck(t) },
6969
ProviderFactories: tt.ProviderFactories,
70-
CheckDestroy: testAccCheckScalewayInstanceVolumeDestroy(tt),
70+
CheckDestroy: resource.ComposeTestCheckFunc(
71+
testAccCheckScalewayInstanceVolumeDestroy(tt),
72+
testAccCheckScalewayInstanceServerDestroy(tt),
73+
testAccCheckScalewayInstanceSnapshotDestroy(tt),
74+
),
7175
Steps: []resource.TestStep{
7276
{
7377
Config: `
@@ -165,3 +169,35 @@ func testAccCheckScalewayInstanceSnapShotExists(tt *TestTools, n string) resourc
165169
return nil
166170
}
167171
}
172+
173+
func testAccCheckScalewayInstanceSnapshotDestroy(tt *TestTools) resource.TestCheckFunc {
174+
return func(state *terraform.State) error {
175+
for _, rs := range state.RootModule().Resources {
176+
if rs.Type != "scaleway_instance_snapshot" {
177+
continue
178+
}
179+
180+
instanceAPI, zone, ID, err := instanceAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
181+
if err != nil {
182+
return err
183+
}
184+
185+
_, err = instanceAPI.GetSnapshot(&instance.GetSnapshotRequest{
186+
SnapshotID: ID,
187+
Zone: zone,
188+
})
189+
190+
// If no error resource still exist
191+
if err == nil {
192+
return fmt.Errorf("snapshot (%s) still exists", rs.Primary.ID)
193+
}
194+
195+
// Unexpected api error we return it
196+
if !is404Error(err) {
197+
return err
198+
}
199+
}
200+
201+
return nil
202+
}
203+
}

scaleway/resource_lb.go

+5
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,11 @@ func resourceScalewayLbDelete(ctx context.Context, d *schema.ResourceData, meta
369369
return diag.FromErr(err)
370370
}
371371

372+
_, err = waitForLB(ctx, lbAPI, zone, ID, d.Timeout(schema.TimeoutDelete))
373+
if err != nil && !is404Error(err) {
374+
return diag.FromErr(err)
375+
}
376+
372377
_, err = waitForLbInstances(ctx, lbAPI, zone, ID, d.Timeout(schema.TimeoutDelete))
373378
if err != nil && !is404Error(err) {
374379
return diag.FromErr(err)

scaleway/resource_lb_certificate_test.go

+40-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package scaleway
22

33
import (
4+
"fmt"
45
"testing"
56

67
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
9+
lbSDK "github.com/scaleway/scaleway-sdk-go/api/lb/v1"
710
)
811

912
func TestAccScalewayLbCertificate_Basic(t *testing.T) {
@@ -19,7 +22,11 @@ func TestAccScalewayLbCertificate_Basic(t *testing.T) {
1922
resource.ParallelTest(t, resource.TestCase{
2023
PreCheck: func() { testAccPreCheck(t) },
2124
ProviderFactories: tt.ProviderFactories,
22-
CheckDestroy: testAccCheckScalewayLbDestroy(tt),
25+
CheckDestroy: resource.ComposeTestCheckFunc(
26+
testAccCheckScalewayLbDestroy(tt),
27+
testAccCheckScalewayLbIPDestroy(tt),
28+
testAccCheckScalewayLbCertificateDestroy(tt),
29+
),
2330
Steps: []resource.TestStep{
2431
{
2532
Config: `
@@ -217,3 +224,35 @@ EOF
217224
},
218225
})
219226
}
227+
228+
func testAccCheckScalewayLbCertificateDestroy(tt *TestTools) resource.TestCheckFunc {
229+
return func(state *terraform.State) error {
230+
for _, rs := range state.RootModule().Resources {
231+
if rs.Type != "scaleway_lb_certificate" {
232+
continue
233+
}
234+
235+
lbAPI, zone, ID, err := lbAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
236+
if err != nil {
237+
return err
238+
}
239+
240+
_, err = lbAPI.GetCertificate(&lbSDK.ZonedAPIGetCertificateRequest{
241+
CertificateID: ID,
242+
Zone: zone,
243+
})
244+
245+
// If no error resource still exist
246+
if err == nil {
247+
return fmt.Errorf("LB Certificate (%s) still exists", rs.Primary.ID)
248+
}
249+
250+
// Unexpected api error we return it
251+
if !is404Error(err) {
252+
return err
253+
}
254+
}
255+
256+
return nil
257+
}
258+
}

scaleway/resource_lb_test.go

+31-24
Original file line numberDiff line numberDiff line change
@@ -271,44 +271,45 @@ func TestAccScalewayLbLb_WithSeveralPrivateNetworks(t *testing.T) {
271271
resource.ParallelTest(t, resource.TestCase{
272272
PreCheck: func() { testAccPreCheck(t) },
273273
ProviderFactories: tt.ProviderFactories,
274-
CheckDestroy: testAccCheckScalewayLbDestroy(tt),
274+
CheckDestroy: resource.ComposeTestCheckFunc(
275+
testAccCheckScalewayInstanceServerDestroy(tt),
276+
testAccCheckScalewayLbDestroy(tt),
277+
testAccCheckScalewayLbIPDestroy(tt),
278+
testAccCheckScalewayVPCGatewayNetworkDestroy(tt),
279+
testAccCheckScalewayVPCPrivateNetworkDestroy(tt),
280+
testAccCheckScalewayVPCPublicGatewayDHCPDestroy(tt),
281+
testAccCheckScalewayVPCPublicGatewayDestroy(tt),
282+
testAccCheckScalewayVPCPublicGatewayIPDestroy(tt),
283+
),
275284
Steps: []resource.TestStep{
276285
{
277286
Config: `
278-
### IP for LB IP
279-
resource scaleway_lb_ip ip01 {
280-
}
281-
282-
### IP for Public Gateway
283-
resource "scaleway_vpc_public_gateway_ip" "main" {
287+
resource "scaleway_vpc_private_network" dhcp_network {
288+
name = "private network with a DHCP config"
284289
}
285-
286-
### Scaleway Private Network
287-
resource scaleway_vpc_private_network main {
290+
291+
resource scaleway_vpc_private_network static_network {
288292
name = "private network with static config"
289293
}
290-
291-
### The Public Gateway with the Attached IP
294+
295+
296+
resource "scaleway_vpc_public_gateway_ip" "main" {
297+
}
298+
292299
resource "scaleway_vpc_public_gateway" "main" {
293300
name = "tf-test-public-gw"
294301
type = "VPC-GW-S"
295302
ip_id = scaleway_vpc_public_gateway_ip.main.id
296303
}
297304
298-
### Scaleway Private Network
299-
resource "scaleway_vpc_private_network" "pn" {
300-
name = "private network with a DHCP config"
301-
}
302-
303-
### DHCP Space of VPC
304305
resource "scaleway_vpc_public_gateway_dhcp" "main" {
305306
subnet = "10.0.0.0/24"
306307
}
307308
308309
### VPC Gateway Network
309310
resource "scaleway_vpc_gateway_network" "main" {
310311
gateway_id = scaleway_vpc_public_gateway.main.id
311-
private_network_id = scaleway_vpc_private_network.pn.id
312+
private_network_id = scaleway_vpc_private_network.dhcp_network.id
312313
dhcp_id = scaleway_vpc_public_gateway_dhcp.main.id
313314
cleanup_dhcp = true
314315
enable_masquerade = true
@@ -322,22 +323,27 @@ func TestAccScalewayLbLb_WithSeveralPrivateNetworks(t *testing.T) {
322323
enable_ipv6 = false
323324
324325
private_network {
325-
pn_id = scaleway_vpc_private_network.pn.id
326+
pn_id = scaleway_vpc_private_network.dhcp_network.id
326327
}
328+
329+
depends_on = [scaleway_vpc_private_network.dhcp_network]
327330
}
328-
331+
332+
resource scaleway_lb_ip ip01 {
333+
}
334+
329335
resource scaleway_lb lb01 {
330336
ip_id = scaleway_lb_ip.ip01.id
331337
name = "test-lb-with-private-network-configs"
332338
type = "LB-S"
333339
334340
private_network {
335-
private_network_id = scaleway_vpc_private_network.main.id
341+
private_network_id = scaleway_vpc_private_network.static_network.id
336342
static_config = ["172.16.0.100", "172.16.0.101"]
337343
}
338344
339345
private_network {
340-
private_network_id = scaleway_vpc_private_network.pn.id
346+
private_network_id = scaleway_vpc_private_network.dhcp_network.id
341347
dhcp_config = true
342348
}
343349
@@ -347,7 +353,8 @@ func TestAccScalewayLbLb_WithSeveralPrivateNetworks(t *testing.T) {
347353
Check: resource.ComposeTestCheckFunc(
348354
testAccCheckScalewayLbExists(tt, "scaleway_lb.lb01"),
349355
testAccCheckScalewayLbIPExists(tt, "scaleway_lb_ip.ip01"),
350-
resource.TestCheckResourceAttrSet("scaleway_vpc_private_network.pn", "name"),
356+
resource.TestCheckResourceAttrSet("scaleway_vpc_private_network.dhcp_network", "name"),
357+
resource.TestCheckResourceAttrSet("scaleway_vpc_private_network.static_network", "name"),
351358
resource.TestCheckResourceAttr("scaleway_lb.lb01",
352359
"private_network.0.static_config.0", "172.16.0.100"),
353360
resource.TestCheckResourceAttr("scaleway_lb.lb01",

0 commit comments

Comments
 (0)