@@ -10,6 +10,7 @@ import (
10
10
"github.com/scaleway/scaleway-sdk-go/scw"
11
11
"github.com/scaleway/terraform-provider-scaleway/v2/internal/cdf"
12
12
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
13
+ "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality"
13
14
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/zonal"
14
15
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account"
15
16
"github.com/scaleway/terraform-provider-scaleway/v2/internal/transport"
@@ -176,7 +177,7 @@ func ResourceImage() *schema.Resource {
176
177
}
177
178
178
179
func ResourceInstanceImageCreate (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
179
- instanceAPI , zone , err := newAPIWithZone (d , m )
180
+ api , zone , err := instanceAndBlockAPIWithZone (d , m )
180
181
if err != nil {
181
182
return diag .FromErr (err )
182
183
}
@@ -192,11 +193,7 @@ func ResourceInstanceImageCreate(ctx context.Context, d *schema.ResourceData, m
192
193
193
194
extraVolumesIDs , volumesExist := d .GetOk ("additional_volume_ids" )
194
195
if volumesExist {
195
- snapResponses , err := getSnapshotsFromIDs (ctx , extraVolumesIDs .([]interface {}), instanceAPI )
196
- if err != nil {
197
- return diag .FromErr (err )
198
- }
199
- req .ExtraVolumes = expandImageExtraVolumesTemplates (snapResponses )
196
+ req .ExtraVolumes = expandImageExtraVolumesTemplates (locality .ExpandIDs (extraVolumesIDs ))
200
197
}
201
198
tags , tagsExist := d .GetOk ("tags" )
202
199
if tagsExist {
@@ -206,14 +203,14 @@ func ResourceInstanceImageCreate(ctx context.Context, d *schema.ResourceData, m
206
203
req .Public = types .ExpandBoolPtr (types .GetBool (d , "public" ))
207
204
}
208
205
209
- res , err := instanceAPI .CreateImage (req , scw .WithContext (ctx ))
206
+ res , err := api .CreateImage (req , scw .WithContext (ctx ))
210
207
if err != nil {
211
208
return diag .FromErr (err )
212
209
}
213
210
214
211
d .SetId (zonal .NewIDString (zone , res .Image .ID ))
215
212
216
- _ , err = instanceAPI .WaitForImage (& instanceSDK.WaitForImageRequest {
213
+ _ , err = api .WaitForImage (& instanceSDK.WaitForImageRequest {
217
214
ImageID : res .Image .ID ,
218
215
Zone : zone ,
219
216
RetryInterval : transport .DefaultWaitRetryInterval ,
@@ -262,7 +259,7 @@ func ResourceInstanceImageRead(ctx context.Context, d *schema.ResourceData, m in
262
259
}
263
260
264
261
func ResourceInstanceImageUpdate (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
265
- instanceAPI , zone , id , err := NewAPIWithZoneAndID (m , d .Id ())
262
+ api , zone , id , err := instanceAndBlockAPIWithZoneAndID (m , d .Id ())
266
263
if err != nil {
267
264
return diag .FromErr (err )
268
265
}
@@ -283,7 +280,7 @@ func ResourceInstanceImageUpdate(ctx context.Context, d *schema.ResourceData, m
283
280
}
284
281
req .Tags = types .ExpandUpdatedStringsPtr (d .Get ("tags" ))
285
282
286
- image , err := instanceAPI .GetImage (& instanceSDK.GetImageRequest {
283
+ image , err := api .GetImage (& instanceSDK.GetImageRequest {
287
284
Zone : zone ,
288
285
ImageID : id ,
289
286
}, scw .WithContext (ctx ))
@@ -292,11 +289,7 @@ func ResourceInstanceImageUpdate(ctx context.Context, d *schema.ResourceData, m
292
289
}
293
290
294
291
if d .HasChange ("additional_volume_ids" ) {
295
- snapResponses , err := getSnapshotsFromIDs (ctx , d .Get ("additional_volume_ids" ).([]interface {}), instanceAPI )
296
- if err != nil {
297
- return diag .FromErr (err )
298
- }
299
- req .ExtraVolumes = expandImageExtraVolumesUpdateTemplates (snapResponses )
292
+ req .ExtraVolumes = expandImageExtraVolumesUpdateTemplates (locality .ExpandIDs (d .Get ("additional_volume_ids" )))
300
293
} else {
301
294
volTemplate := map [string ]* instanceSDK.VolumeImageUpdateTemplate {}
302
295
for key , vol := range image .Image .ExtraVolumes {
@@ -315,17 +308,17 @@ func ResourceInstanceImageUpdate(ctx context.Context, d *schema.ResourceData, m
315
308
req .Arch = image .Image .Arch
316
309
}
317
310
318
- _ , err = waitForImage (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
311
+ _ , err = waitForImage (ctx , api . API , zone , id , d .Timeout (schema .TimeoutUpdate ))
319
312
if err != nil {
320
313
return diag .FromErr (err )
321
314
}
322
315
323
- _ , err = instanceAPI .UpdateImage (req , scw .WithContext (ctx ))
316
+ _ , err = api .UpdateImage (req , scw .WithContext (ctx ))
324
317
if err != nil {
325
318
return diag .FromErr (fmt .Errorf ("couldn't update image: %s" , err ))
326
319
}
327
320
328
- _ , err = waitForImage (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
321
+ _ , err = waitForImage (ctx , api . API , zone , id , d .Timeout (schema .TimeoutUpdate ))
329
322
if err != nil {
330
323
return diag .FromErr (err )
331
324
}
0 commit comments