Skip to content

Commit a4b261f

Browse files
committed
feat(instance): rely on api default volume type in server creation
1 parent 36c4cac commit a4b261f

File tree

3 files changed

+38
-16
lines changed

3 files changed

+38
-16
lines changed

internal/services/instance/helpers_instance_block.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package instance
22

33
import (
44
"errors"
5+
"strings"
56

67
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
78
block "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
@@ -194,8 +195,14 @@ func instanceAndBlockAPIWithZoneAndID(m interface{}, zonedID string) (*BlockAndI
194195
}
195196

196197
func volumeTypeToMarketplaceFilter(volumeType any) marketplace.LocalImageType {
197-
if volumeType != nil && instance.VolumeVolumeType(volumeType.(string)) == instance.VolumeVolumeTypeSbsVolume {
198-
return marketplace.LocalImageTypeInstanceSbs
198+
if volumeType != nil {
199+
volumeTypeString := volumeType.(string)
200+
if strings.HasPrefix(volumeTypeString, "sbs") {
201+
return marketplace.LocalImageTypeInstanceSbs
202+
} else {
203+
return marketplace.LocalImageTypeInstanceLocal
204+
}
199205
}
200-
return marketplace.LocalImageTypeInstanceLocal
206+
207+
return marketplace.LocalImageTypeUnknownType
201208
}

internal/services/instance/server.go

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -391,19 +391,7 @@ func ResourceInstanceServerCreate(ctx context.Context, d *schema.ResourceData, m
391391
imageUUID := locality.ExpandID(d.Get("image"))
392392
if imageUUID != "" && !scwvalidation.IsUUID(imageUUID) {
393393
// 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
394+
imageUUID = formatImageLabel(imageUUID)
407395
}
408396

409397
req := &instanceSDK.CreateServerRequest{

internal/services/instance/server_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,33 @@ func TestAccServer_RootVolume_ID(t *testing.T) {
273273
})
274274
}
275275

276+
func TestAccServer_RootVolume_DefaultTypeSBS(t *testing.T) {
277+
t.Skip("tmp")
278+
tt := acctest.NewTestTools(t)
279+
defer tt.Cleanup()
280+
resource.ParallelTest(t, resource.TestCase{
281+
PreCheck: func() { acctest.PreCheck(t) },
282+
ProviderFactories: tt.ProviderFactories,
283+
CheckDestroy: instancechecks.IsServerDestroyed(tt),
284+
Steps: []resource.TestStep{
285+
{
286+
Config: `
287+
resource "scaleway_instance_server" "base" {
288+
image = "ubuntu_jammy"
289+
type = "PLAY2-PICO"
290+
state = "stopped"
291+
tags = [ "terraform-test", "scaleway_instance_server", "root_volume" ]
292+
}`,
293+
Check: resource.ComposeTestCheckFunc(
294+
isServerPresent(tt, "scaleway_instance_server.base"),
295+
resource.TestCheckResourceAttr("scaleway_instance_server.base", "root_volume.0.volume_type", "sbs_volume"),
296+
serverHasNewVolume(tt, "scaleway_instance_server.base"),
297+
),
298+
},
299+
},
300+
})
301+
}
302+
276303
func TestAccServer_Basic(t *testing.T) {
277304
tt := acctest.NewTestTools(t)
278305
defer tt.Cleanup()

0 commit comments

Comments
 (0)