@@ -15,6 +15,7 @@ import (
1515 "github.com/IBM-Cloud/terraform-provider-ibm/ibm/validate"
1616 "github.com/IBM/go-sdk-core/v5/core"
1717 "github.com/IBM/vpc-go-sdk/vpcv1"
18+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1819 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
1920 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
2021 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -51,12 +52,12 @@ func ResourceIBMISEndpointGateway() *schema.Resource {
5152 targetNameFmt := fmt .Sprintf ("%s.0.%s" , isVirtualEndpointGatewayTarget , isVirtualEndpointGatewayTargetName )
5253 targetCRNFmt := fmt .Sprintf ("%s.0.%s" , isVirtualEndpointGatewayTarget , isVirtualEndpointGatewayTargetCRN )
5354 return & schema.Resource {
54- Create : resourceIBMisVirtualEndpointGatewayCreate ,
55- Read : resourceIBMisVirtualEndpointGatewayRead ,
56- Update : resourceIBMisVirtualEndpointGatewayUpdate ,
57- Delete : resourceIBMisVirtualEndpointGatewayDelete ,
58- Exists : resourceIBMisVirtualEndpointGatewayExists ,
59- Importer : & schema.ResourceImporter {},
55+ CreateContext : resourceIBMisVirtualEndpointGatewayCreate ,
56+ ReadContext : resourceIBMisVirtualEndpointGatewayRead ,
57+ UpdateContext : resourceIBMisVirtualEndpointGatewayUpdate ,
58+ DeleteContext : resourceIBMisVirtualEndpointGatewayDelete ,
59+ Exists : resourceIBMisVirtualEndpointGatewayExists ,
60+ Importer : & schema.ResourceImporter {},
6061
6162 CustomizeDiff : customdiff .All (
6263 customdiff .Sequence (
@@ -308,10 +309,12 @@ func ResourceIBMISEndpointGatewayValidator() *validate.ResourceValidator {
308309 return & ibmEndpointGatewayResourceValidator
309310}
310311
311- func resourceIBMisVirtualEndpointGatewayCreate (d * schema.ResourceData , meta interface {}) error {
312+ func resourceIBMisVirtualEndpointGatewayCreate (context context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
312313 sess , err := vpcClient (meta )
313314 if err != nil {
314- return err
315+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_virtual_endpoint_gateway" , "create" , "initialize-client" )
316+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
317+ return tfErr .GetDiag ()
315318 }
316319
317320 name := d .Get (isVirtualEndpointGatewayName ).(string )
@@ -377,8 +380,9 @@ func resourceIBMisVirtualEndpointGatewayCreate(d *schema.ResourceData, meta inte
377380 }
378381 endpointGateway , response , err := sess .CreateEndpointGateway (opt )
379382 if err != nil {
380- log .Printf ("Create Endpoint Gateway failed: %v" , response )
381- return fmt .Errorf ("[ERROR] Create Endpoint Gateway failed %s\n %s" , err , response )
383+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("[ERROR] Create Endpoint Gateway failed %s\n %s" , err , response ), "ibm_is_virtual_endpoint_gateway" , "create" )
384+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
385+ return tfErr .GetDiag ()
382386 }
383387
384388 d .SetId (* endpointGateway .ID )
@@ -392,7 +396,9 @@ func resourceIBMisVirtualEndpointGatewayCreate(d *schema.ResourceData, meta inte
392396 endpointGateway , response , err := sess .GetEndpointGateway (opt )
393397 if err != nil {
394398 log .Printf ("Get Endpoint Gateway failed: %v" , response )
395- return fmt .Errorf ("[ERROR] Get Endpoint Gateway failed %s\n %s" , err , response )
399+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("GetEndpointGateway failed: %s" , err .Error ()), "ibm_is_virtual_endpoint_gateway" , "read" )
400+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
401+ return tfErr .GetDiag ()
396402 }
397403 if len (endpointGateway .LifecycleReasons ) > 0 {
398404 if endpointGateway .LifecycleReasons [0 ].Code != nil && strings .Compare (* endpointGateway .LifecycleReasons [0 ].Code , "access_pending" ) == 0 {
@@ -401,10 +407,10 @@ func resourceIBMisVirtualEndpointGatewayCreate(d *schema.ResourceData, meta inte
401407 }
402408 }
403409 if ! isAccessPending {
404- return err
410+ return flex . DiscriminatedTerraformErrorf ( err , err . Error (), "ibm_is_virtual_endpoint_gateway" , "create" , "access-pending" ). GetDiag ()
405411 }
406412 } else {
407- return err
413+ return flex . DiscriminatedTerraformErrorf ( err , err . Error (), "ibm_is_virtual_endpoint_gateway" , "create" , "not-private-path-service-gateway" ). GetDiag ()
408414 }
409415 }
410416
@@ -427,13 +433,15 @@ func resourceIBMisVirtualEndpointGatewayCreate(d *schema.ResourceData, meta inte
427433 }
428434 }
429435
430- return resourceIBMisVirtualEndpointGatewayRead (d , meta )
436+ return resourceIBMisVirtualEndpointGatewayRead (context , d , meta )
431437}
432438
433- func resourceIBMisVirtualEndpointGatewayUpdate (d * schema.ResourceData , meta interface {}) error {
439+ func resourceIBMisVirtualEndpointGatewayUpdate (context context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
434440 sess , err := vpcClient (meta )
435441 if err != nil {
436- return err
442+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_virtual_endpoint_gateway" , "update" , "initialize-client" )
443+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
444+ return tfErr .GetDiag ()
437445 }
438446
439447 // create option
@@ -451,7 +459,7 @@ func resourceIBMisVirtualEndpointGatewayUpdate(d *schema.ResourceData, meta inte
451459 _ , response , err := sess .UpdateEndpointGateway (opt )
452460 if err != nil {
453461 log .Printf ("Update Endpoint Gateway failed: %v" , response )
454- return fmt . Errorf ( "Update Endpoint Gateway failed : %s \n %s" , err , response )
462+ return flex . TerraformErrorf ( err , err . Error (), "ibm_is_virtual_endpoint_gateway" , "update" ). GetDiag ( )
455463 }
456464 id := d .Id ()
457465 var remove , add []string
@@ -468,11 +476,13 @@ func resourceIBMisVirtualEndpointGatewayUpdate(d *schema.ResourceData, meta inte
468476 createSecurityGroupTargetBindingOptions .ID = & id
469477 _ , response , err := sess .CreateSecurityGroupTargetBinding (createSecurityGroupTargetBindingOptions )
470478 if err != nil {
471- return fmt .Errorf ("Error while creating Security Group Target Binding %s\n %s" , err , response )
479+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("Error while creating Security Group Target Binding %s\n %s" , err , response ), "ibm_is_virtual_endpoint_gateway" , "update" )
480+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
481+ return tfErr .GetDiag ()
472482 }
473483 _ , err = isWaitForVirtualEndpointGatewayAvailable (sess , d .Id (), d .Timeout (schema .TimeoutUpdate ))
474484 if err != nil {
475- return err
485+ return flex . TerraformErrorf ( err , fmt . Sprintf ( "isWaitForVirtualEndpointGatewayAvailable failed: %s" , err . Error ()), "ibm_is_virtual_endpoint_gateway" , "update" ). GetDiag ()
476486 }
477487 }
478488 }
@@ -487,16 +497,18 @@ func resourceIBMisVirtualEndpointGatewayUpdate(d *schema.ResourceData, meta inte
487497 if response != nil && response .StatusCode == 404 {
488498 continue
489499 }
490- return fmt .Errorf ("Error Getting Security Group Target for this endpoint gateway (%s): %s\n %s" , sgId , err , response )
500+ return flex .TerraformErrorf (err , fmt .Sprintf ("Error Getting Security Group Target for this endpoint gateway (%s): %s\n %s" , sgId , err , response ), "ibm_is_virtual_endpoint_gateway" , "update" ).GetDiag ()
501+
491502 }
492503 deleteSecurityGroupTargetBindingOptions := sess .NewDeleteSecurityGroupTargetBindingOptions (sgId , id )
493504 response , err = sess .DeleteSecurityGroupTargetBinding (deleteSecurityGroupTargetBindingOptions )
494505 if err != nil {
495- return fmt .Errorf ("Error Deleting Security Group Target for this endpoint gateway : %s\n %s" , err , response )
506+ return flex .TerraformErrorf (err , fmt .Sprintf ("Error Deleting Security Group Target for this endpoint gateway : %s\n %s" , err , response ), "ibm_is_virtual_endpoint_gateway" , "update" ).GetDiag ()
507+
496508 }
497509 _ , err = isWaitForVirtualEndpointGatewayAvailable (sess , d .Id (), d .Timeout (schema .TimeoutUpdate ))
498510 if err != nil {
499- return err
511+ return flex . TerraformErrorf ( err , fmt . Sprintf ( "isWaitForVirtualEndpointGatewayAvailable failed: %s" , err . Error ()), "ibm_is_virtual_endpoint_gateway" , "update" ). GetDiag ()
500512 }
501513 }
502514 }
@@ -506,14 +518,16 @@ func resourceIBMisVirtualEndpointGatewayUpdate(d *schema.ResourceData, meta inte
506518 opt := sess .NewGetEndpointGatewayOptions (d .Id ())
507519 endpointGateway , response , err := sess .GetEndpointGateway (opt )
508520 if err != nil {
509- return fmt .Errorf ("[ERROR] Error getting VPE: %s\n %s" , err , response )
521+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("[ERROR] Error getting VPE: %s\n %s" , err , response ), "ibm_is_virtual_endpoint_gateway" , "update" , "get-vpe" ).GetDiag ()
522+
510523 }
511524 if d .HasChange (isVirtualEndpointGatewayTags ) {
512525 oldList , newList := d .GetChange (isVirtualEndpointGatewayTags )
513526 err := flex .UpdateGlobalTagsUsingCRN (oldList , newList , meta , * endpointGateway .CRN , "" , isUserTagType )
514527 if err != nil {
515528 log .Printf (
516529 "Error on update of VPE (%s) tags: %s" , d .Id (), err )
530+
517531 }
518532 }
519533
@@ -526,13 +540,15 @@ func resourceIBMisVirtualEndpointGatewayUpdate(d *schema.ResourceData, meta inte
526540 }
527541 }
528542 }
529- return resourceIBMisVirtualEndpointGatewayRead (d , meta )
543+ return resourceIBMisVirtualEndpointGatewayRead (context , d , meta )
530544}
531545
532- func resourceIBMisVirtualEndpointGatewayRead (d * schema.ResourceData , meta interface {}) error {
546+ func resourceIBMisVirtualEndpointGatewayRead (context context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
533547 sess , err := vpcClient (meta )
534548 if err != nil {
535- return err
549+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_virtual_endpoint_gateway" , "read" , "initialize-client" )
550+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
551+ return tfErr .GetDiag ()
536552 }
537553 // read option
538554 opt := sess .NewGetEndpointGatewayOptions (d .Id ())
@@ -543,14 +559,14 @@ func resourceIBMisVirtualEndpointGatewayRead(d *schema.ResourceData, meta interf
543559 return nil
544560 }
545561 log .Printf ("Get Endpoint Gateway failed: %v" , response )
546- return fmt . Errorf ( "[ERROR] Get Endpoint Gateway failed %s \n %s" , err , response )
562+ return flex . TerraformErrorf ( err , err . Error (), "ibm_is_virtual_endpoint_gateway" , "read" ). GetDiag ( )
547563 }
548564 d .Set (isVirtualEndpointGatewayName , endpointGateway .Name )
549565 d .Set (isVirtualEndpointGatewayHealthState , endpointGateway .HealthState )
550566 d .Set (isVirtualEndpointGatewayCreatedAt , endpointGateway .CreatedAt .String ())
551567 d .Set (isVirtualEndpointGatewayLifecycleState , endpointGateway .LifecycleState )
552568 if err := d .Set (isVirtualEndpointGatewayLifecycleReasons , resourceEGWFlattenLifecycleReasons (endpointGateway .LifecycleReasons )); err != nil {
553- return fmt .Errorf ("[ERROR] Error setting lifecycle_reasons: %s" , err )
569+ return flex . DiscriminatedTerraformErrorf ( err , fmt .Sprintf ("[ERROR] Error setting lifecycle_reasons: %s" , err ), "ibm_is_virtual_endpoint_gateway" , "read" , "set-lifecycle-reasons" ). GetDiag ( )
554570 }
555571 d .Set (isVirtualEndpointGatewayAllowDnsResolutionBinding , endpointGateway .AllowDnsResolutionBinding )
556572 d .Set (isVirtualEndpointGatewayResourceType , endpointGateway .ResourceType )
@@ -644,21 +660,25 @@ func isVirtualEndpointGatewayRefreshFunc(sess *vpcv1.VpcV1, endPointGatewayId st
644660 }
645661}
646662
647- func resourceIBMisVirtualEndpointGatewayDelete (d * schema.ResourceData , meta interface {}) error {
663+ func resourceIBMisVirtualEndpointGatewayDelete (context context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
648664 sess , err := vpcClient (meta )
649665 if err != nil {
650- return err
666+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_virtual_endpoint_gateway" , "delete" , "initialize-client" )
667+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
668+ return tfErr .GetDiag ()
651669 }
652670
653671 opt := sess .NewDeleteEndpointGatewayOptions (d .Id ())
654672 response , err := sess .DeleteEndpointGateway (opt )
655673 if err != nil {
656674 log .Printf ("Delete Endpoint Gateway failed: %v" , response )
657- return fmt . Errorf ( "Delete Endpoint Gateway failed : %s \n %s" , err , response )
675+ return flex . DiscriminatedTerraformErrorf ( err , err . Error (), "ibm_is_virtual_endpoint_gateway" , "delete" , "sep-id-parts" ). GetDiag ( )
658676 }
659677 _ , err = isWaitForEGWDelete (sess , d , d .Id ())
660678 if err != nil {
661- return err
679+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("DeleteEndpointGateway failed: %s" , err .Error ()), "ibm_is_virtual_endpoint_gateway" , "delete" )
680+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
681+ return tfErr .GetDiag ()
662682 }
663683 return nil
664684}
0 commit comments