Skip to content

Commit ae83044

Browse files
fix: make baremetal ssh keys required (scaleway#264)
1 parent ecb4a0c commit ae83044

File tree

3 files changed

+34
-50
lines changed

3 files changed

+34
-50
lines changed

scaleway/helpers_baremetal.go

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"time"
55

66
"github.com/hashicorp/terraform/helper/schema"
7-
account "github.com/scaleway/scaleway-sdk-go/api/account/v2alpha1"
87
baremetal "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1alpha1"
98
"github.com/scaleway/scaleway-sdk-go/scw"
109
)
@@ -33,17 +32,3 @@ func getBaremetalAPIWithZoneAndID(m interface{}, id string) (*baremetal.API, scw
3332
zone, ID, err := parseZonedID(id)
3433
return baremetalAPI, zone, ID, err
3534
}
36-
37-
// getAllUserSSHKeyIDs returns a slice containing all user SSH keys.
38-
func getAllUserSSHKeyIDs(m interface{}) ([]string, error) {
39-
sshKeysResponse, err := getAccountAPI(m).ListSSHKeys(&account.ListSSHKeysRequest{})
40-
if err != nil {
41-
return nil, err
42-
}
43-
44-
var ids []string
45-
for _, sshKey := range sshKeysResponse.SSHKeys {
46-
ids = append(ids, sshKey.ID)
47-
}
48-
return ids, nil
49-
}

scaleway/resource_baremetal_server_beta.go

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ func resourceScalewayBaremetalServerBeta() *schema.Resource {
4747
Type: schema.TypeString,
4848
ValidateFunc: validationUUID(),
4949
},
50-
Optional: true,
51-
Computed: true,
50+
Required: true,
5251
Description: "Array of SSH key IDs allowed to SSH to the server",
5352
},
5453
"description": {
@@ -116,16 +115,8 @@ func resourceScalewayBaremetalServerBetaCreate(d *schema.ResourceData, m interfa
116115
Hostname: res.Name,
117116
}
118117

119-
if raw, ok := d.GetOk("ssh_key_ids"); ok {
120-
for _, sshKeyID := range raw.([]interface{}) {
121-
installReq.SSHKeyIDs = append(installReq.SSHKeyIDs, sshKeyID.(string))
122-
}
123-
} else {
124-
// add all user SSH keys
125-
installReq.SSHKeyIDs, err = getAllUserSSHKeyIDs(m)
126-
if err != nil {
127-
return nil
128-
}
118+
for _, sshKeyID := range d.Get("ssh_key_ids").([]interface{}) {
119+
installReq.SSHKeyIDs = append(installReq.SSHKeyIDs, sshKeyID.(string))
129120
}
130121

131122
_, err = baremetalAPI.InstallServer(installReq)
@@ -224,16 +215,8 @@ func resourceScalewayBaremetalServerBetaUpdate(d *schema.ResourceData, m interfa
224215
Hostname: d.Get("name").(string),
225216
}
226217

227-
if raw, ok := d.GetOk("ssh_key_ids"); ok {
228-
for _, sshKeyID := range raw.([]interface{}) {
229-
installReq.SSHKeyIDs = append(installReq.SSHKeyIDs, sshKeyID.(string))
230-
}
231-
} else {
232-
// add all user SSH keys
233-
installReq.SSHKeyIDs, err = getAllUserSSHKeyIDs(m)
234-
if err != nil {
235-
return nil
236-
}
218+
for _, sshKeyID := range d.Get("ssh_key_ids").([]interface{}) {
219+
installReq.SSHKeyIDs = append(installReq.SSHKeyIDs, sshKeyID.(string))
237220
}
238221

239222
_, err := baremetalAPI.InstallServer(installReq)

scaleway/resource_baremetal_server_beta_test.go

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
)
1111

1212
func TestAccScalewayBaremetalServerBetaMinimal1(t *testing.T) {
13-
t.Skip("due to low stock on this resource type, test is flaky")
1413
resource.ParallelTest(t, resource.TestCase{
1514
PreCheck: func() { testAccPreCheck(t) },
1615
Providers: testAccProviders,
@@ -21,7 +20,7 @@ func TestAccScalewayBaremetalServerBetaMinimal1(t *testing.T) {
2120
Check: resource.ComposeTestCheckFunc(
2221
testAccCheckScalewayBaremetalServerBetaExists("scaleway_baremetal_server_beta.base"),
2322
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "name", "namo-centos"),
24-
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "offer_id", "cc372979-cda3-4335-a6d2-748b639805ea"),
23+
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "offer_id", "964f9b38-577e-470f-a220-7d762f9e8672"),
2524
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "os_id", "d17d6872-0412-45d9-a198-af82c34d3c5c"),
2625
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "description", "test a description"),
2726
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "tags.0", "terraform-test"),
@@ -34,7 +33,7 @@ func TestAccScalewayBaremetalServerBetaMinimal1(t *testing.T) {
3433
Check: resource.ComposeTestCheckFunc(
3534
testAccCheckScalewayBaremetalServerBetaExists("scaleway_baremetal_server_beta.base"),
3635
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "name", "namo-centos"),
37-
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "offer_id", "cc372979-cda3-4335-a6d2-748b639805ea"),
36+
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "offer_id", "964f9b38-577e-470f-a220-7d762f9e8672"),
3837
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "os_id", "d17d6872-0412-45d9-a198-af82c34d3c5c"),
3938
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "description", "test a description"),
4039
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "tags.0", "terraform-test"),
@@ -48,7 +47,7 @@ func TestAccScalewayBaremetalServerBetaMinimal1(t *testing.T) {
4847
Check: resource.ComposeTestCheckFunc(
4948
testAccCheckScalewayBaremetalServerBetaExists("scaleway_baremetal_server_beta.base"),
5049
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "name", "namo-ubuntu"),
51-
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "offer_id", "cc372979-cda3-4335-a6d2-748b639805ea"),
50+
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "offer_id", "964f9b38-577e-470f-a220-7d762f9e8672"),
5251
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "os_id", "d859aa89-8b4a-4551-af42-ff7c0c27260a"),
5352
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "description", "test a description"),
5453
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "tags.0", "terraform-test"),
@@ -62,7 +61,7 @@ func TestAccScalewayBaremetalServerBetaMinimal1(t *testing.T) {
6261
Check: resource.ComposeTestCheckFunc(
6362
testAccCheckScalewayBaremetalServerBetaExists("scaleway_baremetal_server_beta.base"),
6463
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "name", "namo-ubuntu"),
65-
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "offer_id", "cc372979-cda3-4335-a6d2-748b639805ea"),
64+
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "offer_id", "964f9b38-577e-470f-a220-7d762f9e8672"),
6665
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "os_id", "d859aa89-8b4a-4551-af42-ff7c0c27260a"),
6766
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "description", "test a description"),
6867
resource.TestCheckResourceAttr("scaleway_baremetal_server_beta.base", "tags.0", "terraform-test"),
@@ -128,51 +127,68 @@ func testAccCheckScalewayBaremetalServerBetaDestroy(s *terraform.State) error {
128127
}
129128

