1
1
package scaleway
2
2
3
3
import (
4
+ "context"
4
5
"io/ioutil"
5
6
"time"
6
7
8
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
7
9
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8
10
"github.com/scaleway/scaleway-sdk-go/api/rdb/v1"
9
11
"github.com/scaleway/scaleway-sdk-go/scw"
10
12
)
11
13
12
14
func resourceScalewayRdbInstanceBeta () * schema.Resource {
13
15
return & schema.Resource {
14
- Create : resourceScalewayRdbInstanceBetaCreate ,
15
- Read : resourceScalewayRdbInstanceBetaRead ,
16
- Update : resourceScalewayRdbInstanceBetaUpdate ,
17
- Delete : resourceScalewayRdbInstanceBetaDelete ,
16
+ CreateContext : resourceScalewayRdbInstanceBetaCreate ,
17
+ ReadContext : resourceScalewayRdbInstanceBetaRead ,
18
+ UpdateContext : resourceScalewayRdbInstanceBetaUpdate ,
19
+ DeleteContext : resourceScalewayRdbInstanceBetaDelete ,
18
20
Importer : & schema.ResourceImporter {
19
- State : schema .ImportStatePassthrough ,
21
+ StateContext : schema .ImportStatePassthroughContext ,
20
22
},
21
23
SchemaVersion : 0 ,
22
24
Schema : map [string ]* schema.Schema {
@@ -119,10 +121,10 @@ func resourceScalewayRdbInstanceBeta() *schema.Resource {
119
121
}
120
122
}
121
123
122
- func resourceScalewayRdbInstanceBetaCreate (d * schema.ResourceData , m interface {}) error {
124
+ func resourceScalewayRdbInstanceBetaCreate (ctx context. Context , d * schema.ResourceData , m interface {}) diag. Diagnostics {
123
125
rdbAPI , region , err := rdbAPIWithRegion (d , m )
124
126
if err != nil {
125
- return err
127
+ return diag . FromErr ( err )
126
128
}
127
129
128
130
createReq := & rdb.CreateInstanceRequest {
@@ -139,9 +141,9 @@ func resourceScalewayRdbInstanceBetaCreate(d *schema.ResourceData, m interface{}
139
141
Tags : expandStrings (d .Get ("tags" )),
140
142
}
141
143
142
- res , err := rdbAPI .CreateInstance (createReq )
144
+ res , err := rdbAPI .CreateInstance (createReq , scw . WithContext ( ctx ) )
143
145
if err != nil {
144
- return err
146
+ return diag . FromErr ( err )
145
147
}
146
148
147
149
d .SetId (newRegionalIDString (region , res .ID ))
@@ -150,30 +152,30 @@ func resourceScalewayRdbInstanceBetaCreate(d *schema.ResourceData, m interface{}
150
152
Region : region ,
151
153
InstanceID : res .ID ,
152
154
Timeout : scw .TimeDurationPtr (InstanceServerWaitForTimeout ),
153
- })
155
+ }, scw . WithContext ( ctx ) )
154
156
if err != nil {
155
- return err
157
+ return diag . FromErr ( err )
156
158
}
157
159
158
- return resourceScalewayRdbInstanceBetaRead (d , m )
160
+ return resourceScalewayRdbInstanceBetaRead (ctx , d , m )
159
161
}
160
162
161
- func resourceScalewayRdbInstanceBetaRead (d * schema.ResourceData , m interface {}) error {
163
+ func resourceScalewayRdbInstanceBetaRead (ctx context. Context , d * schema.ResourceData , m interface {}) diag. Diagnostics {
162
164
rdbAPI , region , ID , err := rdbAPIWithRegionAndID (m , d .Id ())
163
165
if err != nil {
164
- return err
166
+ return diag . FromErr ( err )
165
167
}
166
168
167
169
res , err := rdbAPI .GetInstance (& rdb.GetInstanceRequest {
168
170
Region : region ,
169
171
InstanceID : ID ,
170
- })
172
+ }, scw . WithContext ( ctx ) )
171
173
if err != nil {
172
174
if is404Error (err ) {
173
175
d .SetId ("" )
174
176
return nil
175
177
}
176
- return err
178
+ return diag . FromErr ( err )
177
179
}
178
180
179
181
_ = d .Set ("name" , res .Name )
@@ -202,21 +204,21 @@ func resourceScalewayRdbInstanceBetaRead(d *schema.ResourceData, m interface{})
202
204
InstanceID : ID ,
203
205
})
204
206
if err != nil {
205
- return err
207
+ return diag . FromErr ( err )
206
208
}
207
209
certContent , err := ioutil .ReadAll (cert .Content )
208
210
if err != nil {
209
- return err
211
+ return diag . FromErr ( err )
210
212
}
211
213
_ = d .Set ("certificate" , string (certContent ))
212
214
213
215
return nil
214
216
}
215
217
216
- func resourceScalewayRdbInstanceBetaUpdate (d * schema.ResourceData , m interface {}) error {
218
+ func resourceScalewayRdbInstanceBetaUpdate (ctx context. Context , d * schema.ResourceData , m interface {}) diag. Diagnostics {
217
219
rdbAPI , region , ID , err := rdbAPIWithRegionAndID (m , d .Id ())
218
220
if err != nil {
219
- return err
221
+ return diag . FromErr ( err )
220
222
}
221
223
222
224
req := & rdb.UpdateInstanceRequest {
@@ -235,9 +237,9 @@ func resourceScalewayRdbInstanceBetaUpdate(d *schema.ResourceData, m interface{}
235
237
req .Tags = scw .StringsPtr (expandStrings (d .Get ("tags" )))
236
238
}
237
239
238
- _ , err = rdbAPI .UpdateInstance (req )
240
+ _ , err = rdbAPI .UpdateInstance (req , scw . WithContext ( ctx ) )
239
241
if err != nil {
240
- return err
242
+ return diag . FromErr ( err )
241
243
}
242
244
upgradeInstanceRequests := []rdb.UpgradeInstanceRequest (nil )
243
245
if d .HasChange ("node_type" ) {
@@ -258,18 +260,18 @@ func resourceScalewayRdbInstanceBetaUpdate(d *schema.ResourceData, m interface{}
258
260
})
259
261
}
260
262
for _ , request := range upgradeInstanceRequests {
261
- _ , err = rdbAPI .UpgradeInstance (& request )
263
+ _ , err = rdbAPI .UpgradeInstance (& request , scw . WithContext ( ctx ) )
262
264
if err != nil {
263
- return err
265
+ return diag . FromErr ( err )
264
266
}
265
267
266
268
_ , err = rdbAPI .WaitForInstance (& rdb.WaitForInstanceRequest {
267
269
Region : region ,
268
270
InstanceID : ID ,
269
271
Timeout : scw .TimeDurationPtr (InstanceServerWaitForTimeout * 3 ), // upgrade takes some time
270
- })
272
+ }, scw . WithContext ( ctx ) )
271
273
if err != nil {
272
- return err
274
+ return diag . FromErr ( err )
273
275
}
274
276
275
277
// Wait for the instance to settle after upgrading
@@ -284,38 +286,38 @@ func resourceScalewayRdbInstanceBetaUpdate(d *schema.ResourceData, m interface{}
284
286
Password : expandStringPtr (d .Get ("password" )),
285
287
}
286
288
287
- _ , err = rdbAPI .UpdateUser (req )
289
+ _ , err = rdbAPI .UpdateUser (req , scw . WithContext ( ctx ) )
288
290
if err != nil {
289
- return err
291
+ return diag . FromErr ( err )
290
292
}
291
293
}
292
294
293
- return resourceScalewayRdbInstanceBetaRead (d , m )
295
+ return resourceScalewayRdbInstanceBetaRead (ctx , d , m )
294
296
}
295
297
296
- func resourceScalewayRdbInstanceBetaDelete (d * schema.ResourceData , m interface {}) error {
298
+ func resourceScalewayRdbInstanceBetaDelete (ctx context. Context , d * schema.ResourceData , m interface {}) diag. Diagnostics {
297
299
rdbAPI , region , ID , err := rdbAPIWithRegionAndID (m , d .Id ())
298
300
if err != nil {
299
- return err
301
+ return diag . FromErr ( err )
300
302
}
301
303
302
304
_ , err = rdbAPI .DeleteInstance (& rdb.DeleteInstanceRequest {
303
305
Region : region ,
304
306
InstanceID : ID ,
305
- })
307
+ }, scw . WithContext ( ctx ) )
306
308
307
309
if err != nil && ! is404Error (err ) {
308
- return err
310
+ return diag . FromErr ( err )
309
311
}
310
312
311
313
_ , err = rdbAPI .WaitForInstance (& rdb.WaitForInstanceRequest {
312
314
InstanceID : ID ,
313
315
Region : region ,
314
316
Timeout : scw .TimeDurationPtr (LbWaitForTimeout ),
315
- })
317
+ }, scw . WithContext ( ctx ) )
316
318
317
319
if err != nil && ! is404Error (err ) {
318
- return err
320
+ return diag . FromErr ( err )
319
321
}
320
322
321
323
return nil
0 commit comments