@@ -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" {
0 commit comments