Skip to content

Commit df19e7c

Browse files
authored
chore(baremetal): add support for context workflow (#616)
1 parent 3f14e08 commit df19e7c

File tree

2 files changed

+48
-43
lines changed

2 files changed

+48
-43
lines changed

scaleway/data_source_baremetal_offer.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
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"
7-
baremetal "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1"
9+
"github.com/scaleway/scaleway-sdk-go/api/baremetal/v1"
810
"github.com/scaleway/scaleway-sdk-go/scw"
911
)
1012

1113
func dataSourceScalewayBaremetalOffer() *schema.Resource {
1214
return &schema.Resource{
13-
Read: dataSourceScalewayBaremetalOfferRead,
15+
ReadContext: dataSourceScalewayBaremetalOfferRead,
1416

1517
Schema: map[string]*schema.Schema{
1618
"name": {
@@ -129,35 +131,35 @@ func dataSourceScalewayBaremetalOffer() *schema.Resource {
129131
}
130132
}
131133

132-
func dataSourceScalewayBaremetalOfferRead(d *schema.ResourceData, m interface{}) error {
134+
func dataSourceScalewayBaremetalOfferRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
133135
meta := m.(*Meta)
134136
baremetalAPI, fallBackZone, err := baremetalAPIWithZone(d, meta)
135137
if err != nil {
136-
return err
138+
return diag.FromErr(err)
137139
}
138140

139141
zone, offerID, _ := parseZonedID(datasourceNewZonedID(d.Get("offer_id"), fallBackZone))
140142
res, err := baremetalAPI.ListOffers(&baremetal.ListOffersRequest{
141143
Zone: zone,
142-
}, scw.WithAllPages())
144+
}, scw.WithAllPages(), scw.WithContext(ctx))
143145
if err != nil {
144-
return err
146+
return diag.FromErr(err)
145147
}
146148

147149
matches := []*baremetal.Offer(nil)
148150
for _, offer := range res.Offers {
149151
if offer.Name == d.Get("name") || offer.ID == offerID {
150152
if !offer.Enable && !d.Get("include_disabled").(bool) {
151-
return fmt.Errorf("offer %s (%s) found in zone %s but is disabled. Add allow_disabled=true in your terraform config to use it", offer.Name, offer.ID, zone)
153+
return diag.FromErr(fmt.Errorf("offer %s (%s) found in zone %s but is disabled. Add allow_disabled=true in your terraform config to use it", offer.Name, offer.ID, zone))
152154
}
153155
matches = append(matches, offer)
154156
}
155157
}
156158
if len(matches) == 0 {
157-
return fmt.Errorf("no offer found with the name %s in zone %s", d.Get("name"), zone)
159+
return diag.FromErr(fmt.Errorf("no offer found with the name %s in zone %s", d.Get("name"), zone))
158160
}
159161
if len(matches) > 1 {
160-
return fmt.Errorf("%d offers found with the same name %s in zone %s", len(matches), d.Get("name"), zone)
162+
return diag.FromErr(fmt.Errorf("%d offers found with the same name %s in zone %s", len(matches), d.Get("name"), zone))
161163
}
162164

163165
offer := matches[0]

scaleway/resource_baremetal_server.go

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
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
baremetal "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1"
@@ -10,12 +13,12 @@ import (
1013

1114
func resourceScalewayBaremetalServer() *schema.Resource {
1215
return &schema.Resource{
13-
Create: resourceScalewayBaremetalServerCreate,
14-
Read: resourceScalewayBaremetalServerRead,
15-
Update: resourceScalewayBaremetalServerUpdate,
16-
Delete: resourceScalewayBaremetalServerDelete,
16+
CreateContext: resourceScalewayBaremetalServerCreate,
17+
ReadContext: resourceScalewayBaremetalServerRead,
18+
UpdateContext: resourceScalewayBaremetalServerUpdate,
19+
DeleteContext: resourceScalewayBaremetalServerDelete,
1720
Importer: &schema.ResourceImporter{
18-
State: schema.ImportStatePassthrough,
21+
StateContext: schema.ImportStatePassthroughContext,
1922
},
2023
SchemaVersion: 0,
2124
Timeouts: &schema.ResourceTimeout{
@@ -118,10 +121,10 @@ func resourceScalewayBaremetalServer() *schema.Resource {
118121
}
119122
}
120123

121-
func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}) error {
124+
func resourceScalewayBaremetalServerCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
122125
baremetalAPI, zone, err := baremetalAPIWithZone(d, m)
123126
if err != nil {
124-
return err
127+
return diag.FromErr(err)
125128
}
126129

127130
offerID := expandZonedID(d.Get("offer"))
@@ -131,7 +134,7 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
131134
Zone: zone,
132135
})
133136
if err != nil {
134-
return err
137+
return diag.FromErr(err)
135138
}
136139
offerID = newZonedID(zone, o.ID)
137140
}
@@ -144,9 +147,9 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
144147
Description: d.Get("description").(string),
145148
OfferID: offerID.ID,
146149
Tags: expandStrings(d.Get("tags")),
147-
})
150+
}, scw.WithContext(ctx))
148151
if err != nil {
149-
return err
152+
return diag.FromErr(err)
150153
}
151154

152155
d.SetId(newZonedID(server.Zone, server.ID).String())
@@ -157,7 +160,7 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
157160
Timeout: scw.TimeDurationPtr(baremetalServerWaitForTimeout),
158161
})
159162
if err != nil {
160-
return err
163+
return diag.FromErr(err)
161164
}
162165

