Skip to content

Commit e178ead

Browse files
authored
chore(lb): add support for context workflow (#624)
1 parent df19e7c commit e178ead

6 files changed

+167
-149
lines changed

scaleway/data_source_lb_ip_beta.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package scaleway
22

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

7+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
68
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
79
"github.com/scaleway/scaleway-sdk-go/api/lb/v1"
10+
"github.com/scaleway/scaleway-sdk-go/scw"
811
)
912

1013
func dataSourceScalewayLbIPBeta() *schema.Resource {
@@ -26,15 +29,15 @@ func dataSourceScalewayLbIPBeta() *schema.Resource {
2629
}
2730

2831
return &schema.Resource{
29-
Read: dataSourceScalewayLbIPBetaRead,
30-
Schema: dsSchema,
32+
ReadContext: dataSourceScalewayLbIPBetaRead,
33+
Schema: dsSchema,
3134
}
3235
}
3336

34-
func dataSourceScalewayLbIPBetaRead(d *schema.ResourceData, m interface{}) error {
37+
func dataSourceScalewayLbIPBetaRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
3538
api, region, err := lbAPIWithRegion(d, m)
3639
if err != nil {
37-
return err
40+
return diag.FromErr(err)
3841
}
3942

4043
ipID, ok := d.GetOk("ip_id")
@@ -44,15 +47,15 @@ func dataSourceScalewayLbIPBetaRead(d *schema.ResourceData, m interface{}) error
4447
IPAddress: expandStringPtr(d.Get("ip_address")),
4548
OrganizationID: expandStringPtr(d.Get("organization_id")),
4649
ProjectID: expandStringPtr(d.Get("project_id")),
47-
})
50+
}, scw.WithContext(ctx))
4851
if err != nil {
49-
return err
52+
return diag.FromErr(err)
5053
}
5154
if len(res.IPs) == 0 {
52-
return fmt.Errorf("no ips found with the address %s", d.Get("ip_address"))
55+
return diag.FromErr(fmt.Errorf("no ips found with the address %s", d.Get("ip_address")))
5356
}
5457
if len(res.IPs) > 1 {
55-
return fmt.Errorf("%d ips found with the same address %s", len(res.IPs), d.Get("ip_address"))
58+
return diag.FromErr(fmt.Errorf("%d ips found with the same address %s", len(res.IPs), d.Get("ip_address")))
5659
}
5760
ipID = res.IPs[0].ID
5861
}
@@ -61,7 +64,7 @@ func dataSourceScalewayLbIPBetaRead(d *schema.ResourceData, m interface{}) error
6164
d.SetId(regionalID)
6265
err = d.Set("ip_id", regionalID)
6366
if err != nil {
64-
return err
67+
return diag.FromErr(err)
6568
}
66-
return resourceScalewayLbIPBetaRead(d, m)
69+
return resourceScalewayLbIPBetaRead(ctx, d, m)
6770
}

scaleway/resource_lb_backend_beta.go

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package scaleway
22

33
import (
4+
"context"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
47
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
58
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
69
"github.com/scaleway/scaleway-sdk-go/api/lb/v1"
10+
"github.com/scaleway/scaleway-sdk-go/scw"
711
)
812

913
func resourceScalewayLbBackendBeta() *schema.Resource {
1014
return &schema.Resource{
11-
Create: resourceScalewayLbBackendBetaCreate,
12-
Read: resourceScalewayLbBackendBetaRead,
13-
Update: resourceScalewayLbBackendBetaUpdate,
14-
Delete: resourceScalewayLbBackendBetaDelete,
15+
CreateContext: resourceScalewayLbBackendBetaCreate,
16+
ReadContext: resourceScalewayLbBackendBetaRead,
17+
UpdateContext: resourceScalewayLbBackendBetaUpdate,
18+
DeleteContext: resourceScalewayLbBackendBetaDelete,
1519
Importer: &schema.ResourceImporter{
16-
State: schema.ImportStatePassthrough,
20+
StateContext: schema.ImportStatePassthroughContext,
1721
},
1822
SchemaVersion: 0,
1923
Schema: map[string]*schema.Schema{
@@ -228,12 +232,12 @@ func resourceScalewayLbBackendBeta() *schema.Resource {
228232
}
229233
}
230234

231-
func resourceScalewayLbBackendBetaCreate(d *schema.ResourceData, m interface{}) error {
235+
func resourceScalewayLbBackendBetaCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
232236
lbAPI := lbAPI(m)
233237

234238
region, LbID, err := parseRegionalID(d.Get("lb_id").(string))
235239
if err != nil {
236-
return err
240+
return diag.FromErr(err)
237241
}
238242

239243
healthCheckPort := d.Get("health_check_port").(int)
@@ -268,33 +272,33 @@ func resourceScalewayLbBackendBetaCreate(d *schema.ResourceData, m interface{})
268272
OnMarkedDownAction: expandLbBackendMarkdownAction(d.Get("on_marked_down_action")),
269273
}
270274

271-
res, err := lbAPI.CreateBackend(createReq)
275+
res, err := lbAPI.CreateBackend(createReq, scw.WithContext(ctx))
272276
if err != nil {
273-
return err
277+
return diag.FromErr(err)
274278
}
275279

276280
d.SetId(newRegionalIDString(region, res.ID))
277281

278-
return resourceScalewayLbBackendBetaRead(d, m)
282+
return resourceScalewayLbBackendBetaRead(ctx, d, m)
279283
}
280284

281-
func resourceScalewayLbBackendBetaRead(d *schema.ResourceData, m interface{}) error {
285+
func resourceScalewayLbBackendBetaRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
282286
lbAPI, region, ID, err := lbAPIWithRegionAndID(m, d.Id())
283287
if err != nil {
284-
return err
288+
return diag.FromErr(err)
285289
}
286290

287291
res, err := lbAPI.GetBackend(&lb.GetBackendRequest{
288292
Region: region,
289293
BackendID: ID,
290-
})
294+
}, scw.WithContext(ctx))
291295

