Skip to content

Commit 165222f

Browse files
authored
Merge branch 'master' into fix-rdb-private-network-endpoint
2 parents 0f96a89 + 35538bf commit 165222f

6 files changed

+3822
-841
lines changed

docs/resources/baremetal_server.md

+16
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,21 @@ resource "scaleway_baremetal_server" "base" {
111111
}
112112
```
113113

114+
### Without install config
115+
116+
```hcl
117+
data "scaleway_baremetal_offer" "my_offer" {
118+
zone = "fr-par-2"
119+
name = "EM-B112X-SSD"
120+
}
121+
122+
resource "scaleway_baremetal_server" "base" {
123+
zone = "fr-par-2"
124+
offer = data.scaleway_baremetal_offer.my_offer.offer_id
125+
install_config_afterward = true
126+
}
127+
```
128+
114129
## Arguments Reference
115130

116131
The following arguments are supported:
@@ -130,6 +145,7 @@ The following arguments are supported:
130145
- `service_password` - (Optional) Password used for the service to install. May be required depending on used os.
131146
- `reinstall_on_config_changes` - (Optional) If True, this boolean allows to reinstall the server on install config changes.
132147
~> **Important:** Updates to `ssh_key_ids`, `user`, `password`, `service_user` or `service_password` will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.
148+
- `install_config_afterward` - (Optional) If True, this boolean allows to create a server without the install config if you want to provide it later.
133149
- `name` - (Optional) The name of the server.
134150
- `hostname` - (Optional) The hostname of the server.
135151
- `description` - (Optional) A description for the server.

scaleway/resource_baremetal_server.go

+33-22
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func resourceScalewayBaremetalServer() *schema.Resource {
6161
},
6262
"os": {
6363
Type: schema.TypeString,
64-
Required: true,
64+
Optional: true,
6565
Description: "The base image of the server",
6666
DiffSuppressFunc: diffSuppressFuncLocality,
6767
ValidateFunc: validationUUIDorUUIDWithLocality(),
@@ -77,7 +77,7 @@ func resourceScalewayBaremetalServer() *schema.Resource {
7777
Type: schema.TypeString,
7878
ValidateFunc: validationUUID(),
7979
},
80-
Required: true,
80+
Optional: true,
8181
Description: `Array of SSH key IDs allowed to SSH to the server
8282
8383
**NOTE** : If you are attempting to update your SSH key IDs, it will induce the reinstall of your server.
@@ -113,6 +113,12 @@ If this behaviour is wanted, please set 'reinstall_on_ssh_key_changes' argument
113113
Default: false,
114114
Description: "If True, this boolean allows to reinstall the server on SSH key IDs, user or password changes",
115115
},
116+
"install_config_afterward": {
117+
Type: schema.TypeBool,
118+
Optional: true,
119+
Default: false,
120+
Description: "If True, this boolean allows to create a server without the install config if you want to provide it later",
121+
},
116122
"description": {
117123
Type: schema.TypeString,
118124
Optional: true,
@@ -278,8 +284,11 @@ func resourceScalewayBaremetalServerCreate(ctx context.Context, d *schema.Resour
278284
}
279285
offerID = newZonedID(zone, o.ID)
280286
}
281-
if diags := validateInstallConfig(ctx, d, meta); len(diags) > 0 {
282-
return diags
287+
288+
if !d.Get("install_config_afterward").(bool) {
289+
if diags := validateInstallConfig(ctx, d, meta); len(diags) > 0 {
290+
return diags
291+
}
283292
}
284293

285294
server, err := baremetalAPI.CreateServer(&baremetal.CreateServerRequest{
@@ -301,19 +310,26 @@ func resourceScalewayBaremetalServerCreate(ctx context.Context, d *schema.Resour
301310
return diag.FromErr(err)
302311
}
303312

304-
_, err = baremetalAPI.InstallServer(&baremetal.InstallServerRequest{
305-
Zone: server.Zone,
306-
ServerID: server.ID,
307-
OsID: expandZonedID(d.Get("os")).ID,
308-
Hostname: expandStringWithDefault(d.Get("hostname"), server.Name),
309-
SSHKeyIDs: expandStrings(d.Get("ssh_key_ids")),
310-
User: expandStringPtr(d.Get("user")),
311-
Password: expandStringPtr(d.Get("password")),
312-
ServiceUser: expandStringPtr(d.Get("service_user")),
313-
ServicePassword: expandStringPtr(d.Get("service_password")),
314-
}, scw.WithContext(ctx))
315-
if err != nil {
316-
return diag.FromErr(err)
313+
if !d.Get("install_config_afterward").(bool) {
314+
_, err = baremetalAPI.InstallServer(&baremetal.InstallServerRequest{
315+
Zone: server.Zone,
316+
ServerID: server.ID,
317+
OsID: expandZonedID(d.Get("os")).ID,
318+
Hostname: expandStringWithDefault(d.Get("hostname"), server.Name),
319+
SSHKeyIDs: expandStrings(d.Get("ssh_key_ids")),
320+
User: expandStringPtr(d.Get("user")),
321+
Password: expandStringPtr(d.Get("password")),
322+
ServiceUser: expandStringPtr(d.Get("service_user")),
323+
ServicePassword: expandStringPtr(d.Get("service_password")),
324+
}, scw.WithContext(ctx))
325+
if err != nil {
326+
return diag.FromErr(err)
327+
}
328+
329+
_, err = waitForBaremetalServerInstall(ctx, baremetalAPI, zone, server.ID, d.Timeout(schema.TimeoutCreate))
330+
if err != nil {
331+
return diag.FromErr(err)
332+
}
317333
}
318334

319335
options, optionsExist := d.GetOk("options")
@@ -357,11 +373,6 @@ func resourceScalewayBaremetalServerCreate(ctx context.Context, d *schema.Resour
357373
}
358374
}
359375

360-
_, err = waitForBaremetalServerInstall(ctx, baremetalAPI, zone, server.ID, d.Timeout(schema.TimeoutCreate))
361-
if err != nil {
362-
return diag.FromErr(err)
363-
}
364-
365376
return resourceScalewayBaremetalServerRead(ctx, d, meta)
366377
}
367378

scaleway/resource_baremetal_server_test.go

+33
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,39 @@ func TestAccScalewayBaremetalServer_RequiredInstallConfig(t *testing.T) {
161161
})
162162
}
163163

