Skip to content

Commit 27017c5

Browse files
committed
fix(baremetal):add waiter private-network delete
1 parent 9923570 commit 27017c5

18 files changed

+66216
-40172
lines changed

scaleway/helpers_baremetal.go

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,37 @@ func flattenBaremetalPrivateNetworks(region scw.Region, privateNetworks []*barem
227227
return flattenedPrivateNetworks
228228
}
229229

230+
func detachAllPrivateNetworkFromBaremetal(ctx context.Context, d *schema.ResourceData, m interface{}, serverID string) error {
231+
privateNetworkAPI, zone, err := baremetalPrivateNetworkAPIWithZone(d, m)
232+
if err != nil {
233+
return err
234+
}
235+
listPrivateNetwork, err := privateNetworkAPI.ListServerPrivateNetworks(&baremetal.PrivateNetworkAPIListServerPrivateNetworksRequest{
236+
Zone: zone,
237+
ServerID: &serverID,
238+
}, scw.WithContext(ctx))
239+
if err != nil {
240+
return err
241+
}
242+
243+
for _, pn := range listPrivateNetwork.ServerPrivateNetworks {
244+
err := privateNetworkAPI.DeleteServerPrivateNetwork(&baremetal.PrivateNetworkAPIDeleteServerPrivateNetworkRequest{
245+
Zone: zone,
246+
ServerID: serverID,
247+
PrivateNetworkID: pn.PrivateNetworkID,
248+
}, scw.WithContext(ctx))
249+
if err != nil {
250+
return err
251+
}
252+
}
253+
254+
_, err = waitForBaremetalServerPrivateNetwork(ctx, privateNetworkAPI, zone, serverID, d.Timeout(schema.TimeoutDelete))
255+
if err != nil && !is404Error(err) {
256+
return err
257+
}
258+
return nil
259+
}
260+
230261
func waitForBaremetalServer(ctx context.Context, api *baremetal.API, zone scw.Zone, serverID string, timeout time.Duration) (*baremetal.Server, error) {
231262
retryInterval := baremetalRetryInterval
232263
if DefaultWaitRetryInterval != nil {
@@ -280,7 +311,6 @@ func waitForBaremetalServerPrivateNetwork(ctx context.Context, api *baremetal.Pr
280311
if DefaultWaitRetryInterval != nil {
281312
retryInterval = *DefaultWaitRetryInterval
282313
}
283-
284314
serverPrivateNetwork, err := api.WaitForServerPrivateNetworks(&baremetal.WaitForServerPrivateNetworksRequest{
285315
Zone: zone,
286316
ServerID: serverID,
@@ -350,7 +380,7 @@ func baremetalCompareOptions(slice1, slice2 []*baremetal.ServerOption) []*bareme
350380

351381
// customDiffBaremetalPrivateNetworkOption checks that the private_network option has been set if there is a private_network
352382
func customDiffBaremetalPrivateNetworkOption() func(ctx context.Context, diff *schema.ResourceDiff, i interface{}) error {
353-
return func(ctx context.Context, diff *schema.ResourceDiff, i interface{}) error {
383+
return func(_ context.Context, diff *schema.ResourceDiff, _ interface{}) error {
354384
var isPrivateNetworkOption bool
355385

356386
_, okPrivateNetwork := diff.GetOk("private_network")

scaleway/resource_baremetal_server.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,11 @@ func resourceScalewayBaremetalServerDelete(ctx context.Context, d *schema.Resour
637637
return diag.FromErr(err)
638638
}
639639

640+
err = detachAllPrivateNetworkFromBaremetal(ctx, d, meta, zonedID.ID)
641+
if err != nil {
642+
return diag.FromErr(err)
643+
}
644+
640645
_, err = baremetalAPI.DeleteServer(&baremetal.DeleteServerRequest{
641646
Zone: zonedID.Zone,
642647
ServerID: zonedID.ID,

scaleway/testdata/baremetal-server-add-another-private-network.cassette.yaml

Lines changed: 6243 additions & 4544 deletions
Large diffs are not rendered by default.

scaleway/testdata/baremetal-server-add-option.cassette.yaml

Lines changed: 5586 additions & 3296 deletions
Large diffs are not rendered by default.

scaleway/testdata/baremetal-server-add-private-network.cassette.yaml

Lines changed: 12541 additions & 3994 deletions
Large diffs are not rendered by default.

scaleway/testdata/baremetal-server-add-two-options-then-delete-one.cassette.yaml

Lines changed: 8592 additions & 4398 deletions
Large diffs are not rendered by default.

scaleway/testdata/baremetal-server-create-server-with-option.cassette.yaml

Lines changed: 5019 additions & 3240 deletions
Large diffs are not rendered by default.

scaleway/testdata/baremetal-server-create-server-with-private-network.cassette.yaml

Lines changed: 4646 additions & 3669 deletions
Large diffs are not rendered by default.

scaleway/testdata/baremetal-server-required-install-config.cassette.yaml

Lines changed: 70 additions & 42 deletions
Large diffs are not rendered by default.

scaleway/testdata/baremetal-server-without-install-config.cassette.yaml

Lines changed: 1062 additions & 1091 deletions
Large diffs are not rendered by default.

scaleway/testdata/data-source-baremetal-server-basic.cassette.yaml

Lines changed: 7718 additions & 4214 deletions
Large diffs are not rendered by default.

scaleway/testdata/data-source-flexible-ips-with-baremetal-ids.cassette.yaml

Lines changed: 3164 additions & 1768 deletions
Large diffs are not rendered by default.

scaleway/testdata/flexible-ip-attach-and-detach-from-baremetal-server.cassette.yaml

Lines changed: 4654 additions & 3222 deletions
Large diffs are not rendered by default.

scaleway/testdata/flexible-ip-basic.cassette.yaml

Lines changed: 75 additions & 75 deletions
Large diffs are not rendered by default.

scaleway/testdata/flexible-ip-create-and-attach-to-baremetal-server.cassette.yaml

Lines changed: 4699 additions & 3267 deletions
Large diffs are not rendered by default.

scaleway/testdata/flexible-ip-ipv6.cassette.yaml

Lines changed: 69 additions & 69 deletions
Large diffs are not rendered by default.

scaleway/testdata/flexible-ip-with-zone.cassette.yaml

Lines changed: 151 additions & 151 deletions
Large diffs are not rendered by default.

scaleway/testdata/flexible-ipmac-address-duplicate-on-other-flexible-ips.cassette.yaml

Lines changed: 1890 additions & 3130 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)