88 "io/ioutil"
99 "log"
1010 "strconv"
11- "time"
1211
1312 "github.com/google/go-cmp/cmp"
1413 "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
@@ -20,10 +19,6 @@ import (
2019 scwvalidation "github.com/scaleway/scaleway-sdk-go/validation"
2120)
2221
23- const (
24- retryInstanceServerInterval = 30 * time .Second
25- )
26-
2722func resourceScalewayInstanceServer () * schema.Resource {
2823 return & schema.Resource {
2924 CreateContext : resourceScalewayInstanceServerCreate ,
@@ -389,18 +384,13 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
389384 return diag .FromErr (err )
390385 }
391386
392- _ , err = instanceAPI .WaitForServer (& instance.WaitForServerRequest {
393- Zone : zone ,
394- ServerID : res .Server .ID ,
395- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutCreate )),
396- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
397- })
387+ d .SetId (newZonedID (zone , res .Server .ID ).String ())
388+
389+ _ , err = waitForInstanceServer (ctx , instanceAPI , zone , res .Server .ID , d .Timeout (schema .TimeoutCreate ))
398390 if err != nil {
399391 return diag .FromErr (err )
400392 }
401393
402- d .SetId (newZonedID (zone , res .Server .ID ).String ())
403-
404394 ////
405395 // Set user data
406396 ////
@@ -422,12 +412,7 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
422412 }
423413
424414 if len (userDataRequests .UserData ) > 0 {
425- _ , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
426- Zone : zone ,
427- ServerID : res .Server .ID ,
428- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutCreate )),
429- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
430- })
415+ _ , err := waitForInstanceServer (ctx , instanceAPI , zone , res .Server .ID , d .Timeout (schema .TimeoutCreate ))
431416 if err != nil {
432417 return diag .FromErr (err )
433418 }
@@ -461,12 +446,7 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
461446 }
462447 // compute attachment
463448 for _ , q := range pnRequest {
464- _ , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
465- Zone : zone ,
466- ServerID : res .Server .ID ,
467- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutCreate )),
468- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
469- })
449+ _ , err := waitForInstanceServer (ctx , instanceAPI , zone , res .Server .ID , d .Timeout (schema .TimeoutCreate ))
470450 if err != nil {
471451 return diag .FromErr (err )
472452 }
@@ -483,17 +463,12 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
483463
484464//gocyclo:ignore
485465func resourceScalewayInstanceServerRead (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
486- instanceAPI , zone , ID , err := instanceAPIWithZoneAndID (meta , d .Id ())
466+ instanceAPI , zone , id , err := instanceAPIWithZoneAndID (meta , d .Id ())
487467 if err != nil {
488468 return diag .FromErr (err )
489469 }
490470
491- server , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
492- Zone : zone ,
493- ServerID : ID ,
494- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutRead )),
495- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
496- })
471+ server , err := waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutRead ))
497472 if err != nil {
498473 if errorCheck (err , "is not found" ) {
499474 log .Printf ("[WARN] instance %s not found droping from state" , d .Id ())
@@ -605,7 +580,7 @@ func resourceScalewayInstanceServerRead(ctx context.Context, d *schema.ResourceD
605580 ////
606581 allUserData , _ := instanceAPI .GetAllServerUserData (& instance.GetAllServerUserDataRequest {
607582 Zone : zone ,
608- ServerID : ID ,
583+ ServerID : id ,
609584 }, scw .WithContext (ctx ))
610585
611586 userData := make (map [string ]interface {})
@@ -627,7 +602,7 @@ func resourceScalewayInstanceServerRead(ctx context.Context, d *schema.ResourceD
627602 ////
628603 // Read server private networks
629604 ////
630- ph , err := newPrivateNICHandler (ctx , instanceAPI , ID , zone )
605+ ph , err := newPrivateNICHandler (ctx , instanceAPI , id , zone )
631606 if err != nil {
632607 return diag .FromErr (err )
633608 }
@@ -645,7 +620,7 @@ func resourceScalewayInstanceServerRead(ctx context.Context, d *schema.ResourceD
645620
646621//gocyclo:ignore
647622func resourceScalewayInstanceServerUpdate (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
648- instanceAPI , zone , ID , err := instanceAPIWithZoneAndID (meta , d .Id ())
623+ instanceAPI , zone , id , err := instanceAPIWithZoneAndID (meta , d .Id ())
649624 if err != nil {
650625 return diag .FromErr (err )
651626 }
@@ -655,12 +630,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
655630
656631 var warnings diag.Diagnostics
657632
658- server , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
659- Zone : zone ,
660- ServerID : ID ,
661- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutUpdate )),
662- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
663- })
633+ server , err := waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
664634 if err != nil {
665635 return diag .FromErr (err )
666636 }
@@ -747,12 +717,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
747717 // Update reserved IP
748718 ////
749719 if d .HasChange ("ip_id" ) {
750- server , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
751- Zone : zone ,
752- ServerID : ID ,
753- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutUpdate )),
754- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
755- })
720+ server , err := waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
756721
757722 if err != nil {
758723 return diag .FromErr (err )
@@ -770,43 +735,28 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
770735 return diag .FromErr (err )
771736 }
772737 //we wait to ensure to not detach the new ip.
773- _ , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
774- Zone : zone ,
775- ServerID : ID ,
776- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutUpdate )),
777- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
778- })
738+ _ , err := waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
779739 if err != nil {
780740 return diag .FromErr (err )
781741 }
782742 }
783743 // If a new IP is provided, we attach it to the server
784744 if ipID != "" {
785- _ , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
786- Zone : zone ,
787- ServerID : ID ,
788- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutUpdate )),
789- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
790- })
745+ _ , err := waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
791746 if err != nil {
792747 return diag .FromErr (err )
793748 }
794749
795750 _ , err = instanceAPI .UpdateIP (& instance.UpdateIPRequest {
796751 Zone : zone ,
797752 IP : ipID ,
798- Server : & instance.NullableStringValue {Value : ID },
753+ Server : & instance.NullableStringValue {Value : id },
799754 }, scw .WithContext (ctx ))
800755 if err != nil {
801756 return diag .FromErr (err )
802757 }
803758
804- _ , err = instanceAPI .WaitForServer (& instance.WaitForServerRequest {
805- Zone : zone ,
806- ServerID : ID ,
807- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutUpdate )),
808- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
809- })
759+ _ , err = waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
810760 if err != nil {
811761 return diag .FromErr (err )
812762 }
@@ -840,7 +790,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
840790 if d .HasChanges ("user_data" ) {
841791 userDataRequests := & instance.SetAllServerUserDataRequest {
842792 Zone : zone ,
843- ServerID : ID ,
793+ ServerID : id ,
844794 UserData : make (map [string ]io.Reader ),
845795 }
846796
@@ -857,12 +807,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
857807 }
858808 }
859809
860- _ , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
861- Zone : zone ,
862- ServerID : ID ,
863- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutUpdate )),
864- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
865- })
810+ _ , err := waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
866811 if err != nil {
867812 return diag .FromErr (err )
868813 }
@@ -877,7 +822,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
877822 // Update server private network
878823 ////
879824 if d .HasChanges ("private_network" ) {
880- ph , err := newPrivateNICHandler (ctx , instanceAPI , ID , zone )
825+ ph , err := newPrivateNICHandler (ctx , instanceAPI , id , zone )
881826 if err != nil {
882827 diag .FromErr (err )
883828 }
@@ -888,12 +833,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
888833 if d .HasChange (pnKey ) {
889834 o , n := d .GetChange (pnKey )
890835 if ! cmp .Equal (n , o ) {
891- _ , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
892- Zone : zone ,
893- ServerID : ID ,
894- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutUpdate )),
895- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
896- })
836+ _ , err := waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
897837 if err != nil {
898838 return diag .FromErr (err )
899839 }
@@ -915,12 +855,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
915855 for _ , raw := range o .([]interface {}) {
916856 pn , pnExist := raw .(map [string ]interface {})
917857 if pnExist {
918- _ , err := instanceAPI .WaitForServer (& instance.WaitForServerRequest {
919- Zone : zone ,
920- ServerID : ID ,
921- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutUpdate )),
922- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
923- })
858+ _ , err := waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
924859 if err != nil {
925860 return diag .FromErr (err )
926861 }
@@ -943,7 +878,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
943878 return diag .FromErr (err )
944879 }
945880 // reach expected state
946- err = reachState (ctx , instanceAPI , zone , ID , targetState )
881+ err = reachState (ctx , instanceAPI , zone , id , targetState )
947882 if err != nil {
948883 return diag .FromErr (err )
949884 }
@@ -954,12 +889,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
954889 return diag .FromErr (err )
955890 }
956891
957- _ , err = instanceAPI .WaitForServer (& instance.WaitForServerRequest {
958- Zone : zone ,
959- ServerID : ID ,
960- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutUpdate )),
961- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
962- })
892+ _ , err = waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutUpdate ))
963893 if err != nil {
964894 return diag .FromErr (err )
965895 }
@@ -968,7 +898,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
968898}
969899
970900func resourceScalewayInstanceServerDelete (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
971- instanceAPI , zone , ID , err := instanceAPIWithZoneAndID (meta , d .Id ())
901+ instanceAPI , zone , id , err := instanceAPIWithZoneAndID (meta , d .Id ())
972902 if err != nil {
973903 return diag .FromErr (err )
974904 }
@@ -988,34 +918,29 @@ func resourceScalewayInstanceServerDelete(ctx context.Context, d *schema.Resourc
988918 _ , err := instanceAPI .UpdateServer (& instance.UpdateServerRequest {
989919 Zone : zone ,
990920 PlacementGroup : & instance.NullableStringValue {Null : true },
991- ServerID : ID ,
921+ ServerID : id ,
992922 })
993923 if err != nil {
994924 log .Print ("[WARN] Failed remove server from instance group" )
995925 }
996926 }
997927 // reach stopped state
998- err = reachState (ctx , instanceAPI , zone , ID , instance .ServerStateStopped )
928+ err = reachState (ctx , instanceAPI , zone , id , instance .ServerStateStopped )
999929 if is404Error (err ) {
1000930 return nil
1001931 }
1002932 if err != nil {
1003933 return diag .FromErr (err )
1004934 }
1005935
1006- _ , err = instanceAPI .WaitForServer (& instance.WaitForServerRequest {
1007- Zone : zone ,
1008- ServerID : ID ,
1009- Timeout : scw .TimeDurationPtr (d .Timeout (schema .TimeoutDelete )),
1010- RetryInterval : scw .TimeDurationPtr (retryInstanceServerInterval ),
1011- })
936+ _ , err = waitForInstanceServer (ctx , instanceAPI , zone , id , d .Timeout (schema .TimeoutDelete ))
1012937 if err != nil {
1013938 return diag .FromErr (err )
1014939 }
1015940
1016941 err = instanceAPI .DeleteServer (& instance.DeleteServerRequest {
1017942 Zone : zone ,
1018- ServerID : ID ,
943+ ServerID : id ,
1019944 }, scw .WithContext (ctx ))
1020945
1021946 if err != nil && ! is404Error (err ) {
0 commit comments