Skip to content

Commit

Permalink
Fix firewall deletion
Browse files Browse the repository at this point in the history
  • Loading branch information
fhofherr committed Nov 15, 2021
1 parent ec487e9 commit d10e9f0
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 11 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ require (
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320
github.com/hashicorp/go-multierror v1.1.1
github.com/hashicorp/terraform-plugin-sdk/v2 v2.7.1
github.com/hetznercloud/hcloud-go v1.33.0
github.com/hetznercloud/hcloud-go v1.33.1
github.com/stretchr/testify v1.7.0
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -281,8 +281,8 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
github.com/hashicorp/yamux v0.0.0-20210707203944-259a57b3608c h1:nqkErwUGfpZZMqj29WZ9U/wz2OpJVDuiokLhE/3Y7IQ=
github.com/hashicorp/yamux v0.0.0-20210707203944-259a57b3608c/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
github.com/hetznercloud/hcloud-go v1.33.0 h1:cHsRgZv5JUX+I9g69KNTSUBRoPEHKgMHV38u4QKhnjQ=
github.com/hetznercloud/hcloud-go v1.33.0/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME=
github.com/hetznercloud/hcloud-go v1.33.1 h1:W1HdO2bRLTKU4WsyqAasDSpt54fYO4WNckWYfH5AuCQ=
github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME=
github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
Expand Down
23 changes: 15 additions & 8 deletions internal/firewall/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -428,14 +428,7 @@ func resourceFirewallDelete(ctx context.Context, d *schema.ResourceData, m inter
}
// Detach all Resources of the firewall before trying to delete it.
if len(firewall.AppliedTo) > 0 {
actions, _, err := client.Firewall.RemoveResources(ctx, firewall, firewall.AppliedTo)
if err != nil {
if resourceFirewallIsNotFound(err, d) {
return nil
}
return hcclient.ErrorToDiag(err)
}
if err := waitForFirewallActions(ctx, client, actions, firewall); err != nil {
if err := removeFromResources(ctx, client, d, firewall); err != nil {
return hcclient.ErrorToDiag(err)
}
}
Expand Down Expand Up @@ -464,6 +457,20 @@ func resourceFirewallDelete(ctx context.Context, d *schema.ResourceData, m inter
return nil
}

func removeFromResources(ctx context.Context, client *hcloud.Client, d *schema.ResourceData, fw *hcloud.Firewall) error {
actions, _, err := client.Firewall.RemoveResources(ctx, fw, fw.AppliedTo)
if err != nil {
if hcloud.IsError(err, hcloud.ErrorCodeFirewallResourceNotFound) || resourceFirewallIsNotFound(err, d) {
return nil
}
return err
}
if err := waitForFirewallActions(ctx, client, actions, fw); err != nil {
return err
}
return nil
}

func resourceFirewallIsNotFound(err error, d *schema.ResourceData) bool {
if hcerr, ok := err.(hcloud.Error); ok && hcerr.Code == hcloud.ErrorCodeNotFound {
log.Printf("[WARN] firewall (%s) not found, removing from state", d.Id())
Expand Down

0 comments on commit d10e9f0

Please sign in to comment.