Skip to content

Commit b94ed0d

Browse files
committed
resolve image label after root volume preparation
1 parent 817c6d9 commit b94ed0d

File tree

2 files changed

+25
-26
lines changed

2 files changed

+25
-26
lines changed

internal/services/instance/helpers_instance_block.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -193,16 +193,14 @@ func instanceAndBlockAPIWithZoneAndID(m interface{}, zonedID string) (*BlockAndI
193193
}, zone, ID, nil
194194
}
195195

196-
func volumeTypeToMarketplaceFilter(volumeType any) marketplace.LocalImageType {
197-
if volumeType != nil {
198-
switch instance.VolumeVolumeType(volumeType.(string)) {
199-
case instance.VolumeVolumeTypeSbsVolume:
200-
return marketplace.LocalImageTypeInstanceSbs
201-
case instance.VolumeVolumeTypeBSSD:
202-
return marketplace.LocalImageTypeInstanceLocal
203-
case instance.VolumeVolumeTypeLSSD:
204-
return marketplace.LocalImageTypeInstanceLocal
205-
}
196+
func volumeTypeToMarketplaceFilter(volumeType instance.VolumeVolumeType) marketplace.LocalImageType {
197+
switch volumeType {
198+
case instance.VolumeVolumeTypeSbsVolume:
199+
return marketplace.LocalImageTypeInstanceSbs
200+
case instance.VolumeVolumeTypeBSSD:
201+
return marketplace.LocalImageTypeInstanceLocal
202+
case instance.VolumeVolumeTypeLSSD:
203+
return marketplace.LocalImageTypeInstanceLocal
206204
}
207205

208206
return marketplace.LocalImageTypeInstanceSbs

internal/services/instance/server.go

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -389,22 +389,6 @@ func ResourceInstanceServerCreate(ctx context.Context, d *schema.ResourceData, m
389389
commercialType := d.Get("type").(string)
390390

391391
imageUUID := locality.ExpandID(d.Get("image"))
392-
if imageUUID != "" && !scwvalidation.IsUUID(imageUUID) {
393-
// Replace dashes with underscores ubuntu-focal -> ubuntu_focal
394-
imageLabel := formatImageLabel(imageUUID)
395-
396-
marketPlaceAPI := marketplace.NewAPI(meta.ExtractScwClient(m))
397-
image, err := marketPlaceAPI.GetLocalImageByLabel(&marketplace.GetLocalImageByLabelRequest{
398-
CommercialType: commercialType,
399-
Zone: zone,
400-
ImageLabel: imageLabel,
401-
Type: volumeTypeToMarketplaceFilter(d.Get("root_volume.0.volume_type")),
402-
})
403-
if err != nil {
404-
return diag.FromErr(fmt.Errorf("could not get image '%s': %s", zonal.NewID(zone, imageLabel), err))
405-
}
406-
imageUUID = image.ID
407-
}
408392

409393
req := &instanceSDK.CreateServerRequest{
410394
Zone: zone,
@@ -473,6 +457,23 @@ func ResourceInstanceServerCreate(ctx context.Context, d *schema.ResourceData, m
473457
return diag.FromErr(err)
474458
}
475459

460+
if imageUUID != "" && !scwvalidation.IsUUID(imageUUID) {
461+
// Replace dashes with underscores ubuntu-focal -> ubuntu_focal
462+
imageLabel := formatImageLabel(imageUUID)
463+
464+
marketPlaceAPI := marketplace.NewAPI(meta.ExtractScwClient(m))
465+
image, err := marketPlaceAPI.GetLocalImageByLabel(&marketplace.GetLocalImageByLabelRequest{
466+
CommercialType: commercialType,
467+
Zone: zone,
468+
ImageLabel: imageLabel,
469+
Type: volumeTypeToMarketplaceFilter(req.Volumes["0"].VolumeType),
470+
})
471+
if err != nil {
472+
return diag.FromErr(fmt.Errorf("could not get image '%s': %s", zonal.NewID(zone, imageLabel), err))
473+
}
474+
imageUUID = image.ID
475+
}
476+
476477
res, err := api.CreateServer(req, scw.WithContext(ctx))
477478
if err != nil {
478479
return diag.FromErr(err)

0 commit comments

Comments
 (0)