292296
if err != nil {
293297
if is404Error(err) {
294298
d.SetId("")
295299
return nil
296300
}
297-
return err
301+
return diag.FromErr(err)
298302
}
299303

300304
_ = d.Set("lb_id", newRegionalIDString(region, res.LB.ID))
@@ -322,10 +326,10 @@ func resourceScalewayLbBackendBetaRead(d *schema.ResourceData, m interface{}) er
322326
return nil
323327
}
324328

325-
func resourceScalewayLbBackendBetaUpdate(d *schema.ResourceData, m interface{}) error {
329+
func resourceScalewayLbBackendBetaUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
326330
lbAPI, region, ID, err := lbAPIWithRegionAndID(m, d.Id())
327331
if err != nil {
328-
return err
332+
return diag.FromErr(err)
329333
}
330334

331335
req := &lb.UpdateBackendRequest{
@@ -345,9 +349,9 @@ func resourceScalewayLbBackendBetaUpdate(d *schema.ResourceData, m interface{})
345349
OnMarkedDownAction: expandLbBackendMarkdownAction(d.Get("on_marked_down_action")),
346350
}
347351

348-
_, err = lbAPI.UpdateBackend(req)
352+
_, err = lbAPI.UpdateBackend(req, scw.WithContext(ctx))
349353
if err != nil {
350-
return err
354+
return diag.FromErr(err)
351355
}
352356

353357
// Update Health Check
@@ -367,37 +371,37 @@ func resourceScalewayLbBackendBetaUpdate(d *schema.ResourceData, m interface{})
367371
updateHCRequest.TCPConfig = expandLbHCTCP(d.Get("health_check_tcp"))
368372
}
369373

370-
_, err = lbAPI.UpdateHealthCheck(updateHCRequest)
374+
_, err = lbAPI.UpdateHealthCheck(updateHCRequest, scw.WithContext(ctx))
371375
if err != nil {
372-
return err
376+
return diag.FromErr(err)
373377
}
374378

375379
// Update Backend servers
376380
_, err = lbAPI.SetBackendServers(&lb.SetBackendServersRequest{
377381
Region: region,
378382
BackendID: ID,
379383
ServerIP: expandStrings(d.Get("server_ips")),
380-
})
384+
}, scw.WithContext(ctx))
381385
if err != nil {
382-
return err
386+
return diag.FromErr(err)
383387
}
384388

385-
return resourceScalewayLbBackendBetaRead(d, m)
389+
return resourceScalewayLbBackendBetaRead(ctx, d, m)
386390
}
387391

388-
func resourceScalewayLbBackendBetaDelete(d *schema.ResourceData, m interface{}) error {
392+
func resourceScalewayLbBackendBetaDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
389393
lbAPI, region, ID, err := lbAPIWithRegionAndID(m, d.Id())
390394
if err != nil {
391-
return err
395+
return diag.FromErr(err)
392396
}
393397

394398
err = lbAPI.DeleteBackend(&lb.DeleteBackendRequest{
395399
Region: region,
396400
BackendID: ID,
397-
})
401+
}, scw.WithContext(ctx))
398402

399403
if err != nil && !is404Error(err) {
400-
return err
404+
return diag.FromErr(err)
401405
}
402406

403407
return nil

scaleway/resource_lb_beta.go

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
package scaleway
22

33
import (
4+
"context"
45
"strings"
56

7+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
68
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
79
lb "github.com/scaleway/scaleway-sdk-go/api/lb/v1"
810
"github.com/scaleway/scaleway-sdk-go/scw"
911
)
1012