164+
func TestAccScalewayBaremetalServer_WithoutInstallConfig(t *testing.T) {
165+
tt := NewTestTools(t)
166+
defer tt.Cleanup()
167+
168+
resource.ParallelTest(t, resource.TestCase{
169+
PreCheck: func() { testAccPreCheck(t) },
170+
ProviderFactories: tt.ProviderFactories,
171+
CheckDestroy: testAccCheckScalewayBaremetalServerDestroy(tt),
172+
Steps: []resource.TestStep{
173+
{
174+
Config: `
175+
data "scaleway_baremetal_offer" "my_offer" {
176+
zone = "fr-par-2"
177+
name = "EM-B112X-SSD"
178+
}
179+
180+
resource "scaleway_baremetal_server" "base" {
181+
name = "TestAccScalewayBaremetalServer_WithoutInstallConfig"
182+
zone = "fr-par-2"
183+
offer = data.scaleway_baremetal_offer.my_offer.offer_id
184+
install_config_afterward = true
185+
}`,
186+
Check: resource.ComposeTestCheckFunc(
187+
testAccCheckScalewayBaremetalServerExists(tt, "scaleway_baremetal_server.base"),
188+
resource.TestCheckResourceAttr("scaleway_baremetal_server.base", "name", "TestAccScalewayBaremetalServer_WithoutInstallConfig"),
189+
resource.TestCheckResourceAttr("scaleway_baremetal_server.base", "offer_id", "fr-par-2/a5065ba4-dde2-45f3-adec-1ebbb27b766b"),
190+
resource.TestCheckNoResourceAttr("scaleway_baremetal_server.base", "os"),
191+
),
192+
},
193+
},
194+
})
195+
}
196+
164197
func TestAccScalewayBaremetalServer_CreateServerWithOption(t *testing.T) {
165198
tt := NewTestTools(t)
166199
defer tt.Cleanup()

scaleway/resource_lb_certificate.go

+14-16
Original file line numberDiff line numberDiff line change
@@ -193,21 +193,6 @@ func resourceScalewayLbCertificateRead(ctx context.Context, d *schema.ResourceDa
193193
return diag.FromErr(err)
194194
}
195195

196-
// check if cert is on error state
197-
if certificate.Status == lbSDK.CertificateStatusError {
198-
return diag.Diagnostics{
199-
diag.Diagnostic{
200-
Severity: diag.Error,
201-
Summary: fmt.Sprintf("certificate %s with error state", certificate.ID),
202-
},
203-
}
204-
}
205-
206-
_, err = waitForLBCertificate(ctx, lbAPI, zone, certificate.ID, d.Timeout(schema.TimeoutRead))
207-
if err != nil {
208-
return diag.FromErr(err)
209-
}
210-
211196
_ = d.Set("lb_id", newZonedIDString(zone, certificate.LB.ID))
212197
_ = d.Set("name", certificate.Name)
213198
_ = d.Set("common_name", certificate.CommonName)
@@ -217,7 +202,20 @@ func resourceScalewayLbCertificateRead(ctx context.Context, d *schema.ResourceDa
217202
_ = d.Set("not_valid_after", flattenTime(certificate.NotValidAfter))
218203
_ = d.Set("status", certificate.Status)
219204

220-
return nil
205+
diags := diag.Diagnostics(nil)
206+
207+
if certificate.Status == lbSDK.CertificateStatusError {
208+
errDetails := ""
209+
if certificate.StatusDetails != nil {
210+
errDetails = *certificate.StatusDetails
211+
}
212+
diags = append(diags, diag.Diagnostic{
213+
Severity: diag.Warning,
214+
Summary: fmt.Sprintf("certificate %s with error state", certificate.ID),
215+
Detail: errDetails,
216+
})
217+
}
218+
return diags
221219
}
222220

223221
func resourceScalewayLbCertificateUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {

0 commit comments

Comments
 (0)