diff --git a/.golangci.yaml b/.golangci.yaml index 1fb5b2316..19e30b46a 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -21,7 +21,7 @@ linters: - misspell - prealloc - rowserrcheck - - scopelint + - exportloopref - staticcheck - structcheck - typecheck @@ -35,7 +35,7 @@ issues: - path: _test\.go linters: - gosec - - scopelint + - exportloopref - errcheck - linters: - gosec diff --git a/hcloud/provider.go b/hcloud/provider.go index edb966736..ec6992666 100644 --- a/hcloud/provider.go +++ b/hcloud/provider.go @@ -7,6 +7,7 @@ import ( "time" "github.com/hetznercloud/terraform-provider-hcloud/internal/firewall" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" "github.com/hetznercloud/terraform-provider-hcloud/internal/snapshot" @@ -118,7 +119,7 @@ func providerConfigure(_ context.Context, d *schema.ResourceData) (interface{}, if pollInterval, ok := d.GetOk("poll_interval"); ok { pollInterval, err := time.ParseDuration(pollInterval.(string)) if err != nil { - return nil, diag.FromErr(err) + return nil, hcclient.ErrorToDiag(err) } opts = append(opts, hcloud.WithPollInterval(pollInterval)) } diff --git a/internal/certificate/data_source.go b/internal/certificate/data_source.go index 864695548..d006ce876 100644 --- a/internal/certificate/data_source.go +++ b/internal/certificate/data_source.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // DataSourceType is the type name of the Hetzner Cloud Certificate resource. @@ -76,7 +77,7 @@ func dataSourceHcloudCertificateRead(ctx context.Context, d *schema.ResourceData if id, ok := d.GetOk("id"); ok { cert, _, err := client.Certificate.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if cert == nil { return diag.Errorf("certificate not found: id: %d", id) @@ -87,7 +88,7 @@ func dataSourceHcloudCertificateRead(ctx context.Context, d *schema.ResourceData if name, ok := d.GetOk("name"); ok { cert, _, err := client.Certificate.Get(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if cert == nil { return diag.Errorf("certificate not found: name: %s", name) @@ -104,13 +105,13 @@ func dataSourceHcloudCertificateRead(ctx context.Context, d *schema.ResourceData } allCertificates, err := client.Certificate.AllWithOpts(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if len(allCertificates) == 0 { - return diag.FromErr(fmt.Errorf("no Certificate found for selector %q", selector)) + return hcclient.ErrorToDiag(fmt.Errorf("no Certificate found for selector %q", selector)) } if len(allCertificates) > 1 { - return diag.FromErr(fmt.Errorf("more than one Certificate found for selector %q", selector)) + return hcclient.ErrorToDiag(fmt.Errorf("more than one Certificate found for selector %q", selector)) } setCertificateSchema(d, allCertificates[0]) return nil diff --git a/internal/certificate/resource.go b/internal/certificate/resource.go index ed4863830..4f5998225 100644 --- a/internal/certificate/resource.go +++ b/internal/certificate/resource.go @@ -175,7 +175,7 @@ func createUploadedResource(ctx context.Context, d *schema.ResourceData, m inter res, _, err := client.Certificate.Create(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(strconv.Itoa(res.ID)) return readResource(ctx, d, m) @@ -204,10 +204,10 @@ func createManagedResource(ctx context.Context, d *schema.ResourceData, m interf res, _, err := c.Certificate.CreateCertificate(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, res.Action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(strconv.Itoa(res.Certificate.ID)) @@ -222,7 +222,7 @@ func readResource(ctx context.Context, d *schema.ResourceData, m interface{}) di if resourceCertificateNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if cert == nil { d.SetId("") @@ -261,7 +261,7 @@ func updateResource(ctx context.Context, d *schema.ResourceData, m interface{}) cert, _, err := client.Certificate.Get(ctx, d.Id()) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if cert == nil { d.SetId("") @@ -274,7 +274,7 @@ func updateResource(ctx context.Context, d *schema.ResourceData, m interface{}) Name: d.Get("name").(string), } if _, _, err := client.Certificate.Update(ctx, cert, opts); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } if d.HasChange("labels") { @@ -285,7 +285,7 @@ func updateResource(ctx context.Context, d *schema.ResourceData, m interface{}) opts.Labels[k] = v.(string) } if _, _, err := client.Certificate.Update(ctx, cert, opts); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } d.Partial(false) @@ -306,7 +306,7 @@ func deleteResource(ctx context.Context, d *schema.ResourceData, m interface{}) // certificate has already been deleted return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId("") return nil diff --git a/internal/datacenter/data_source.go b/internal/datacenter/data_source.go index 5f1d06f8e..298ea9491 100644 --- a/internal/datacenter/data_source.go +++ b/internal/datacenter/data_source.go @@ -12,6 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) const ( @@ -68,7 +69,7 @@ func dataSourceHcloudDatacenterRead(ctx context.Context, data *schema.ResourceDa if id, ok := data.GetOk("id"); ok { d, _, err := client.Datacenter.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if d == nil { return diag.Errorf("no datacenter found with id %d", id) @@ -79,7 +80,7 @@ func dataSourceHcloudDatacenterRead(ctx context.Context, data *schema.ResourceDa if name, ok := data.GetOk("name"); ok { d, _, err := client.Datacenter.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if d == nil { return diag.Errorf("no datacenter found with name %v", name) @@ -148,7 +149,7 @@ func dataSourceHcloudDatacentersRead(ctx context.Context, d *schema.ResourceData client := m.(*hcloud.Client) dcs, err := client.Datacenter.All(ctx) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } names := make([]string, 0, len(dcs)) diff --git a/internal/e2etests/firewall/resource_test.go b/internal/e2etests/firewall/resource_test.go index 3538281a0..165c8b62e 100644 --- a/internal/e2etests/firewall/resource_test.go +++ b/internal/e2etests/firewall/resource_test.go @@ -76,6 +76,7 @@ func TestFirewallResource_Basic(t *testing.T) { fmt.Sprintf("basic-firewall--%d", tmplMan.RandInt)), resource.TestCheckResourceAttr(res.TFID(), "rule.#", "3"), testsupport.LiftTCF(hasFirewallRule(t, &f, "in", "80", "tcp", []string{"0.0.0.0/0", "::/0"}, []string{})), + testsupport.LiftTCF(hasFirewallRule(t, &f, "in", "any", "udp", []string{"0.0.0.0/0", "::/0"}, []string{})), testsupport.LiftTCF(hasFirewallRule(t, &f, "out", "80", "tcp", []string{}, []string{"0.0.0.0/0", "::/0"})), ), }, @@ -95,6 +96,7 @@ func TestFirewallResource_Basic(t *testing.T) { fmt.Sprintf("basic-firewall--%d", tmplMan.RandInt)), resource.TestCheckResourceAttr(res.TFID(), "rule.#", "3"), testsupport.LiftTCF(hasFirewallRule(t, &f, "in", "443", "tcp", []string{"0.0.0.0/0", "::/0"}, []string{})), + testsupport.LiftTCF(hasFirewallRule(t, &f, "in", "any", "udp", []string{"0.0.0.0/0", "::/0"}, []string{})), testsupport.LiftTCF(hasFirewallRule(t, &f, "out", "443", "tcp", []string{}, []string{"0.0.0.0/0", "::/0"})), ), }, diff --git a/internal/firewall/data_source.go b/internal/firewall/data_source.go index 0adaa8d03..22aeb0d6b 100644 --- a/internal/firewall/data_source.go +++ b/internal/firewall/data_source.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // DataSourceType is the type name of the Hetzner Cloud Firewall resource. @@ -81,7 +82,7 @@ func dataSourceHcloudFirewallRead(ctx context.Context, d *schema.ResourceData, m if id, ok := d.GetOk("id"); ok { i, _, err := client.Firewall.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if i == nil { return diag.Errorf("no firewall found with id %d", id) @@ -92,7 +93,7 @@ func dataSourceHcloudFirewallRead(ctx context.Context, d *schema.ResourceData, m if name, ok := d.GetOk("name"); ok { i, _, err := client.Firewall.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if i == nil { return diag.Errorf("no firewall found with name %v", name) @@ -107,7 +108,7 @@ func dataSourceHcloudFirewallRead(ctx context.Context, d *schema.ResourceData, m opts := hcloud.FirewallListOpts{ListOpts: hcloud.ListOpts{LabelSelector: selector.(string)}} allFirewalls, err := client.Firewall.AllWithOpts(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if len(allFirewalls) == 0 { return diag.Errorf("no firewall found for selector %q", selector) diff --git a/internal/firewall/resource.go b/internal/firewall/resource.go index 66c323bd9..c258ae988 100644 --- a/internal/firewall/resource.go +++ b/internal/firewall/resource.go @@ -124,12 +124,12 @@ func resourceFirewallCreate(ctx context.Context, d *schema.ResourceData, m inter res, _, err := client.Firewall.Create(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } for _, nextAction := range res.Actions { if err := hcclient.WaitForAction(ctx, &client.Action, nextAction); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } d.SetId(strconv.Itoa(res.Firewall.ID)) @@ -193,7 +193,7 @@ func resourceFirewallRead(ctx context.Context, d *schema.ResourceData, m interfa firewall, _, err := client.Firewall.GetByID(ctx, id) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if firewall == nil { log.Printf("[WARN] firewall (%s) not found, removing from state", d.Id()) @@ -219,7 +219,7 @@ func resourceFirewallUpdate(ctx context.Context, d *schema.ResourceData, m inter if resourceFirewallIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.Partial(true) @@ -233,7 +233,7 @@ func resourceFirewallUpdate(ctx context.Context, d *schema.ResourceData, m inter if resourceFirewallIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -249,10 +249,10 @@ func resourceFirewallUpdate(ctx context.Context, d *schema.ResourceData, m inter if resourceFirewallIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := waitForFirewallActions(ctx, client, actions, firewall); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } @@ -270,7 +270,7 @@ func resourceFirewallUpdate(ctx context.Context, d *schema.ResourceData, m inter if resourceFirewallIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } d.Partial(false) @@ -289,7 +289,7 @@ func resourceFirewallDelete(ctx context.Context, d *schema.ResourceData, m inter } firewall, _, err := client.Firewall.GetByID(ctx, firewallID) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } err = control.Retry(control.DefaultRetries, func() error { @@ -309,7 +309,7 @@ func resourceFirewallDelete(ctx context.Context, d *schema.ResourceData, m inter return nil }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/firewall/validation.go b/internal/firewall/validation.go index fe6f5a163..569ba91f4 100644 --- a/internal/firewall/validation.go +++ b/internal/firewall/validation.go @@ -5,13 +5,14 @@ import ( "github.com/hashicorp/go-cty/cty" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) func validateIPDiag(i interface{}, path cty.Path) diag.Diagnostics { ipS := i.(string) ip, n, err := net.ParseCIDR(ipS) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if ip.String() != n.IP.String() { return diag.Errorf("%s is not the start of the cidr block %s", ipS, n) diff --git a/internal/floatingip/data_source.go b/internal/floatingip/data_source.go index f87314b98..d076bd178 100644 --- a/internal/floatingip/data_source.go +++ b/internal/floatingip/data_source.go @@ -3,6 +3,8 @@ package floatingip import ( "context" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -77,7 +79,7 @@ func dataSourceHcloudFloatingIPRead(ctx context.Context, d *schema.ResourceData, if id, ok := d.GetOk("id"); ok { f, _, err := client.FloatingIP.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if f == nil { return diag.Errorf("no Floating IP found with id %d", id) @@ -88,7 +90,7 @@ func dataSourceHcloudFloatingIPRead(ctx context.Context, d *schema.ResourceData, if name, ok := d.GetOk("name"); ok { f, _, err := client.FloatingIP.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if f == nil { return diag.Errorf("no Floating IP found with name %s", name) @@ -100,7 +102,7 @@ func dataSourceHcloudFloatingIPRead(ctx context.Context, d *schema.ResourceData, var allIPs []*hcloud.FloatingIP allIPs, err := client.FloatingIP.All(ctx) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } // Find by 'ip_address' @@ -128,7 +130,7 @@ func dataSourceHcloudFloatingIPRead(ctx context.Context, d *schema.ResourceData, } allIPs, err := client.FloatingIP.AllWithOpts(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if len(allIPs) == 0 { return diag.Errorf("no Floating IP found for selector %q", selector) diff --git a/internal/floatingip/resource.go b/internal/floatingip/resource.go index 72f09af04..721db5f16 100644 --- a/internal/floatingip/resource.go +++ b/internal/floatingip/resource.go @@ -93,14 +93,14 @@ func resourceFloatingIPCreate(ctx context.Context, d *schema.ResourceData, m int res, _, err := client.FloatingIP.Create(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(strconv.Itoa(res.FloatingIP.ID)) if res.Action != nil { _, errCh := client.Action.WatchProgress(ctx, res.Action) if err := <-errCh; err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -119,7 +119,7 @@ func resourceFloatingIPRead(ctx context.Context, d *schema.ResourceData, m inter floatingIP, _, err := client.FloatingIP.GetByID(ctx, id) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if floatingIP == nil { log.Printf("[WARN] Floating IP (%s) not found, removing from state", d.Id()) @@ -153,7 +153,7 @@ func resourceFloatingIPUpdate(ctx context.Context, d *schema.ResourceData, m int if resourceFloatingIPIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -166,7 +166,7 @@ func resourceFloatingIPUpdate(ctx context.Context, d *schema.ResourceData, m int if resourceFloatingIPIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -178,10 +178,10 @@ func resourceFloatingIPUpdate(ctx context.Context, d *schema.ResourceData, m int if resourceFloatingIPIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &client.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } else { a, _, err := client.FloatingIP.Assign(ctx, floatingIP, &hcloud.Server{ID: serverID}) @@ -189,10 +189,10 @@ func resourceFloatingIPUpdate(ctx context.Context, d *schema.ResourceData, m int if resourceFloatingIPIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &client.Action, a); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } @@ -209,7 +209,7 @@ func resourceFloatingIPUpdate(ctx context.Context, d *schema.ResourceData, m int if resourceFloatingIPIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } d.Partial(false) @@ -231,7 +231,7 @@ func resourceFloatingIPDelete(ctx context.Context, d *schema.ResourceData, m int // server has already been deleted return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/floatingip/resource_assignment.go b/internal/floatingip/resource_assignment.go index 95d745316..aa8d76677 100644 --- a/internal/floatingip/resource_assignment.go +++ b/internal/floatingip/resource_assignment.go @@ -9,6 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // AssignmentResourceType is the type name of the Hetzner Cloud FloatingIP resource. @@ -51,7 +52,7 @@ func resourceFloatingIPAssignmentCreate(ctx context.Context, d *schema.ResourceD _, _, err := client.FloatingIP.Assign(ctx, floatingIP, server) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } // Since a floating ip can only be assigned to one server @@ -74,7 +75,7 @@ func resourceFloatingIPAssignmentRead(ctx context.Context, d *schema.ResourceDat // therefore the cast should always work floatingIP, _, err := client.FloatingIP.GetByID(ctx, floatingIPID) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if floatingIP == nil { log.Printf("[WARN] Floating IP ID (%v) not found, removing Floating IP Association from state", d.Get("floating_ip_id")) @@ -99,7 +100,7 @@ func resourceFloatingIPAssignmentRead(ctx context.Context, d *schema.ResourceDat } server, _, err := client.Server.GetByID(ctx, serverID) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil { log.Printf("[WARN] Server ID (%v) not found, removing Floating IP Association from state", d.Get("server_id")) @@ -136,7 +137,7 @@ func resourceFloatingIPAssignmentDelete(ctx context.Context, d *schema.ResourceD if floatingIP.Server != nil { _, _, err = client.FloatingIP.Unassign(ctx, floatingIP) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } return nil diff --git a/internal/hcclient/error.go b/internal/hcclient/error.go new file mode 100644 index 000000000..df598c3e7 --- /dev/null +++ b/internal/hcclient/error.go @@ -0,0 +1,29 @@ +package hcclient + +import ( + "fmt" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hetznercloud/hcloud-go/hcloud" +) + +// ErrorToDiag creates a terraform diag +// When some hcloud errors are passed it enriches the default +// Error() function from them with a few more details to make +// them more understandable for users +func ErrorToDiag(err error) diag.Diagnostics { + if hcloud.IsError(err, hcloud.ErrorCodeInvalidInput) { + err := err.(hcloud.Error) + return enrichInvalidInput(err) + } + return diag.FromErr(err) +} + +func enrichInvalidInput(err hcloud.Error) diag.Diagnostics { + ie := err.Details.(hcloud.ErrorDetailsInvalidInput) + invalidInputs := make([]string, len(ie.Fields)) + for i, v := range ie.Fields { + invalidInputs[i] = fmt.Sprintf("%s => %s", v.Name, v.Messages) + } + return diag.Errorf("%s: %s", err.Error(), invalidInputs) +} diff --git a/internal/image/data_source.go b/internal/image/data_source.go index ae2df8644..7de1ffa2b 100644 --- a/internal/image/data_source.go +++ b/internal/image/data_source.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // DataSourceType is the type name of the Hetzner Cloud image resource. @@ -94,7 +95,7 @@ func dataSourceHcloudImageRead(ctx context.Context, d *schema.ResourceData, m in if id, ok := d.GetOk("id"); ok { i, _, err := client.Image.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if i == nil { return diag.Errorf("no image found with id %d", id) @@ -105,7 +106,7 @@ func dataSourceHcloudImageRead(ctx context.Context, d *schema.ResourceData, m in if name, ok := d.GetOk("name"); ok { i, _, err := client.Image.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if i == nil { return diag.Errorf("no image found with name %v", name) @@ -130,7 +131,7 @@ func dataSourceHcloudImageRead(ctx context.Context, d *schema.ResourceData, m in opts := hcloud.ImageListOpts{ListOpts: hcloud.ListOpts{LabelSelector: selector}, Status: statuses} allImages, err := client.Image.AllWithOpts(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if len(allImages) == 0 { return diag.Errorf("no image found for selector %q", selector) diff --git a/internal/loadbalancer/data_source.go b/internal/loadbalancer/data_source.go index b97495619..fae617fcc 100644 --- a/internal/loadbalancer/data_source.go +++ b/internal/loadbalancer/data_source.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // DataSourceType is the type name of the Hetzner Cloud Load Balancer resource. @@ -211,7 +212,7 @@ func dataSourceHcloudLoadBalancerRead(ctx context.Context, d *schema.ResourceDat if id, ok := d.GetOk("id"); ok { lb, _, err := client.LoadBalancer.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if lb == nil { return diag.Errorf("no Load Balancer found with id %d", id) @@ -222,7 +223,7 @@ func dataSourceHcloudLoadBalancerRead(ctx context.Context, d *schema.ResourceDat if name, ok := d.GetOk("name"); ok { lb, _, err := client.LoadBalancer.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if lb == nil { return diag.Errorf("no Load Balancer found with name %s", name) @@ -242,7 +243,7 @@ func dataSourceHcloudLoadBalancerRead(ctx context.Context, d *schema.ResourceDat } allLoadBalancers, err := client.LoadBalancer.AllWithOpts(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if len(allLoadBalancers) == 0 { return diag.Errorf("no Load Balancer found for selector %q", selector) diff --git a/internal/loadbalancer/resource.go b/internal/loadbalancer/resource.go index 53b265945..5c5fa538a 100644 --- a/internal/loadbalancer/resource.go +++ b/internal/loadbalancer/resource.go @@ -148,12 +148,12 @@ func resourceLoadBalancerCreate(ctx context.Context, d *schema.ResourceData, m i res, _, err := c.LoadBalancer.Create(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(strconv.Itoa(res.LoadBalancer.ID)) if err := hcclient.WaitForAction(ctx, &c.Action, res.Action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return resourceLoadBalancerRead(ctx, d, m) @@ -167,7 +167,7 @@ func resourceLoadBalancerRead(ctx context.Context, d *schema.ResourceData, m int if resourceLoadBalancerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if loadBalancer == nil { d.SetId("") @@ -181,7 +181,7 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, m i c := m.(*hcloud.Client) loadBalancer, _, err := c.LoadBalancer.Get(ctx, d.Id()) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if loadBalancer == nil { d.SetId("") @@ -198,7 +198,7 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, m i if resourceLoadBalancerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -211,10 +211,10 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, m i if resourceLoadBalancerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -230,10 +230,10 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, m i if resourceLoadBalancerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -250,7 +250,7 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, m i if resourceLoadBalancerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -274,10 +274,10 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, m i if resourceLoadBalancerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } @@ -285,7 +285,7 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, m i // now we get the loadbalancer again loadBalancer, _, err := c.LoadBalancer.Get(ctx, d.Id()) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if loadBalancer == nil { d.SetId("") @@ -311,10 +311,10 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, m i if resourceLoadBalancerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } @@ -328,7 +328,7 @@ func resourceLoadBalancerDelete(ctx context.Context, d *schema.ResourceData, m i loadBalancer, _, err := client.LoadBalancer.Get(ctx, d.Id()) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if loadBalancer == nil { d.SetId("") @@ -340,7 +340,7 @@ func resourceLoadBalancerDelete(ctx context.Context, d *schema.ResourceData, m i // loadBalancer has already been deleted return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/loadbalancer/resource_network.go b/internal/loadbalancer/resource_network.go index 7448ce579..20f9b004b 100644 --- a/internal/loadbalancer/resource_network.go +++ b/internal/loadbalancer/resource_network.go @@ -80,7 +80,7 @@ func resourceLoadBalancerNetworkCreate(ctx context.Context, d *schema.ResourceDa if snIDSet { nwID, _, err := network.ParseSubnetID(subNetID.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } networkID = nwID } @@ -112,17 +112,17 @@ func resourceLoadBalancerNetworkCreate(ctx context.Context, d *schema.ResourceDa return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } enablePublicInterface := d.Get("enable_public_interface").(bool) err = resourceLoadBalancerNetworkUpdatePublicInterface(ctx, enablePublicInterface, lb, c) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(generateLoadBalancerNetworkID(lb, nw)) @@ -139,7 +139,7 @@ func resourceLoadBalancerNetworkRead(ctx context.Context, d *schema.ResourceData return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil { log.Printf("[WARN] LoadBalancer (%s) not found, removing from state", d.Id()) @@ -191,10 +191,10 @@ func resourceLoadBalancerNetworkDelete(ctx context.Context, d *schema.ResourceDa return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &client.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/loadbalancer/resource_service.go b/internal/loadbalancer/resource_service.go index 2dba16c24..a27d4866e 100644 --- a/internal/loadbalancer/resource_service.go +++ b/internal/loadbalancer/resource_service.go @@ -183,7 +183,7 @@ func resourceLoadBalancerServiceCreate(ctx context.Context, d *schema.ResourceDa lbID, err := strconv.Atoi(d.Get("load_balancer_id").(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } lb := hcloud.LoadBalancer{ID: lbID} @@ -236,10 +236,10 @@ func resourceLoadBalancerServiceCreate(ctx context.Context, d *schema.ResourceDa return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, a); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } svcID := fmt.Sprintf("%d__%d", lb.ID, listenPort) @@ -258,7 +258,7 @@ func resourceLoadBalancerServiceUpdate(ctx context.Context, d *schema.ResourceDa return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } protocol := hcloud.LoadBalancerServiceProtocol(d.Get("protocol").(string)) opts := hcloud.LoadBalancerUpdateServiceOpts{ @@ -285,10 +285,10 @@ func resourceLoadBalancerServiceUpdate(ctx context.Context, d *schema.ResourceDa if resourceLoadBalancerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return resourceLoadBalancerServiceRead(ctx, d, m) } @@ -302,10 +302,10 @@ func resourceLoadBalancerServiceRead(ctx context.Context, d *schema.ResourceData return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if setLoadBalancerServiceSchema(d, lb, svc); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil } @@ -322,7 +322,7 @@ func resourceLoadBalancerServiceDelete(ctx context.Context, d *schema.ResourceDa return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } a, _, err := c.LoadBalancer.DeleteService(ctx, lb, svc.ListenPort) diff --git a/internal/loadbalancer/resource_target.go b/internal/loadbalancer/resource_target.go index 4651ee378..d91ba8439 100644 --- a/internal/loadbalancer/resource_target.go +++ b/internal/loadbalancer/resource_target.go @@ -106,7 +106,7 @@ func resourceLoadBalancerTargetCreate(ctx context.Context, d *schema.ResourceDat return diag.Errorf("unsupported target type: %s", tgtType) } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if a != nil { if err := hcclient.WaitForAction(ctx, &c.Action, a); err != nil { @@ -258,7 +258,7 @@ func resourceLoadBalancerTargetRead(ctx context.Context, d *schema.ResourceData, _, tgt, err := findLoadBalancerTarget(ctx, client, lbID, tgtType, d) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } setLoadBalancerTarget(d, lbID, tgt) @@ -275,10 +275,10 @@ func resourceLoadBalancerTargetUpdate(ctx context.Context, d *schema.ResourceDat return resourceLoadBalancerTargetCreate(ctx, d, m) } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := removeLoadBalancerTarget(ctx, client, lb, tgt); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return resourceLoadBalancerTargetCreate(ctx, d, m) } @@ -293,10 +293,10 @@ func resourceLoadBalancerTargetDelete(ctx context.Context, d *schema.ResourceDat return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := removeLoadBalancerTarget(ctx, client, lb, tgt); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil } diff --git a/internal/location/data_source.go b/internal/location/data_source.go index d3ade76b5..8c56f4ae4 100644 --- a/internal/location/data_source.go +++ b/internal/location/data_source.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) const ( @@ -67,7 +68,7 @@ func dataSourceHcloudLocationRead(ctx context.Context, d *schema.ResourceData, m if id, ok := d.GetOk("id"); ok { l, _, err := client.Location.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if l == nil { return diag.Errorf("no location found with id %d", id) @@ -78,7 +79,7 @@ func dataSourceHcloudLocationRead(ctx context.Context, d *schema.ResourceData, m if name, ok := d.GetOk("name"); ok { l, _, err := client.Location.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if l == nil { return diag.Errorf("no location found with name %v", name) @@ -129,7 +130,7 @@ func dataSourceHcloudLocationsRead(ctx context.Context, d *schema.ResourceData, client := m.(*hcloud.Client) ls, err := client.Location.All(ctx) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } names := make([]string, len(ls)) diff --git a/internal/network/data_source.go b/internal/network/data_source.go index 5440cc352..3f8271a29 100644 --- a/internal/network/data_source.go +++ b/internal/network/data_source.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // DataSourceType is the type name of the Hetzner Cloud Network resource. @@ -47,7 +48,7 @@ func dataSourceHcloudNetworkRead(ctx context.Context, d *schema.ResourceData, m if id, ok := d.GetOk("id"); ok { n, _, err := client.Network.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if n == nil { return diag.Errorf("no network found with id %d", id) @@ -58,7 +59,7 @@ func dataSourceHcloudNetworkRead(ctx context.Context, d *schema.ResourceData, m if name, ok := d.GetOk("name"); ok { n, _, err := client.Network.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if n == nil { return diag.Errorf("no network found with name %s", name) @@ -78,7 +79,7 @@ func dataSourceHcloudNetworkRead(ctx context.Context, d *schema.ResourceData, m } allNetworks, err := client.Network.AllWithOpts(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if len(allNetworks) == 0 { return diag.Errorf("no network found for selector %q", selector) diff --git a/internal/network/resource.go b/internal/network/resource.go index 79b6857f4..e19bb8444 100644 --- a/internal/network/resource.go +++ b/internal/network/resource.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // ResourceType is the type name of the Hetzner Cloud Network resource. @@ -51,7 +52,7 @@ func resourceNetworkCreate(ctx context.Context, d *schema.ResourceData, m interf _, ipRange, err := net.ParseCIDR(d.Get("ip_range").(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } opts := hcloud.NetworkCreateOpts{ @@ -68,7 +69,7 @@ func resourceNetworkCreate(ctx context.Context, d *schema.ResourceData, m interf network, _, err := client.Network.Create(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(strconv.Itoa(network.ID)) @@ -84,7 +85,7 @@ func resourceNetworkRead(ctx context.Context, d *schema.ResourceData, m interfac if resourceNetworkIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if network == nil { d.SetId("") @@ -99,7 +100,7 @@ func resourceNetworkUpdate(ctx context.Context, d *schema.ResourceData, m interf network, _, err := client.Network.Get(ctx, d.Id()) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if network == nil { d.SetId("") @@ -116,7 +117,7 @@ func resourceNetworkUpdate(ctx context.Context, d *schema.ResourceData, m interf if resourceNetworkIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } if d.HasChange("labels") { @@ -132,7 +133,7 @@ func resourceNetworkUpdate(ctx context.Context, d *schema.ResourceData, m interf if resourceNetworkIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } d.Partial(false) @@ -155,7 +156,7 @@ func resourceNetworkDelete(ctx context.Context, d *schema.ResourceData, m interf // network has already been deleted return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/network/resource_route.go b/internal/network/resource_route.go index 3d1b6fc89..b4de35fff 100644 --- a/internal/network/resource_route.go +++ b/internal/network/resource_route.go @@ -57,7 +57,7 @@ func resourceNetworkRouteCreate(ctx context.Context, d *schema.ResourceData, m i _, destination, err := net.ParseCIDR(d.Get("destination").(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } gateway := net.ParseIP(d.Get("gateway").(string)) @@ -85,10 +85,10 @@ func resourceNetworkRouteCreate(ctx context.Context, d *schema.ResourceData, m i return control.AbortRetry(err) }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, a); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(generateNetworkRouteID(network, destination.String())) @@ -105,7 +105,7 @@ func resourceNetworkRouteRead(ctx context.Context, d *schema.ResourceData, m int return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if network == nil { log.Printf("[WARN] Network Route (%s) not found, removing from state", d.Id()) @@ -144,11 +144,11 @@ func resourceNetworkRouteDelete(ctx context.Context, d *schema.ResourceData, m i return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil } diff --git a/internal/network/resource_subnet.go b/internal/network/resource_subnet.go index 8c2b97e2b..90a3f6b36 100644 --- a/internal/network/resource_subnet.go +++ b/internal/network/resource_subnet.go @@ -78,7 +78,7 @@ func resourceNetworkSubnetCreate(ctx context.Context, d *schema.ResourceData, m _, ipRange, err := net.ParseCIDR(d.Get("ip_range").(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } networkID := d.Get("network_id") network := &hcloud.Network{ID: networkID.(int)} @@ -110,11 +110,11 @@ func resourceNetworkSubnetCreate(ctx context.Context, d *schema.ResourceData, m return control.AbortRetry(err) }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, a); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(generateNetworkSubnetID(network, ipRange.String())) @@ -131,7 +131,7 @@ func resourceNetworkSubnetRead(ctx context.Context, d *schema.ResourceData, m in return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if network == nil { log.Printf("[WARN] Network Subnet (%s) not found, removing from state", d.Id()) @@ -178,10 +178,10 @@ func resourceNetworkSubnetDelete(ctx context.Context, d *schema.ResourceData, m return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, a); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil } diff --git a/internal/rdns/resource_hcloud_rdns.go b/internal/rdns/resource_hcloud_rdns.go index c95de6c6a..3bfffcc9f 100644 --- a/internal/rdns/resource_hcloud_rdns.go +++ b/internal/rdns/resource_hcloud_rdns.go @@ -64,7 +64,7 @@ func resourceReverseDNSRead(ctx context.Context, d *schema.ResourceData, m inter return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil && floatingIP == nil { log.Printf("[WARN] RDNS entry (%s) not found, removing from state", d.Id()) @@ -125,7 +125,7 @@ func resourceReverseDNSCreate(ctx context.Context, d *schema.ResourceData, m int if serverOK { server, _, err := c.Server.GetByID(ctx, serverID.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil { log.Printf("[WARN] Server (%s) not found, removing from state", d.Id()) @@ -136,10 +136,10 @@ func resourceReverseDNSCreate(ctx context.Context, d *schema.ResourceData, m int d.SetId(generateRDNSID(server, nil, ip)) action, _, err := c.Server.ChangeDNSPtr(ctx, server, ip, &ptr) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return resourceReverseDNSRead(ctx, d, m) @@ -152,7 +152,7 @@ func resourceReverseDNSCreate(ctx context.Context, d *schema.ResourceData, m int floatingIP, _, err := c.FloatingIP.GetByID(ctx, floatingIPID.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if floatingIP == nil { log.Printf("[WARN] Floating IP (%s) not found, removing from state", d.Id()) @@ -163,11 +163,11 @@ func resourceReverseDNSCreate(ctx context.Context, d *schema.ResourceData, m int d.SetId(generateRDNSID(nil, floatingIP, ip)) action, _, err := c.FloatingIP.ChangeDNSPtr(ctx, floatingIP, ip, &ptr) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return resourceReverseDNSRead(ctx, d, m) } @@ -182,7 +182,7 @@ func resourceReverseDNSUpdate(ctx context.Context, d *schema.ResourceData, m int return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil && floatingIP == nil { log.Printf("[WARN] RDNS entry (%s) not found, removing from state", d.Id()) @@ -197,18 +197,18 @@ func resourceReverseDNSUpdate(ctx context.Context, d *schema.ResourceData, m int if floatingIP != nil { action, _, err := c.FloatingIP.ChangeDNSPtr(ctx, floatingIP, ip, &ptr) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } else if server != nil { action, _, err := c.Server.ChangeDNSPtr(ctx, server, ip, &ptr) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } @@ -225,7 +225,7 @@ func resourceReverseDNSDelete(ctx context.Context, d *schema.ResourceData, m int return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil && floatingIP == nil { log.Printf("[WARN] RDNS entry (%s) not found, removing from state", d.Id()) @@ -240,10 +240,10 @@ func resourceReverseDNSDelete(ctx context.Context, d *schema.ResourceData, m int // floating ip has already been deleted return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil } @@ -254,10 +254,10 @@ func resourceReverseDNSDelete(ctx context.Context, d *schema.ResourceData, m int // server has already been deleted return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/server/data_source.go b/internal/server/data_source.go index ad3ca6989..7189b4af1 100644 --- a/internal/server/data_source.go +++ b/internal/server/data_source.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // DataSourceType is the type name of the Hetzner Cloud server resource. @@ -112,7 +113,7 @@ func dataSourceHcloudServerRead(ctx context.Context, d *schema.ResourceData, m i if id, ok := d.GetOk("id"); ok { s, _, err := client.Server.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if s == nil { return diag.Errorf("no Server found with id %d", id) @@ -124,7 +125,7 @@ func dataSourceHcloudServerRead(ctx context.Context, d *schema.ResourceData, m i if name, ok := d.GetOk("name"); ok { s, _, err := client.Server.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if s == nil { return diag.Errorf("no Server found with name %s", name) @@ -154,7 +155,7 @@ func dataSourceHcloudServerRead(ctx context.Context, d *schema.ResourceData, m i } allServers, err := client.Server.AllWithOpts(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if len(allServers) == 0 { return diag.Errorf("no Server found for selector %q", selector) diff --git a/internal/server/resource.go b/internal/server/resource.go index 060b33cf3..0608a34b6 100644 --- a/internal/server/resource.go +++ b/internal/server/resource.go @@ -184,7 +184,7 @@ func resourceServerCreate(ctx context.Context, d *schema.ResourceData, m interfa var err error image, _, err := c.Image.Get(ctx, d.Get("image").(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } opts := hcloud.ServerCreateOpts{ @@ -198,7 +198,7 @@ func resourceServerCreate(ctx context.Context, d *schema.ResourceData, m interfa opts.SSHKeys, err = getSSHkeys(ctx, c, d) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if datacenter, ok := d.GetOk("datacenter"); ok { @@ -224,16 +224,16 @@ func resourceServerCreate(ctx context.Context, d *schema.ResourceData, m interfa res, _, err := c.Server.Create(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(strconv.Itoa(res.Server.ID)) if err := hcclient.WaitForAction(ctx, &c.Action, res.Action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } for _, nextAction := range res.NextActions { if err := hcclient.WaitForAction(ctx, &c.Action, nextAction); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -241,25 +241,25 @@ func resourceServerCreate(ctx context.Context, d *schema.ResourceData, m interfa for _, item := range nwSet.(*schema.Set).List() { nwData := item.(map[string]interface{}) if err := inlineAttachServerToNetwork(ctx, c, res.Server, nwData); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } backups := d.Get("backups").(bool) if err := setBackups(ctx, c, res.Server, backups); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if iso, ok := d.GetOk("iso"); ok { if err := setISO(ctx, c, res.Server, iso.(string)); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } if rescue, ok := d.GetOk("rescue"); ok { if err := setRescue(ctx, c, res.Server, rescue.(string), opts.SSHKeys); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -274,7 +274,7 @@ func resourceServerRead(ctx context.Context, d *schema.ResourceData, m interface if resourceServerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil { d.SetId("") @@ -295,7 +295,7 @@ func resourceServerUpdate(ctx context.Context, d *schema.ResourceData, m interfa server, _, err := c.Server.Get(ctx, d.Id()) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil { d.SetId("") @@ -312,7 +312,7 @@ func resourceServerUpdate(ctx context.Context, d *schema.ResourceData, m interfa if resourceServerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } if d.HasChange("labels") { @@ -328,7 +328,7 @@ func resourceServerUpdate(ctx context.Context, d *schema.ResourceData, m interfa if resourceServerIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } if d.HasChange("server_type") { @@ -338,10 +338,10 @@ func resourceServerUpdate(ctx context.Context, d *schema.ResourceData, m interfa if server.Status == hcloud.ServerStatusRunning { action, _, err := c.Server.Poweroff(ctx, server) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -350,24 +350,24 @@ func resourceServerUpdate(ctx context.Context, d *schema.ResourceData, m interfa UpgradeDisk: !keepDisk, }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } if d.HasChange("backups") { backups := d.Get("backups").(bool) if err := setBackups(ctx, c, server, backups); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } if d.HasChange("iso") { iso := d.Get("iso").(string) if err := setISO(ctx, c, server, iso); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -375,17 +375,17 @@ func resourceServerUpdate(ctx context.Context, d *schema.ResourceData, m interfa rescue := d.Get("rescue").(string) sshKeys, err := getSSHkeys(ctx, c, d) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := setRescue(ctx, c, server, rescue, sshKeys); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } if d.HasChange("network") { data := d.Get("network").(*schema.Set) if err := updateServerInlineNetworkAttachments(ctx, c, data, server); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -413,11 +413,11 @@ func resourceServerUpdate(ctx context.Context, d *schema.ResourceData, m interfa }, ) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } err = hcclient.WaitForActions(ctx, &c.Action, a) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } @@ -444,11 +444,11 @@ func resourceServerUpdate(ctx context.Context, d *schema.ResourceData, m interfa }, ) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } err = hcclient.WaitForActions(ctx, &c.Action, a) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } @@ -468,7 +468,7 @@ func resourceServerDelete(ctx context.Context, d *schema.ResourceData, m interfa return nil } if _, err := client.Server.Delete(ctx, &hcloud.Server{ID: serverID}); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/server/resource_server_network.go b/internal/server/resource_server_network.go index 729afe10f..3ccb9b5a6 100644 --- a/internal/server/resource_server_network.go +++ b/internal/server/resource_server_network.go @@ -82,7 +82,7 @@ func resourceServerNetworkCreate(ctx context.Context, d *schema.ResourceData, m if snIDSet { nwID, _, err := network.ParseSubnetID(subNetID.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } networkID = nwID } @@ -97,7 +97,7 @@ func resourceServerNetworkCreate(ctx context.Context, d *schema.ResourceData, m err := attachServerToNetwork(ctx, client, server, n, ip, aliasIPs) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(generateServerNetworkID(server, n)) @@ -113,7 +113,7 @@ func resourceServerNetworkUpdate(ctx context.Context, d *schema.ResourceData, m return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil { log.Printf("[WARN] Server (%s) not found, removing from state", d.Id()) @@ -128,7 +128,7 @@ func resourceServerNetworkUpdate(ctx context.Context, d *schema.ResourceData, m if d.HasChange("alias_ips") { if err := updateServerAliasIPs(ctx, client, server, network, d.Get("alias_ips").(*schema.Set)); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } return resourceServerNetworkRead(ctx, d, m) @@ -144,7 +144,7 @@ func resourceServerNetworkRead(ctx context.Context, d *schema.ResourceData, m in return nil } if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil { log.Printf("[WARN] Server (%s) not found, removing from state", d.Id()) @@ -176,7 +176,7 @@ func resourceServerNetworkDelete(ctx context.Context, d *schema.ResourceData, m return nil } if err := detachServerFromNetwork(ctx, client, server, network); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil } diff --git a/internal/servertype/data_source.go b/internal/servertype/data_source.go index 417565808..9ff45f28b 100644 --- a/internal/servertype/data_source.go +++ b/internal/servertype/data_source.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) const ( @@ -72,7 +73,7 @@ func dataSourceHcloudServerTypeRead(ctx context.Context, data *schema.ResourceDa if id, ok := data.GetOk("id"); ok { d, _, err := client.ServerType.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if d == nil { return diag.Errorf("no server type found with id %d", id) @@ -83,7 +84,7 @@ func dataSourceHcloudServerTypeRead(ctx context.Context, data *schema.ResourceDa if name, ok := data.GetOk("name"); ok { d, _, err := client.ServerType.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if d == nil { return diag.Errorf("no server type found with name %v", name) @@ -136,7 +137,7 @@ func dataSourceHcloudServerTypesRead(ctx context.Context, d *schema.ResourceData client := m.(*hcloud.Client) sts, err := client.ServerType.All(ctx) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } names := make([]string, len(sts)) diff --git a/internal/snapshot/resource.go b/internal/snapshot/resource.go index 3b0e2a5bc..670b7f54f 100644 --- a/internal/snapshot/resource.go +++ b/internal/snapshot/resource.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // ResourceType is the type name of the Hetzner Cloud Snapshot resource. @@ -60,14 +61,14 @@ func resourceSnapshotCreate(ctx context.Context, d *schema.ResourceData, m inter res, _, err := client.Server.CreateImage(ctx, &hcloud.Server{ID: serverID}, &opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(strconv.Itoa(res.Image.ID)) if res.Action != nil { _, errCh := client.Action.WatchProgress(ctx, res.Action) if err := <-errCh; err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -86,7 +87,7 @@ func resourceSnapshotRead(ctx context.Context, d *schema.ResourceData, m interfa snapshot, _, err := client.Image.GetByID(ctx, id) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if snapshot == nil { log.Printf("[WARN] Snapshot (%s) not found, removing from state", d.Id()) @@ -125,7 +126,7 @@ func resourceSnapshotUpdate(ctx context.Context, d *schema.ResourceData, m inter if resourceSnapshotIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -142,7 +143,7 @@ func resourceSnapshotUpdate(ctx context.Context, d *schema.ResourceData, m inter if resourceSnapshotIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } d.Partial(false) @@ -164,7 +165,7 @@ func resourceSnapshotDelete(ctx context.Context, d *schema.ResourceData, m inter // server has already been deleted return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/sshkey/data_source.go b/internal/sshkey/data_source.go index 8d8b5be7e..10052fc34 100644 --- a/internal/sshkey/data_source.go +++ b/internal/sshkey/data_source.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) const ( @@ -68,7 +69,7 @@ func dataSourceHcloudSSHKeyRead(ctx context.Context, d *schema.ResourceData, m i if id, ok := d.GetOk("id"); ok { s, _, err := client.SSHKey.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if s == nil { return diag.Errorf("no sshkey found with id %d", id) @@ -79,7 +80,7 @@ func dataSourceHcloudSSHKeyRead(ctx context.Context, d *schema.ResourceData, m i if name, ok := d.GetOk("name"); ok { s, _, err := client.SSHKey.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if s == nil { return diag.Errorf("no sshkey found with name %v", name) @@ -90,7 +91,7 @@ func dataSourceHcloudSSHKeyRead(ctx context.Context, d *schema.ResourceData, m i if fingerprint, ok := d.GetOk("fingerprint"); ok { s, _, err := client.SSHKey.GetByFingerprint(ctx, fingerprint.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if s == nil { return diag.Errorf("no sshkey found with fingerprint %v", fingerprint) @@ -114,7 +115,7 @@ func dataSourceHcloudSSHKeyRead(ctx context.Context, d *schema.ResourceData, m i } allKeys, err := client.SSHKey.AllWithOpts(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if len(allKeys) == 0 { return diag.Errorf("no sshkey found for selector %q", selector) @@ -182,7 +183,7 @@ func dataSourceHcloudSSHKeysRead(ctx context.Context, d *schema.ResourceData, m } keys, err := client.SSHKey.AllWithOpts(context.Background(), opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } keyMaps := make([]map[string]interface{}, 0, len(keys)) id := "" diff --git a/internal/sshkey/resource.go b/internal/sshkey/resource.go index ced04b8ea..c6e9dbd92 100644 --- a/internal/sshkey/resource.go +++ b/internal/sshkey/resource.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" "golang.org/x/crypto/ssh" ) @@ -78,7 +79,7 @@ func resourceSSHKeyCreate(ctx context.Context, d *schema.ResourceData, m interfa sshKey, _, err := client.SSHKey.Create(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.SetId(strconv.Itoa(sshKey.ID)) @@ -97,7 +98,7 @@ func resourceSSHKeyRead(ctx context.Context, d *schema.ResourceData, m interface sshKey, _, err := client.SSHKey.GetByID(ctx, sshKeyID) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if sshKey == nil { log.Printf("[WARN] SSH key (%s) not found, removing from state", d.Id()) @@ -131,7 +132,7 @@ func resourceSSHKeyUpdate(ctx context.Context, d *schema.ResourceData, m interfa d.SetId("") return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } if d.HasChange("labels") { @@ -148,7 +149,7 @@ func resourceSSHKeyUpdate(ctx context.Context, d *schema.ResourceData, m interfa d.SetId("") return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -169,7 +170,7 @@ func resourceSSHKeyDelete(ctx context.Context, d *schema.ResourceData, m interfa // SSH key has already been deleted return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/volume/data_source.go b/internal/volume/data_source.go index 91c090c3d..c858c4173 100644 --- a/internal/volume/data_source.go +++ b/internal/volume/data_source.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hetznercloud/hcloud-go/hcloud" + "github.com/hetznercloud/terraform-provider-hcloud/internal/hcclient" ) // DataSourceType is the type name of the Hetzner Cloud Volume data source. @@ -75,7 +76,7 @@ func dataSourceHcloudVolumeRead(ctx context.Context, d *schema.ResourceData, m i if id, ok := d.GetOk("id"); ok { v, _, err := client.Volume.GetByID(ctx, id.(int)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if v == nil { return diag.Errorf("no volume found with id %d", id) @@ -86,7 +87,7 @@ func dataSourceHcloudVolumeRead(ctx context.Context, d *schema.ResourceData, m i if name, ok := d.GetOk("name"); ok { v, _, err := client.Volume.GetByName(ctx, name.(string)) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if v == nil { return diag.Errorf("no volume found with name %v", name) @@ -117,7 +118,7 @@ func dataSourceHcloudVolumeRead(ctx context.Context, d *schema.ResourceData, m i } allVolumes, err := client.Volume.AllWithOpts(ctx, opts) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if len(allVolumes) == 0 { return diag.Errorf("no volume found for selector %q", selector) diff --git a/internal/volume/resource.go b/internal/volume/resource.go index 13671559c..dae7b99b6 100644 --- a/internal/volume/resource.go +++ b/internal/volume/resource.go @@ -102,23 +102,23 @@ func resourceVolumeCreate(ctx context.Context, d *schema.ResourceData, m interfa if hcloud.IsError(err, hcloud.ErrorCodeLocked) { return resourceVolumeCreate(ctx, d, m) } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, result.Action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } for _, nextAction := range result.NextActions { if err := hcclient.WaitForAction(ctx, &c.Action, nextAction); err != nil { var aerr hcloud.ActionError if nextAction.Command != "attach_volume" { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if !errors.As(err, &aerr) { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if !strings.Contains(aerr.Message, string(hcloud.ErrorCodeLocked)) { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } // Sometimes, when multiple volumes are created (for the same server) @@ -142,7 +142,7 @@ func resourceVolumeCreate(ctx context.Context, d *schema.ResourceData, m interfa return hcclient.WaitForAction(ctx, &c.Action, a) }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } @@ -165,7 +165,7 @@ func resourceVolumeRead(ctx context.Context, d *schema.ResourceData, m interface volume, _, err := client.Volume.GetByID(ctx, id) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if volume == nil { log.Printf("[WARN] volume (%s) not found, removing from state", d.Id()) @@ -191,7 +191,7 @@ func resourceVolumeUpdate(ctx context.Context, d *schema.ResourceData, m interfa if resourceVolumeIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } d.Partial(true) @@ -205,7 +205,7 @@ func resourceVolumeUpdate(ctx context.Context, d *schema.ResourceData, m interfa if resourceVolumeIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -227,7 +227,7 @@ func resourceVolumeUpdate(ctx context.Context, d *schema.ResourceData, m interfa return nil }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } else { if volume.Server != nil { @@ -245,7 +245,7 @@ func resourceVolumeUpdate(ctx context.Context, d *schema.ResourceData, m interfa return nil }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } err := control.Retry(control.DefaultRetries, func() error { @@ -267,7 +267,7 @@ func resourceVolumeUpdate(ctx context.Context, d *schema.ResourceData, m interfa return nil }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } } @@ -279,10 +279,10 @@ func resourceVolumeUpdate(ctx context.Context, d *schema.ResourceData, m interfa if resourceVolumeIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } @@ -299,7 +299,7 @@ func resourceVolumeUpdate(ctx context.Context, d *schema.ResourceData, m interfa if resourceVolumeIsNotFound(err, d) { return nil } - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } d.Partial(false) @@ -318,7 +318,7 @@ func resourceVolumeDelete(ctx context.Context, d *schema.ResourceData, m interfa } volume, _, err := c.Volume.GetByID(ctx, volumeID) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if volume.Server != nil { @@ -337,7 +337,7 @@ func resourceVolumeDelete(ctx context.Context, d *schema.ResourceData, m interfa return nil }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } err = control.Retry(control.DefaultRetries, func() error { @@ -350,7 +350,7 @@ func resourceVolumeDelete(ctx context.Context, d *schema.ResourceData, m interfa return nil }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } return nil diff --git a/internal/volume/resource_attachment.go b/internal/volume/resource_attachment.go index c68260495..b3b5b2040 100644 --- a/internal/volume/resource_attachment.go +++ b/internal/volume/resource_attachment.go @@ -76,10 +76,10 @@ func resourceVolumeAttachmentCreate(ctx context.Context, d *schema.ResourceData, return control.AbortRetry(err) }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, a); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } // Since a volume can only be attached to one server // we can use the volume id as volume attachment id. @@ -101,7 +101,7 @@ func resourceVolumeAttachmentRead(ctx context.Context, d *schema.ResourceData, m // therefore the cast should always work volume, _, err := client.Volume.GetByID(ctx, volumeID) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if volume == nil { log.Printf("[WARN] Volume ID (%v) not found, removing volume attachment from state", d.Get("volume_id")) @@ -126,7 +126,7 @@ func resourceVolumeAttachmentRead(ctx context.Context, d *schema.ResourceData, m server, _, err := client.Server.GetByID(ctx, serverID) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if server == nil { log.Printf("[WARN] Server ID (%v) not found, removing volume attachment from state", d.Get("server_id")) @@ -173,11 +173,11 @@ func resourceVolumeAttachmentDelete(ctx context.Context, d *schema.ResourceData, return control.AbortRetry(err) }) if err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } if err := hcclient.WaitForAction(ctx, &c.Action, a); err != nil { - return diag.FromErr(err) + return hcclient.ErrorToDiag(err) } } return nil