163166
_, err = baremetalAPI.InstallServer(&baremetal.InstallServerRequest{
@@ -166,9 +169,9 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
166169
OsID: expandZonedID(d.Get("os")).ID,
167170
Hostname: expandStringWithDefault(d.Get("hostname"), server.Name),
168171
SSHKeyIDs: expandStrings(d.Get("ssh_key_ids")),
169-
})
172+
}, scw.WithContext(ctx))
170173
if err != nil {
171-
return err
174+
return diag.FromErr(err)
172175
}
173176

174177
_, err = baremetalAPI.WaitForServerInstall(&baremetal.WaitForServerInstallRequest{
@@ -177,36 +180,36 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
177180
Timeout: scw.TimeDurationPtr(baremetalServerWaitForTimeout),
178181
})
179182
if err != nil {
180-
return err
183+
return diag.FromErr(err)
181184
}
182185

183-
return resourceScalewayBaremetalServerRead(d, m)
186+
return resourceScalewayBaremetalServerRead(ctx, d, m)
184187
}
185188

186-
func resourceScalewayBaremetalServerRead(d *schema.ResourceData, m interface{}) error {
189+
func resourceScalewayBaremetalServerRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
187190
baremetalAPI, zonedID, err := baremetalAPIWithZoneAndID(m, d.Id())
188191
if err != nil {
189-
return err
192+
return diag.FromErr(err)
190193
}
191194

192195
server, err := baremetalAPI.GetServer(&baremetal.GetServerRequest{
193196
Zone: zonedID.Zone,
194197
ServerID: zonedID.ID,
195-
})
198+
}, scw.WithContext(ctx))
196199
if err != nil {
197200
if is404Error(err) {
198201
d.SetId("")
199202
return nil
200203
}
201-
return err
204+
return diag.FromErr(err)
202205
}
203206

204207
offer, err := baremetalAPI.GetOffer(&baremetal.GetOfferRequest{
205208
Zone: server.Zone,
206209
OfferID: server.OfferID,
207-
})
210+
}, scw.WithContext(ctx))
208211
if err != nil {
209-
return err
212+
return diag.FromErr(err)
210213
}
211214

212215
_ = d.Set("name", server.Name)
@@ -226,10 +229,10 @@ func resourceScalewayBaremetalServerRead(d *schema.ResourceData, m interface{})
226229
return nil
227230
}
228231

229-
func resourceScalewayBaremetalServerUpdate(d *schema.ResourceData, m interface{}) error {
232+
func resourceScalewayBaremetalServerUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
230233
baremetalAPI, zonedID, err := baremetalAPIWithZoneAndID(m, d.Id())
231234
if err != nil {
232-
return err
235+
return diag.FromErr(err)
233236
}
234237

235238
_, err = baremetalAPI.UpdateServer(&baremetal.UpdateServerRequest{
@@ -238,9 +241,9 @@ func resourceScalewayBaremetalServerUpdate(d *schema.ResourceData, m interface{}
238241
Name: expandStringPtr(d.Get("name")),
239242
Description: expandStringPtr(d.Get("description")),
240243
Tags: scw.StringsPtr(expandStrings(d.Get("tags"))),
241-
})
244+
}, scw.WithContext(ctx))
242245
if err != nil {
243-
return err
246+
return diag.FromErr(err)
244247
}
245248

246249
if d.HasChange("os") || d.HasChange("ssh_key_ids") {
@@ -252,9 +255,9 @@ func resourceScalewayBaremetalServerUpdate(d *schema.ResourceData, m interface{}
252255
SSHKeyIDs: expandStrings(d.Get("ssh_key_ids")),
253256
}
254257

255-
server, err := baremetalAPI.InstallServer(installReq)
258+
server, err := baremetalAPI.InstallServer(installReq, scw.WithContext(ctx))
256259
if err != nil {
257-
return err
260+
return diag.FromErr(err)
258261
}
259262

260263
_, err = baremetalAPI.WaitForServerInstall(&baremetal.WaitForServerInstallRequest{
@@ -263,26 +266,26 @@ func resourceScalewayBaremetalServerUpdate(d *schema.ResourceData, m interface{}
263266
Timeout: scw.TimeDurationPtr(baremetalServerWaitForTimeout),
264267
})
265268
if err != nil {
266-
return err
269+
return diag.FromErr(err)
267270
}
268271
}
269272

270-
return resourceScalewayBaremetalServerRead(d, m)
273+
return resourceScalewayBaremetalServerRead(ctx, d, m)
271274
}
272275

273-
func resourceScalewayBaremetalServerDelete(d *schema.ResourceData, m interface{}) error {
276+
func resourceScalewayBaremetalServerDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
274277
baremetalAPI, zonedID, err := baremetalAPIWithZoneAndID(m, d.Id())
275278
if err != nil {
276-
return err
279+
return diag.FromErr(err)
277280
}
278281

279282
server, err := baremetalAPI.DeleteServer(&baremetal.DeleteServerRequest{
280283
Zone: zonedID.Zone,
281284
ServerID: zonedID.ID,
282-
})
285+
}, scw.WithContext(ctx))
283286

284287
if err != nil && !is404Error(err) {
285-
return err
288+
return diag.FromErr(err)
286289
}
287290

288291
_, err = baremetalAPI.WaitForServer(&baremetal.WaitForServerRequest{
@@ -295,5 +298,5 @@ func resourceScalewayBaremetalServerDelete(d *schema.ResourceData, m interface{}
295298
return nil
296299
}
297300

298-
return err
301+
return diag.FromErr(err)
299302
}

0 commit comments

Comments
 (0)