1113
func resourceScalewayLbBeta() *schema.Resource {
1214
return &schema.Resource{
13-
Create: resourceScalewayLbBetaCreate,
14-
Read: resourceScalewayLbBetaRead,
15-
Update: resourceScalewayLbBetaUpdate,
16-
Delete: resourceScalewayLbBetaDelete,
15+
CreateContext: resourceScalewayLbBetaCreate,
16+
ReadContext: resourceScalewayLbBetaRead,
17+
UpdateContext: resourceScalewayLbBetaUpdate,
18+
DeleteContext: resourceScalewayLbBetaDelete,
1719
Importer: &schema.ResourceImporter{
18-
State: schema.ImportStatePassthrough,
20+
StateContext: schema.ImportStatePassthroughContext,
1921
},
2022
SchemaVersion: 0,
2123
Schema: map[string]*schema.Schema{
@@ -59,10 +61,10 @@ func resourceScalewayLbBeta() *schema.Resource {
5961
}
6062
}
6163

62-
func resourceScalewayLbBetaCreate(d *schema.ResourceData, m interface{}) error {
64+
func resourceScalewayLbBetaCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
6365
lbAPI, region, err := lbAPIWithRegion(d, m)
6466
if err != nil {
65-
return err
67+
return diag.FromErr(err)
6668
}
6769

6870
createReq := &lb.CreateLBRequest{
@@ -79,9 +81,9 @@ func resourceScalewayLbBetaCreate(d *schema.ResourceData, m interface{}) error {
7981
createReq.Tags = append(createReq.Tags, tag.(string))
8082
}
8183
}
82-
res, err := lbAPI.CreateLB(createReq)
84+
res, err := lbAPI.CreateLB(createReq, scw.WithContext(ctx))
8385
if err != nil {
84-
return err
86+
return diag.FromErr(err)
8587
}
8688

8789
d.SetId(newRegionalIDString(region, res.ID))
@@ -90,31 +92,31 @@ func resourceScalewayLbBetaCreate(d *schema.ResourceData, m interface{}) error {
9092
Region: region,
9193
LBID: res.ID,
9294
Timeout: scw.TimeDurationPtr(InstanceServerWaitForTimeout),
93-
})
95+
}, scw.WithContext(ctx))
9496
if err != nil {
95-
return err
97+
return diag.FromErr(err)
9698
}
9799

98-
return resourceScalewayLbBetaRead(d, m)
100+
return resourceScalewayLbBetaRead(ctx, d, m)
99101
}
100102

101-
func resourceScalewayLbBetaRead(d *schema.ResourceData, m interface{}) error {
103+
func resourceScalewayLbBetaRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
102104
lbAPI, region, ID, err := lbAPIWithRegionAndID(m, d.Id())
103105
if err != nil {
104-
return err
106+
return diag.FromErr(err)
105107
}
106108

107109
res, err := lbAPI.GetLB(&lb.GetLBRequest{
108110
Region: region,
109111
LBID: ID,
110-
})
112+
}, scw.WithContext(ctx))
111113

112114
if err != nil {
113115
if is404Error(err) {
114116
d.SetId("")
115117
return nil
116118
}
117-
return err
119+
return diag.FromErr(err)
118120
}
119121

120122
_ = d.Set("name", res.Name)
@@ -130,10 +132,10 @@ func resourceScalewayLbBetaRead(d *schema.ResourceData, m interface{}) error {
130132
return nil
131133
}
132134

133-
func resourceScalewayLbBetaUpdate(d *schema.ResourceData, m interface{}) error {
135+
func resourceScalewayLbBetaUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
134136
lbAPI, region, ID, err := lbAPIWithRegionAndID(m, d.Id())
135137
if err != nil {
136-
return err
138+
return diag.FromErr(err)
137139
}
138140

139141
if d.HasChange("name") || d.HasChange("tags") {
@@ -144,39 +146,39 @@ func resourceScalewayLbBetaUpdate(d *schema.ResourceData, m interface{}) error {
144146
Tags: expandStrings(d.Get("tags")),
145147
}
146148

147-
_, err = lbAPI.UpdateLB(req)
149+
_, err = lbAPI.UpdateLB(req, scw.WithContext(ctx))
148150
if err != nil {
149-
return err
151+
return diag.FromErr(err)
150152
}
151153
}
152154

153-
return resourceScalewayLbBetaRead(d, m)
155+
return resourceScalewayLbBetaRead(ctx, d, m)
154156
}
155157

156-
func resourceScalewayLbBetaDelete(d *schema.ResourceData, m interface{}) error {
158+
func resourceScalewayLbBetaDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
157159
lbAPI, region, ID, err := lbAPIWithRegionAndID(m, d.Id())
158160
if err != nil {
159-
return err
161+
return diag.FromErr(err)
160162
}
161163

162164
err = lbAPI.DeleteLB(&lb.DeleteLBRequest{
163165
Region: region,
164166
LBID: ID,
165167
ReleaseIP: false,
166-
})
168+
}, scw.WithContext(ctx))
167169

168170
if err != nil && !is404Error(err) {
169-
return err
171+
return diag.FromErr(err)
170172
}
171173

172174
_, err = lbAPI.WaitForLb(&lb.WaitForLBRequest{
173175
LBID: ID,
174176
Region: region,
175177
Timeout: scw.TimeDurationPtr(LbWaitForTimeout),
176-
})
178+
}, scw.WithContext(ctx))
177179

178180
if err != nil && !is404Error(err) {
179-
return err
181+
return diag.FromErr(err)
180182
}
181183

182184
return nil

0 commit comments

Comments
 (0)