1
1
package scaleway
2
2
3
3
import (
4
+ "context"
5
+
6
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
4
7
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
5
8
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
6
9
baremetal "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1"
@@ -10,12 +13,12 @@ import (
10
13
11
14
func resourceScalewayBaremetalServer () * schema.Resource {
12
15
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 ,
17
20
Importer : & schema.ResourceImporter {
18
- State : schema .ImportStatePassthrough ,
21
+ StateContext : schema .ImportStatePassthroughContext ,
19
22
},
20
23
SchemaVersion : 0 ,
21
24
Timeouts : & schema.ResourceTimeout {
@@ -118,10 +121,10 @@ func resourceScalewayBaremetalServer() *schema.Resource {
118
121
}
119
122
}
120
123
121
- func resourceScalewayBaremetalServerCreate (d * schema.ResourceData , m interface {}) error {
124
+ func resourceScalewayBaremetalServerCreate (ctx context. Context , d * schema.ResourceData , m interface {}) diag. Diagnostics {
122
125
baremetalAPI , zone , err := baremetalAPIWithZone (d , m )
123
126
if err != nil {
124
- return err
127
+ return diag . FromErr ( err )
125
128
}
126
129
127
130
offerID := expandZonedID (d .Get ("offer" ))
@@ -131,7 +134,7 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
131
134
Zone : zone ,
132
135
})
133
136
if err != nil {
134
- return err
137
+ return diag . FromErr ( err )
135
138
}
136
139
offerID = newZonedID (zone , o .ID )
137
140
}
@@ -144,9 +147,9 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
144
147
Description : d .Get ("description" ).(string ),
145
148
OfferID : offerID .ID ,
146
149
Tags : expandStrings (d .Get ("tags" )),
147
- })
150
+ }, scw . WithContext ( ctx ) )
148
151
if err != nil {
149
- return err
152
+ return diag . FromErr ( err )
150
153
}
151
154
152
155
d .SetId (newZonedID (server .Zone , server .ID ).String ())
@@ -157,7 +160,7 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
157
160
Timeout : scw .TimeDurationPtr (baremetalServerWaitForTimeout ),
158
161
})
159
162
if err != nil {
160
- return err
163
+ return diag . FromErr ( err )
161
164
}
162
165
163
166
_ , err = baremetalAPI .InstallServer (& baremetal.InstallServerRequest {
@@ -166,9 +169,9 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
166
169
OsID : expandZonedID (d .Get ("os" )).ID ,
167
170
Hostname : expandStringWithDefault (d .Get ("hostname" ), server .Name ),
168
171
SSHKeyIDs : expandStrings (d .Get ("ssh_key_ids" )),
169
- })
172
+ }, scw . WithContext ( ctx ) )
170
173
if err != nil {
171
- return err
174
+ return diag . FromErr ( err )
172
175
}
173
176
174
177
_ , err = baremetalAPI .WaitForServerInstall (& baremetal.WaitForServerInstallRequest {
@@ -177,36 +180,36 @@ func resourceScalewayBaremetalServerCreate(d *schema.ResourceData, m interface{}
177
180
Timeout : scw .TimeDurationPtr (baremetalServerWaitForTimeout ),
178
181
})
179
182
if err != nil {
180
- return err
183
+ return diag . FromErr ( err )
181
184
}
182
185
183
- return resourceScalewayBaremetalServerRead (d , m )
186
+ return resourceScalewayBaremetalServerRead (ctx , d , m )
184
187
}
185
188
186
- func resourceScalewayBaremetalServerRead (d * schema.ResourceData , m interface {}) error {
189
+ func resourceScalewayBaremetalServerRead (ctx context. Context , d * schema.ResourceData , m interface {}) diag. Diagnostics {
187
190
baremetalAPI , zonedID , err := baremetalAPIWithZoneAndID (m , d .Id ())
188
191
if err != nil {
189
- return err
192
+ return diag . FromErr ( err )
190
193
}
191
194
192
195
server , err := baremetalAPI .GetServer (& baremetal.GetServerRequest {
193
196
Zone : zonedID .Zone ,
194
197
ServerID : zonedID .ID ,
195
- })
198
+ }, scw . WithContext ( ctx ) )
196
199
if err != nil {
197
200
if is404Error (err ) {
198
201
d .SetId ("" )
199
202
return nil
200
203
}
201
- return err
204
+ return diag . FromErr ( err )
202
205
}
203
206
204
207
offer , err := baremetalAPI .GetOffer (& baremetal.GetOfferRequest {
205
208
Zone : server .Zone ,
206
209
OfferID : server .OfferID ,
207
- })
210
+ }, scw . WithContext ( ctx ) )
208
211
if err != nil {
209
- return err
212
+ return diag . FromErr ( err )
210
213
}
211
214
212
215
_ = d .Set ("name" , server .Name )
@@ -226,10 +229,10 @@ func resourceScalewayBaremetalServerRead(d *schema.ResourceData, m interface{})
226
229
return nil
227
230
}
228
231
229
- func resourceScalewayBaremetalServerUpdate (d * schema.ResourceData , m interface {}) error {
232
+ func resourceScalewayBaremetalServerUpdate (ctx context. Context , d * schema.ResourceData , m interface {}) diag. Diagnostics {
230
233
baremetalAPI , zonedID , err := baremetalAPIWithZoneAndID (m , d .Id ())
231
234
if err != nil {
232
- return err
235
+ return diag . FromErr ( err )
233
236
}
234
237
235
238
_ , err = baremetalAPI .UpdateServer (& baremetal.UpdateServerRequest {
@@ -238,9 +241,9 @@ func resourceScalewayBaremetalServerUpdate(d *schema.ResourceData, m interface{}
238
241
Name : expandStringPtr (d .Get ("name" )),
239
242
Description : expandStringPtr (d .Get ("description" )),
240
243
Tags : scw .StringsPtr (expandStrings (d .Get ("tags" ))),
241
- })
244
+ }, scw . WithContext ( ctx ) )
242
245
if err != nil {
243
- return err
246
+ return diag . FromErr ( err )
244
247
}
245
248
246
249
if d .HasChange ("os" ) || d .HasChange ("ssh_key_ids" ) {
@@ -252,9 +255,9 @@ func resourceScalewayBaremetalServerUpdate(d *schema.ResourceData, m interface{}
252
255
SSHKeyIDs : expandStrings (d .Get ("ssh_key_ids" )),
253
256
}
254
257
255
- server , err := baremetalAPI .InstallServer (installReq )
258
+ server , err := baremetalAPI .InstallServer (installReq , scw . WithContext ( ctx ) )
256
259
if err != nil {
257
- return err
260
+ return diag . FromErr ( err )
258
261
}
259
262
260
263
_ , err = baremetalAPI .WaitForServerInstall (& baremetal.WaitForServerInstallRequest {
@@ -263,26 +266,26 @@ func resourceScalewayBaremetalServerUpdate(d *schema.ResourceData, m interface{}
263
266
Timeout : scw .TimeDurationPtr (baremetalServerWaitForTimeout ),
264
267
})
265
268
if err != nil {
266
- return err
269
+ return diag . FromErr ( err )
267
270
}
268
271
}
269
272
270
- return resourceScalewayBaremetalServerRead (d , m )
273
+ return resourceScalewayBaremetalServerRead (ctx , d , m )
271
274
}
272
275
273
- func resourceScalewayBaremetalServerDelete (d * schema.ResourceData , m interface {}) error {
276
+ func resourceScalewayBaremetalServerDelete (ctx context. Context , d * schema.ResourceData , m interface {}) diag. Diagnostics {
274
277
baremetalAPI , zonedID , err := baremetalAPIWithZoneAndID (m , d .Id ())
275
278
if err != nil {
276
- return err
279
+ return diag . FromErr ( err )
277
280
}
278
281
279
282
server , err := baremetalAPI .DeleteServer (& baremetal.DeleteServerRequest {
280
283
Zone : zonedID .Zone ,
281
284
ServerID : zonedID .ID ,
282
- })
285
+ }, scw . WithContext ( ctx ) )
283
286
284
287
if err != nil && ! is404Error (err ) {
285
- return err
288
+ return diag . FromErr ( err )
286
289
}
287
290
288
291
_ , err = baremetalAPI .WaitForServer (& baremetal.WaitForServerRequest {
@@ -295,5 +298,5 @@ func resourceScalewayBaremetalServerDelete(d *schema.ResourceData, m interface{}
295
298
return nil
296
299
}
297
300
298
- return err
301
+ return diag . FromErr ( err )
299
302
}
0 commit comments