Skip to content

fix(baremetal): add waiter private-network delete #2396

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 32 additions & 2 deletions scaleway/helpers_baremetal.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,37 @@ func flattenBaremetalPrivateNetworks(region scw.Region, privateNetworks []*barem
return flattenedPrivateNetworks
}

func detachAllPrivateNetworkFromBaremetal(ctx context.Context, d *schema.ResourceData, m interface{}, serverID string) error {
privateNetworkAPI, zone, err := baremetalPrivateNetworkAPIWithZone(d, m)
if err != nil {
return err
}
listPrivateNetwork, err := privateNetworkAPI.ListServerPrivateNetworks(&baremetal.PrivateNetworkAPIListServerPrivateNetworksRequest{
Zone: zone,
ServerID: &serverID,
}, scw.WithContext(ctx))
if err != nil {
return err
}

for _, pn := range listPrivateNetwork.ServerPrivateNetworks {
err := privateNetworkAPI.DeleteServerPrivateNetwork(&baremetal.PrivateNetworkAPIDeleteServerPrivateNetworkRequest{
Zone: zone,
ServerID: serverID,
PrivateNetworkID: pn.PrivateNetworkID,
}, scw.WithContext(ctx))
if err != nil {
return err
}
}

_, err = waitForBaremetalServerPrivateNetwork(ctx, privateNetworkAPI, zone, serverID, d.Timeout(schema.TimeoutDelete))
if err != nil && !is404Error(err) {
return err
}
return nil
}

func waitForBaremetalServer(ctx context.Context, api *baremetal.API, zone scw.Zone, serverID string, timeout time.Duration) (*baremetal.Server, error) {
retryInterval := baremetalRetryInterval
if DefaultWaitRetryInterval != nil {
Expand Down Expand Up @@ -280,7 +311,6 @@ func waitForBaremetalServerPrivateNetwork(ctx context.Context, api *baremetal.Pr
if DefaultWaitRetryInterval != nil {
retryInterval = *DefaultWaitRetryInterval
}

serverPrivateNetwork, err := api.WaitForServerPrivateNetworks(&baremetal.WaitForServerPrivateNetworksRequest{
Zone: zone,
ServerID: serverID,
Expand Down Expand Up @@ -350,7 +380,7 @@ func baremetalCompareOptions(slice1, slice2 []*baremetal.ServerOption) []*bareme

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

_, okPrivateNetwork := diff.GetOk("private_network")
Expand Down
5 changes: 5 additions & 0 deletions scaleway/resource_baremetal_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -637,6 +637,11 @@ func resourceScalewayBaremetalServerDelete(ctx context.Context, d *schema.Resour
return diag.FromErr(err)
}

err = detachAllPrivateNetworkFromBaremetal(ctx, d, meta, zonedID.ID)
if err != nil {
return diag.FromErr(err)
}

_, err = baremetalAPI.DeleteServer(&baremetal.DeleteServerRequest{
Zone: zonedID.Zone,
ServerID: zonedID.ID,
Expand Down
10,787 changes: 6,243 additions & 4,544 deletions scaleway/testdata/baremetal-server-add-another-private-network.cassette.yaml

Large diffs are not rendered by default.

8,882 changes: 5,586 additions & 3,296 deletions scaleway/testdata/baremetal-server-add-option.cassette.yaml

Large diffs are not rendered by default.

16,535 changes: 12,541 additions & 3,994 deletions scaleway/testdata/baremetal-server-add-private-network.cassette.yaml

Large diffs are not rendered by default.

12,990 changes: 8,592 additions & 4,398 deletions scaleway/testdata/baremetal-server-add-two-options-then-delete-one.cassette.yaml

Large diffs are not rendered by default.

8,259 changes: 5,019 additions & 3,240 deletions scaleway/testdata/baremetal-server-create-server-with-option.cassette.yaml

Large diffs are not rendered by default.

8,315 changes: 4,646 additions & 3,669 deletions scaleway/testdata/baremetal-server-create-server-with-private-network.cassette.yaml

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2,153 changes: 1,062 additions & 1,091 deletions scaleway/testdata/baremetal-server-without-install-config.cassette.yaml

Large diffs are not rendered by default.

11,932 changes: 7,718 additions & 4,214 deletions scaleway/testdata/data-source-baremetal-server-basic.cassette.yaml

Large diffs are not rendered by default.

4,932 changes: 3,164 additions & 1,768 deletions scaleway/testdata/data-source-flexible-ips-with-baremetal-ids.cassette.yaml

Large diffs are not rendered by default.

7,876 changes: 4,654 additions & 3,222 deletions scaleway/testdata/flexible-ip-attach-and-detach-from-baremetal-server.cassette.yaml

Large diffs are not rendered by default.

150 changes: 75 additions & 75 deletions scaleway/testdata/flexible-ip-basic.cassette.yaml

Large diffs are not rendered by default.

7,966 changes: 4,699 additions & 3,267 deletions scaleway/testdata/flexible-ip-create-and-attach-to-baremetal-server.cassette.yaml

Large diffs are not rendered by default.

138 changes: 69 additions & 69 deletions scaleway/testdata/flexible-ip-ipv6.cassette.yaml

Large diffs are not rendered by default.

302 changes: 151 additions & 151 deletions scaleway/testdata/flexible-ip-with-zone.cassette.yaml

Large diffs are not rendered by default.

Large diffs are not rendered by default.