Skip to content

Commit 607f609

Browse files
authored
fix(lb): check certificate update & lb state post destroy check (scaleway#978)
1 parent 25c7600 commit 607f609

13 files changed

+3666
-3567
lines changed

scaleway/resource_lb_certificate.go

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -249,29 +249,31 @@ func resourceScalewayLbCertificateUpdate(ctx context.Context, d *schema.Resource
249249
return diag.FromErr(err)
250250
}
251251

252-
req := &lb.ZonedAPIUpdateCertificateRequest{
253-
CertificateID: ID,
254-
Zone: zone,
255-
Name: d.Get("name").(string),
256-
}
252+
if d.HasChange("name") {
253+
req := &lb.ZonedAPIUpdateCertificateRequest{
254+
CertificateID: ID,
255+
Zone: zone,
256+
Name: d.Get("name").(string),
257+
}
257258

258-
_, err = lbAPI.UpdateCertificate(req, scw.WithContext(ctx))
259-
if err != nil {
260-
return diag.FromErr(err)
261-
}
259+
cert, err = lbAPI.UpdateCertificate(req, scw.WithContext(ctx))
260+
if err != nil {
261+
return diag.FromErr(err)
262+
}
262263

263-
_, err = lbAPI.WaitForLb(&lb.ZonedAPIWaitForLBRequest{
264-
Zone: zone,
265-
LBID: cert.LB.ID,
266-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
267-
RetryInterval: &retryInterval,
268-
}, scw.WithContext(ctx))
269-
if err != nil {
270-
if is403Error(err) {
271-
d.SetId("")
272-
return nil
264+
_, err = lbAPI.WaitForLb(&lb.ZonedAPIWaitForLBRequest{
265+
Zone: zone,
266+
LBID: cert.LB.ID,
267+
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
268+
RetryInterval: &retryInterval,
269+
}, scw.WithContext(ctx))
270+
if err != nil {
271+
if is403Error(err) {
272+
d.SetId("")
273+
return nil
274+
}
275+
return diag.FromErr(err)
273276
}
274-
return diag.FromErr(err)
275277
}
276278

277279
return resourceScalewayLbCertificateRead(ctx, d, meta)

scaleway/resource_lb_ip.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,5 +238,22 @@ func resourceScalewayLbIPDelete(ctx context.Context, d *schema.ResourceData, met
238238
return diag.FromErr(err)
239239
}
240240

241+
// check lb state
242+
if res.LBID != nil {
243+
_, err = lbAPI.WaitForLb(&lb.ZonedAPIWaitForLBRequest{
244+
Zone: zone,
245+
LBID: *res.LBID,
246+
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
247+
RetryInterval: scw.TimeDurationPtr(DefaultWaitLBRetryInterval),
248+
}, scw.WithContext(ctx))
249+
if err != nil {
250+
if is404Error(err) || is403Error(err) {
251+
d.SetId("")
252+
return nil
253+
}
254+
return diag.FromErr(err)
255+
}
256+
}
257+
241258
return nil
242259
}

scaleway/resource_lb_ip_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,20 @@ func testAccCheckScalewayLbIPDestroy(tt *TestTools) resource.TestCheckFunc {
132132
return err
133133
}
134134

135+
lbID, lbExist := rs.Primary.Attributes["lb_id"]
136+
if lbExist && len(lbID) > 0 {
137+
_, err = lbAPI.WaitForLb(&lb.ZonedAPIWaitForLBRequest{
138+
Zone: zone,
139+
LBID: lbID,
140+
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
141+
RetryInterval: scw.TimeDurationPtr(DefaultWaitLBRetryInterval),
142+
})
143+
// Unexpected api error we return it
144+
if !is404Error(err) {
145+
return err
146+
}
147+
}
148+
135149
_, err = lbAPI.GetIP(&lb.ZonedAPIGetIPRequest{
136150
Zone: zone,
137151
IPID: ID,

scaleway/testdata/data-source-lb-basic.cassette.yaml

Lines changed: 240 additions & 207 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)