@@ -10,6 +10,7 @@ import (
1010 "github.com/scaleway/scaleway-sdk-go/scw"
1111 "github.com/scaleway/terraform-provider-scaleway/v2/internal/cdf"
1212 "github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
13+ "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality"
1314 "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/zonal"
1415 "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account"
1516 "github.com/scaleway/terraform-provider-scaleway/v2/internal/transport"
@@ -176,7 +177,7 @@ func ResourceImage() *schema.Resource {
176177}
177178
178179func 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 )
180181 if err != nil {
181182 return diag .FromErr (err )
182183 }
@@ -192,11 +193,7 @@ func ResourceInstanceImageCreate(ctx context.Context, d *schema.ResourceData, m
192193
193194 extraVolumesIDs , volumesExist := d .GetOk ("additional_volume_ids" )
194195 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 ))
200197 }
201198 tags , tagsExist := d .GetOk ("tags" )
202199 if tagsExist {
@@ -206,14 +203,14 @@ func ResourceInstanceImageCreate(ctx context.Context, d *schema.ResourceData, m
206203 req .Public = types .ExpandBoolPtr (types .GetBool (d , "public" ))
207204 }
208205
209- res , err := instanceAPI .CreateImage (req , scw .WithContext (ctx ))
206+ res , err := api .CreateImage (req , scw .WithContext (ctx ))
210207 if err != nil {
211208 return diag .FromErr (err )
212209 }
213210
214211 d .SetId (zonal .NewIDString (zone , res .Image .ID ))
215212
216- _ , err = instanceAPI .WaitForImage (& instanceSDK.WaitForImageRequest {
213+ _ , err = api .WaitForImage (& instanceSDK.WaitForImageRequest {
217214 ImageID : res .Image .ID ,
218215 Zone : zone ,
219216 RetryInterval : transport .DefaultWaitRetryInterval ,
@@ -262,7 +259,7 @@ func ResourceInstanceImageRead(ctx context.Context, d *schema.ResourceData, m in
262259}
263260
264261func 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 ())
266263 if err != nil {
267264 return diag .FromErr (err )
268265 }
@@ -283,7 +280,7 @@ func ResourceInstanceImageUpdate(ctx context.Context, d *schema.ResourceData, m
283280 }
284281 req .Tags = types .ExpandUpdatedStringsPtr (d .Get ("tags" ))
285282
286- image , err := instanceAPI .GetImage (& instanceSDK.GetImageRequest {
283+ image , err := api .GetImage (& instanceSDK.GetImageRequest {
287284 Zone : zone ,
288285 ImageID : id ,
289286 }, scw .WithContext (ctx ))
@@ -292,11 +289,7 @@ func ResourceInstanceImageUpdate(ctx context.Context, d *schema.ResourceData, m
292289 }
293290
294291 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" )))
300293 } else {
301294 volTemplate := map [string ]* instanceSDK.VolumeImageUpdateTemplate {}
302295 for key , vol := range image .Image .ExtraVolumes {
@@ -315,17 +308,17 @@ func ResourceInstanceImageUpdate(ctx context.Context, d *schema.ResourceData, m
315308 req .Arch = image .Image .Arch
316309 }
317310
318- _ , err = waitForImage (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
311+ _ , err = waitForImage (ctx , api . API , zone , id , d .Timeout (schema .TimeoutUpdate ))
319312 if err != nil {
320313 return diag .FromErr (err )
321314 }
322315
323- _ , err = instanceAPI .UpdateImage (req , scw .WithContext (ctx ))
316+ _ , err = api .UpdateImage (req , scw .WithContext (ctx ))
324317 if err != nil {
325318 return diag .FromErr (fmt .Errorf ("couldn't update image: %s" , err ))
326319 }
327320
328- _ , err = waitForImage (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
321+ _ , err = waitForImage (ctx , api . API , zone , id , d .Timeout (schema .TimeoutUpdate ))
329322 if err != nil {
330323 return diag .FromErr (err )
331324 }
0 commit comments