Skip to content

Commit cbc451c

Browse files
authored
fix(instance): root_volume boot value read and update (#1372)
1 parent 79c4b99 commit cbc451c

3 files changed

+2746
-1
lines changed

scaleway/resource_instance_server.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,7 @@ func resourceScalewayInstanceServerRead(ctx context.Context, d *schema.ResourceD
578578
_, rootVolumeAttributeSet := d.GetOk("root_volume") // Related to https://github.com/hashicorp/terraform-plugin-sdk/issues/142
579579
rootVolume["delete_on_termination"] = d.Get("root_volume.0.delete_on_termination").(bool) || !rootVolumeAttributeSet
580580
rootVolume["volume_type"] = volume.VolumeType
581+
rootVolume["boot"] = volume.Boot
581582

582583
_ = d.Set("root_volume", []map[string]interface{}{rootVolume})
583584
} else {
@@ -681,10 +682,11 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
681682

682683
volumes := map[string]*instance.VolumeServerTemplate{}
683684

684-
if raw, hasAdditionalVolumes := d.GetOk("additional_volume_ids"); d.HasChange("additional_volume_ids") {
685+
if raw, hasAdditionalVolumes := d.GetOk("additional_volume_ids"); d.HasChanges("additional_volume_ids", "root_volume") {
685686
volumes["0"] = &instance.VolumeServerTemplate{
686687
ID: expandZonedID(d.Get("root_volume.0.volume_id")).ID,
687688
Name: newRandomName("vol"), // name is ignored by the API, any name will work here
689+
Boot: d.Get("root_volume.0.boot").(bool),
688690
}
689691

690692
if !hasAdditionalVolumes {

scaleway/resource_instance_server_test.go

+46
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,52 @@ func TestAccScalewayInstanceServer_RootVolume1(t *testing.T) {
204204
})
205205
}
206206

207+
func TestAccScalewayInstanceServer_RootVolume_Boot(t *testing.T) {
208+
tt := NewTestTools(t)
209+
defer tt.Cleanup()
210+
resource.ParallelTest(t, resource.TestCase{
211+
PreCheck: func() { testAccPreCheck(t) },
212+
ProviderFactories: tt.ProviderFactories,
213+
CheckDestroy: testAccCheckScalewayInstanceServerDestroy(tt),
214+
Steps: []resource.TestStep{
215+
{
216+
Config: `
217+
resource "scaleway_instance_server" "base" {
218+
image = "ubuntu_focal"
219+
type = "DEV1-S"
220+
state = "stopped"
221+
root_volume {
222+
boot = true
223+
delete_on_termination = true
224+
}
225+
tags = [ "terraform-test", "scaleway_instance_server", "root_volume" ]
226+
}`,
227+
Check: resource.ComposeTestCheckFunc(
228+
testAccCheckScalewayInstanceServerExists(tt, "scaleway_instance_server.base"),
229+
resource.TestCheckResourceAttr("scaleway_instance_server.base", "root_volume.0.boot", "true"),
230+
),
231+
},
232+
{
233+
Config: `
234+
resource "scaleway_instance_server" "base" {
235+
image = "ubuntu_focal"
236+
type = "DEV1-S"
237+
state = "stopped"
238+
root_volume {
239+
boot = false
240+
delete_on_termination = true
241+
}
242+
tags = [ "terraform-test", "scaleway_instance_server", "root_volume" ]
243+
}`,
244+
Check: resource.ComposeTestCheckFunc(
245+
testAccCheckScalewayInstanceServerExists(tt, "scaleway_instance_server.base"),
246+
resource.TestCheckResourceAttr("scaleway_instance_server.base", "root_volume.0.boot", "false"),
247+
),
248+
},
249+
},
250+
})
251+
}
252+
207253
func TestAccScalewayInstanceServer_Basic(t *testing.T) {
208254
tt := NewTestTools(t)
209255
defer tt.Cleanup()

0 commit comments

Comments
 (0)