diff --git a/go.mod b/go.mod index 6399106fb..9bd79e547 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum index 21eed6a75..5a0da3694 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/internal/firewall/resource.go b/internal/firewall/resource.go index b7d174f8c..62fa5820e 100644 --- a/internal/firewall/resource.go +++ b/internal/firewall/resource.go @@ -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) } } @@ -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())