130129
var testAccCheckScalewayBaremetalServerBetaConfigMinimal1 = []string{`
130+
resource "scaleway_account_ssh_key" "main" {
131+
name = "main"
132+
public_key = "` + accountSSHKey + `"
133+
}
134+
131135
resource "scaleway_baremetal_server_beta" "base" {
132136
name = "namo-centos"
133137
zone = "fr-par-2"
134138
description = "test a description"
135-
offer_id = "cc372979-cda3-4335-a6d2-748b639805ea"
139+
offer_id = "964f9b38-577e-470f-a220-7d762f9e8672"
136140
os_id = "d17d6872-0412-45d9-a198-af82c34d3c5c"
137141
138142
tags = [ "terraform-test", "scaleway_baremetal_server_beta", "minimal" ]
143+
ssh_key_ids = [ "${scaleway_account_ssh_key.main.id}" ]
139144
}
140145
`, `
146+
resource "scaleway_account_ssh_key" "main" {
147+
name = "main"
148+
public_key = "` + accountSSHKey + `"
149+
}
150+
141151
resource "scaleway_baremetal_server_beta" "base" {
142152
name = "namo-centos"
143153
zone = "fr-par-2"
144154
description = "test a description"
145-
offer_id = "cc372979-cda3-4335-a6d2-748b639805ea"
155+
offer_id = "964f9b38-577e-470f-a220-7d762f9e8672"
146156
os_id = "d17d6872-0412-45d9-a198-af82c34d3c5c"
147157
148158
tags = [ "terraform-test", "scaleway_baremetal_server_beta", "minimal", "edited" ]
159+
ssh_key_ids = [ "${scaleway_account_ssh_key.main.id}" ]
149160
}
150161
`, `
162+
resource "scaleway_account_ssh_key" "main" {
163+
name = "main"
164+
public_key = "` + accountSSHKey + `"
165+
}
166+
151167
resource "scaleway_baremetal_server_beta" "base" {
152168
name = "namo-ubuntu"
153169
zone = "fr-par-2"
154170
description = "test a description"
155-
offer_id = "cc372979-cda3-4335-a6d2-748b639805ea"
171+
offer_id = "964f9b38-577e-470f-a220-7d762f9e8672"
156172
os_id = "d859aa89-8b4a-4551-af42-ff7c0c27260a"
157173
158174
tags = [ "terraform-test", "scaleway_baremetal_server_beta", "minimal", "edited" ]
175+
ssh_key_ids = [ "${scaleway_account_ssh_key.main.id}" ]
159176
}
160-
`, fmt.Sprintf(`
177+
`, `
161178
resource "scaleway_account_ssh_key" "main" {
162179
name = "main"
163-
public_key = "%s"
180+
public_key = "` + accountSSHKey + `"
164181
}
165182
166183
resource "scaleway_baremetal_server_beta" "base" {
167184
name = "namo-ubuntu"
168185
zone = "fr-par-2"
169186
description = "test a description"
170-
offer_id = "cc372979-cda3-4335-a6d2-748b639805ea"
187+
offer_id = "964f9b38-577e-470f-a220-7d762f9e8672"
171188
os_id = "d859aa89-8b4a-4551-af42-ff7c0c27260a"
172189
173190
tags = [ "terraform-test", "scaleway_baremetal_server_beta", "minimal", "edited" ]
174-
175191
ssh_key_ids = [ "${scaleway_account_ssh_key.main.id}" ]
176192
}
177-
`, accountSSHKey),
193+
`,
178194
}

0 commit comments

Comments
 (0)