Skip to content

Commit bdc9b8d

Browse files
committed
remove some invalid usage of the old FriendlyError function with equinix-sdk-go errors
1 parent c7f86b1 commit bdc9b8d

File tree

10 files changed

+28
-47
lines changed

10 files changed

+28
-47
lines changed

internal/resources/metal/device/helpers.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import (
1212

1313
"github.com/equinix/terraform-provider-equinix/internal/converters"
1414

15-
equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
16-
1715
"github.com/equinix/equinix-sdk-go/services/metalv1"
1816
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
1917
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -120,7 +118,6 @@ func hwReservationStateRefreshFunc(ctx context.Context, client *metalv1.APIClien
120118
state := deprovisioning
121119
switch {
122120
case err != nil:
123-
err = equinix_errors.FriendlyError(err)
124121
state = errstate
125122
case r != nil && r.GetProvisionable():
126123
state = provisionable

internal/resources/metal/device/helpers_test.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ func Test_WaitUntilReservationProvisionable(t *testing.T) {
3232
reservationId: "reservationId",
3333
instanceId: "instanceId",
3434
handler: func(w http.ResponseWriter, r *http.Request) {
35-
w.Header().Add("Content-Type", "application/json")
36-
w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
3735
w.WriteHeader(http.StatusInternalServerError)
3836
},
3937
},
@@ -75,7 +73,6 @@ func Test_WaitUntilReservationProvisionable(t *testing.T) {
7573
}
7674

7775
w.Header().Add("Content-Type", "application/json")
78-
w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
7976
w.WriteHeader(http.StatusOK)
8077
_, err = w.Write(body)
8178
if err != nil {
@@ -122,7 +119,6 @@ func Test_WaitUntilReservationProvisionable(t *testing.T) {
122119
}
123120

124121
w.Header().Add("Content-Type", "application/json")
125-
w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
126122
w.WriteHeader(http.StatusOK)
127123
_, err = w.Write(body)
128124
if err != nil {
@@ -151,7 +147,6 @@ func Test_WaitUntilReservationProvisionable(t *testing.T) {
151147
}
152148

153149
w.Header().Add("Content-Type", "application/json")
154-
w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
155150
w.WriteHeader(http.StatusOK)
156151
_, err = w.Write(body)
157152
if err != nil {

internal/resources/metal/device/resource.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -552,13 +552,12 @@ func resourceMetalDeviceCreate(ctx context.Context, d *schema.ResourceData, meta
552552

553553
start := time.Now()
554554
projectID := d.Get("project_id").(string)
555-
newDevice, _, err := client.DevicesApi.CreateDevice(ctx, projectID).CreateDeviceRequest(createRequest).Execute()
555+
newDevice, resp, err := client.DevicesApi.CreateDevice(ctx, projectID).CreateDeviceRequest(createRequest).Execute()
556556
if err != nil {
557-
retErr := equinix_errors.FriendlyError(err)
558-
if equinix_errors.IsNotFound(retErr) {
559-
retErr = fmt.Errorf("%s, make sure project \"%s\" exists", retErr, projectID)
557+
if resp.StatusCode == http.StatusNotFound {
558+
err = fmt.Errorf("%s, make sure project \"%s\" exists", err, projectID)
560559
}
561-
return diag.FromErr(retErr)
560+
return diag.FromErr(err)
562561
}
563562

564563
d.SetId(newDevice.GetId())
@@ -736,7 +735,7 @@ func resourceMetalDeviceUpdate(ctx context.Context, d *schema.ResourceData, meta
736735
start := time.Now()
737736
if !reflect.DeepEqual(ur, metalv1.DeviceUpdateInput{}) {
738737
if _, _, err := client.DevicesApi.UpdateDevice(ctx, d.Id()).DeviceUpdateInput(ur).Execute(); err != nil {
739-
return diag.FromErr(equinix_errors.FriendlyError(err))
738+
return diag.FromErr(err)
740739
}
741740
}
742741

@@ -773,7 +772,7 @@ func doReinstall(ctx context.Context, client *metalv1.APIClient, d *schema.Resou
773772
}
774773

775774
if _, err := client.DevicesApi.PerformAction(ctx, d.Id()).DeviceActionInput(reinstallOptions).Execute(); err != nil {
776-
return equinix_errors.FriendlyError(err)
775+
return err
777776
}
778777

779778
updateTimeout := d.Timeout(schema.TimeoutUpdate) - 30*time.Second - time.Since(start)
@@ -798,7 +797,7 @@ func resourceMetalDeviceDelete(ctx context.Context, d *schema.ResourceData, meta
798797

799798
resp, err := client.DevicesApi.DeleteDevice(ctx, d.Id()).ForceDelete(fdv).Execute()
800799
if equinix_errors.IgnoreHttpResponseErrors(http.StatusForbidden, http.StatusNotFound)(resp, err) != nil {
801-
return diag.FromErr(equinix_errors.FriendlyError(err))
800+
return diag.FromErr(err)
802801
}
803802

804803
resId, resIdOk := d.GetOk("deployed_hardware_reservation_id")
@@ -843,13 +842,15 @@ func WaitForActiveDevice(ctx context.Context, d *schema.ResourceData, meta inter
843842
state, err := waitForDeviceAttribute(ctx, d, stateConf)
844843
if err != nil {
845844
d.SetId("")
846-
fErr := equinix_errors.FriendlyError(err)
847-
if equinix_errors.IsForbidden(fErr) {
845+
// TODO: this can never be true because we don't have the API response
846+
// but I'm not clear if we actually need this check? Certainly the error
847+
// message seems to promise something we can't and shouldn't promise
848+
if equinix_errors.IsForbidden(err) {
848849
// If the device doesn't get to the active state, we can't recover it from here.
849850

850851
return errors.New("provisioning time limit exceeded; the Equinix Metal team will investigate")
851852
}
852-
return fErr
853+
return err
853854
}
854855

855856
if state != "active" {

internal/resources/metal/device/resource_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ func TestMetalDevice_readErrorHandling(t *testing.T) {
4848
newResource: false,
4949
handler: func(w http.ResponseWriter, r *http.Request) {
5050
w.Header().Add("Content-Type", "application/json")
51-
w.Header().Add("X-Request-Id", "needed for equinix_errors.FriendlyError")
5251
w.WriteHeader(http.StatusForbidden)
5352
},
5453
},

internal/resources/metal/gateway/resource.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ func getGatewayAndParse(ctx context.Context, client *metalv1.APIClient, state *R
202202
// API call to get the Metal Gateway
203203
gw, _, err := client.MetalGatewaysApi.FindMetalGatewayById(ctx, id).Include(includes).Execute()
204204
if err != nil {
205-
return diags, equinix_errors.FriendlyError(err)
205+
return diags, err
206206
}
207207

208208
// Parse the API response into the Terraform state

internal/resources/metal/port/resource.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"slices"
1111

1212
"github.com/equinix/equinix-sdk-go/services/metalv1"
13-
equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
1413
equinix_schema "github.com/equinix/terraform-provider-equinix/internal/schema"
1514

1615
"github.com/equinix/terraform-provider-equinix/internal/config"
@@ -132,7 +131,7 @@ func resourceMetalPortUpdate(ctx context.Context, d *schema.ResourceData, meta i
132131
start := time.Now()
133132
cpr, _, err := getClientPortResource(ctx, d, meta)
134133
if err != nil {
135-
return diag.FromErr(equinix_errors.FriendlyError(err))
134+
return diag.FromErr(err)
136135
}
137136

138137
for _, f := range [](func(context.Context, *ClientPortResource) error){
@@ -146,7 +145,7 @@ func resourceMetalPortUpdate(ctx context.Context, d *schema.ResourceData, meta i
146145
updateNativeVlan,
147146
} {
148147
if err := f(ctx, cpr); err != nil {
149-
return diag.FromErr(equinix_errors.FriendlyError(err))
148+
return diag.FromErr(err)
150149
}
151150
}
152151

internal/resources/metal/project_ssh_key/datasource.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package project_ssh_key
22

33
import (
44
"github.com/equinix/equinix-sdk-go/services/metalv1"
5-
equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
65
"github.com/equinix/terraform-provider-equinix/internal/framework"
76
"github.com/hashicorp/terraform-plugin-framework/datasource"
87

@@ -51,7 +50,6 @@ func (r *DataSource) Read(
5150
// Use API client to list SSH keys
5251
keysList, _, err := client.SSHKeysApi.FindProjectSSHKeys(ctx, projectID).Query(search).Execute()
5352
if err != nil {
54-
err = equinix_errors.FriendlyError(err)
5553
resp.Diagnostics.AddError(
5654
"Error listing project ssh keys",
5755
err.Error(),

internal/resources/metal/project_ssh_key/resource.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func (r *Resource) Create(
5454
if err != nil {
5555
resp.Diagnostics.AddError(
5656
"Failed to create Project SSH Key",
57-
equinix_errors.FriendlyError(err).Error(),
57+
err.Error(),
5858
)
5959
return
6060
}
@@ -87,13 +87,11 @@ func (r *Resource) Read(
8787
id := state.ID.ValueString()
8888

8989
// Use API client to get the current state of the resource
90-
key, _, err := client.SSHKeysApi.FindSSHKeyById(ctx, id).Include(nil).Execute()
90+
key, apiResp, err := client.SSHKeysApi.FindSSHKeyById(ctx, id).Include(nil).Execute()
9191
if err != nil {
92-
err = equinix_errors.FriendlyError(err)
93-
9492
// If the key is somehow already destroyed, mark as
9593
// succesfully gone
96-
if equinix_errors.IsNotFound(err) {
94+
if apiResp.StatusCode == http.StatusNotFound {
9795
resp.Diagnostics.AddWarning(
9896
"Equinix Metal Project SSHKey not found during refresh",
9997
fmt.Sprintf("[WARN] SSHKey (%s) not found, removing from state", id),
@@ -146,7 +144,6 @@ func (r *Resource) Update(
146144
// Update the resource
147145
key, _, err := client.SSHKeysApi.UpdateSSHKey(ctx, id).SSHKeyInput(*updateRequest).Execute()
148146
if err != nil {
149-
err = equinix_errors.FriendlyError(err)
150147
resp.Diagnostics.AddError(
151148
"Error updating resource",
152149
"Could not update resource with ID "+id+": "+err.Error(),
@@ -184,7 +181,6 @@ func (r *Resource) Delete(
184181
// Use API client to delete the resource
185182
deleteResp, err := client.SSHKeysApi.DeleteSSHKey(ctx, id).Execute()
186183
if equinix_errors.IgnoreHttpResponseErrors(http.StatusForbidden, http.StatusNotFound)(deleteResp, err) != nil {
187-
err = equinix_errors.FriendlyError(err)
188184
resp.Diagnostics.AddError(
189185
fmt.Sprintf("Failed to delete Project SSHKey %s", id),
190186
err.Error(),

internal/resources/metal/ssh_key/resource.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func (r *Resource) Create(
5252
if err != nil {
5353
resp.Diagnostics.AddError(
5454
"Failed to create SSH Key",
55-
equinix_errors.FriendlyError(err).Error(),
55+
err.Error(),
5656
)
5757
return
5858
}
@@ -85,13 +85,11 @@ func (r *Resource) Read(
8585
id := state.ID.ValueString()
8686

8787
// Use API client to get the current state of the resource
88-
key, _, err := client.SSHKeysApi.FindSSHKeyById(ctx, id).Include(nil).Execute()
88+
key, apiResp, err := client.SSHKeysApi.FindSSHKeyById(ctx, id).Include(nil).Execute()
8989
if err != nil {
90-
err = equinix_errors.FriendlyError(err)
91-
9290
// If the key is somehow already destroyed, mark as
9391
// succesfully gone
94-
if equinix_errors.IsNotFound(err) {
92+
if apiResp.StatusCode != http.StatusNotFound {
9593
resp.Diagnostics.AddWarning(
9694
"Equinix Metal SSHKey not found during refresh",
9795
fmt.Sprintf("[WARN] SSHKey (%s) not found, removing from state", id),
@@ -144,7 +142,6 @@ func (r *Resource) Update(
144142
// Update the resource
145143
key, _, err := client.SSHKeysApi.UpdateSSHKey(ctx, id).SSHKeyInput(*updateRequest).Execute()
146144
if err != nil {
147-
err = equinix_errors.FriendlyError(err)
148145
resp.Diagnostics.AddError(
149146
"Error updating resource",
150147
"Could not update resource with ID "+id+": "+err.Error(),
@@ -182,7 +179,6 @@ func (r *Resource) Delete(
182179
// Use API client to delete the resource
183180
deleteResp, err := client.SSHKeysApi.DeleteSSHKey(ctx, id).Execute()
184181
if equinix_errors.IgnoreHttpResponseErrors(http.StatusForbidden, http.StatusNotFound)(deleteResp, err) != nil {
185-
err = equinix_errors.FriendlyError(err)
186182
resp.Diagnostics.AddError(
187183
fmt.Sprintf("Failed to delete SSHKey %s", id),
188184
err.Error(),

internal/resources/metal/vrf/resource.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package vrf
33
import (
44
"context"
55
"log"
6+
"net/http"
67

78
"github.com/equinix/terraform-provider-equinix/internal/converters"
89
equinix_errors "github.com/equinix/terraform-provider-equinix/internal/errors"
@@ -82,7 +83,7 @@ func resourceMetalVRFCreate(ctx context.Context, d *schema.ResourceData, meta in
8283
VrfCreateInput(createRequest).
8384
Execute()
8485
if err != nil {
85-
return diag.FromErr(equinix_errors.FriendlyError(err))
86+
return diag.FromErr(err)
8687
}
8788

8889
d.SetId(vrf.GetId())
@@ -113,7 +114,7 @@ func resourceMetalVRFUpdate(ctx context.Context, d *schema.ResourceData, meta in
113114
VrfUpdateInput(updateRequest).
114115
Execute()
115116
if err != nil {
116-
return diag.FromErr(equinix_errors.FriendlyError(err))
117+
return diag.FromErr(err)
117118
}
118119

119120
return resourceMetalVRFRead(ctx, d, meta)
@@ -148,13 +149,12 @@ func resourceMetalVRFRead(ctx context.Context, d *schema.ResourceData, meta inte
148149
}
149150

150151
func resourceMetalVRFDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
151-
meta.(*config.Config).AddModuleToMetalUserAgent(d)
152-
client := meta.(*config.Config).Metal
152+
client := meta.(*config.Config).NewMetalClientForSDK(d)
153153

154-
resp, err := client.VRFs.Delete(d.Id())
155-
if equinix_errors.IgnoreResponseErrors(equinix_errors.HttpForbidden, equinix_errors.HttpNotFound)(resp, err) == nil {
154+
resp, err := client.VRFsApi.DeleteVrf(ctx, d.Id()).Execute()
155+
if equinix_errors.IgnoreHttpResponseErrors(http.StatusForbidden, http.StatusNotFound)(resp, err) == nil {
156156
d.SetId("")
157157
}
158158

159-
return diag.FromErr(equinix_errors.FriendlyError(err))
159+
return diag.FromErr(err)
160160
}

0 commit comments

Comments
 (0)