Skip to content

Commit ee51d80

Browse files
authored
Merge pull request scaleway#59 from terraform-providers/boot-type
resource/server: support boot_type
2 parents 7ab3f91 + abf0430 commit ee51d80

File tree

10 files changed

+332
-3
lines changed

10 files changed

+332
-3
lines changed

scaleway/resource_server.go

+17
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"log"
66

77
"github.com/hashicorp/terraform/helper/schema"
8+
"github.com/hashicorp/terraform/helper/validation"
89
api "github.com/nicolai86/scaleway-sdk"
910
)
1011

@@ -41,6 +42,17 @@ func resourceScalewayServer() *schema.Resource {
4142
Description: "The instance type of the server",
4243
ValidateFunc: validateServerType,
4344
},
45+
"boot_type": {
46+
Type: schema.TypeString,
47+
Optional: true,
48+
Computed: true,
49+
ForceNew: true,
50+
Description: "The boot_type of the server",
51+
ValidateFunc: validation.StringInSlice([]string{
52+
"bootscript",
53+
"local",
54+
}, false),
55+
},
4456
"bootscript": {
4557
Type: schema.TypeString,
4658
Optional: true,
@@ -159,6 +171,10 @@ func resourceScalewayServerCreate(d *schema.ResourceData, m interface{}) error {
159171
EnableIPV6: d.Get("enable_ipv6").(bool),
160172
SecurityGroup: d.Get("security_group").(string),
161173
}
174+
bootType, ok := d.GetOk("boot_type")
175+
if ok {
176+
req.BootType = bootType.(string)
177+
}
162178

163179
req.DynamicIPRequired = Bool(d.Get("dynamic_ip_required").(bool))
164180
req.CommercialType = d.Get("type").(string)
@@ -249,6 +265,7 @@ func resourceScalewayServerRead(d *schema.ResourceData, m interface{}) error {
249265
d.Set("enable_ipv6", server.EnableIPV6)
250266
d.Set("private_ip", server.PrivateIP)
251267
d.Set("public_ip", server.PublicAddress.IP)
268+
d.Set("boot_type", server.BootType)
252269

253270
if server.EnableIPV6 && server.IPV6 != nil {
254271
d.Set("public_ipv6", server.IPV6.Address)

scaleway/resource_server_test.go

+30
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ func TestAccScalewayServer_Basic(t *testing.T) {
6363
"scaleway_server.base", "name", "test"),
6464
resource.TestCheckResourceAttr(
6565
"scaleway_server.base", "tags.0", "terraform-test"),
66+
resource.TestCheckResourceAttr(
67+
"scaleway_server.base", "boot_type", "bootscript"),
6668
),
6769
},
6870
resource.TestStep{
@@ -81,6 +83,23 @@ func TestAccScalewayServer_Basic(t *testing.T) {
8183
})
8284
}
8385

86+
func TestAccScalewayServer_BootType(t *testing.T) {
87+
resource.Test(t, resource.TestCase{
88+
PreCheck: func() { testAccPreCheck(t) },
89+
Providers: testAccProviders,
90+
CheckDestroy: testAccCheckScalewayServerDestroy,
91+
Steps: []resource.TestStep{
92+
resource.TestStep{
93+
Config: testAccCheckScalewayServerConfig_LocalBoot,
94+
Check: resource.ComposeTestCheckFunc(
95+
resource.TestCheckResourceAttr(
96+
"scaleway_server.base", "boot_type", "local"),
97+
),
98+
},
99+
},
100+
})
101+
}
102+
84103
func TestAccScalewayServer_ExistingIP(t *testing.T) {
85104
resource.Test(t, resource.TestCase{
86105
PreCheck: func() { testAccPreCheck(t) },
@@ -301,6 +320,7 @@ func testAccCheckScalewayServerExists(n string) resource.TestCheckFunc {
301320
}
302321

303322
var armImageIdentifier = "5faef9cd-ea9b-4a63-9171-9e26bec03dbc"
323+
var x86_64ImageIdentifier = "e20532c4-1fa0-4c97-992f-436b8d372c07"
304324

305325
var testAccCheckScalewayServerConfig = fmt.Sprintf(`
306326
resource "scaleway_server" "base" {
@@ -311,6 +331,16 @@ resource "scaleway_server" "base" {
311331
tags = [ "terraform-test" ]
312332
}`, armImageIdentifier)
313333

334+
var testAccCheckScalewayServerConfig_LocalBoot = fmt.Sprintf(`
335+
resource "scaleway_server" "base" {
336+
name = "test"
337+
# ubuntu 14.04
338+
image = "%s"
339+
type = "VC1S"
340+
tags = [ "terraform-test" ]
341+
boot_type = "local"
342+
}`, x86_64ImageIdentifier)
343+
314344
var testAccCheckScalewayServerConfig_IPAttachment = fmt.Sprintf(`
315345
resource "scaleway_ip" "base" {}
316346

vendor/github.com/hashicorp/terraform/helper/structure/expand_json.go

+11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform/helper/structure/flatten_json.go

+16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform/helper/structure/normalize_json.go

+24
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform/helper/structure/suppress_json_diff.go

+21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform/helper/validation/validation.go

+191
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/nicolai86/scaleway-sdk/server.go

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)