8
8
"io/ioutil"
9
9
"log"
10
10
"strconv"
11
- "time"
12
11
13
12
"github.com/google/go-cmp/cmp"
14
13
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
@@ -20,10 +19,6 @@ import (
20
19
scwvalidation "github.com/scaleway/scaleway-sdk-go/validation"
21
20
)
22
21
23
- const (
24
- retryInstanceServerInterval = 30 * time .Second
25
- )
26
-
27
22
func resourceScalewayInstanceServer () * schema.Resource {
28
23
return & schema.Resource {
29
24
CreateContext : resourceScalewayInstanceServerCreate ,
@@ -389,18 +384,13 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
389
384
return diag .FromErr (err )
390
385
}
391
386
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 ))
398
390
if err != nil {
399
391
return diag .FromErr (err )
400
392
}
401
393
402
- d .SetId (newZonedID (zone , res .Server .ID ).String ())
403
-
404
394
////
405
395
// Set user data
406
396
////
@@ -422,12 +412,7 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
422
412
}
423
413
424
414
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 ))
431
416
if err != nil {
432
417
return diag .FromErr (err )
433
418
}
@@ -461,12 +446,7 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
461
446
}
462
447
// compute attachment
463
448
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 ))
470
450
if err != nil {
471
451
return diag .FromErr (err )
472
452
}
@@ -483,17 +463,12 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
483
463
484
464
//gocyclo:ignore
485
465
func 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 ())
487
467
if err != nil {
488
468
return diag .FromErr (err )
489
469
}
490
470
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 ))
497
472
if err != nil {
498
473
if errorCheck (err , "is not found" ) {
499
474
log .Printf ("[WARN] instance %s not found droping from state" , d .Id ())
@@ -605,7 +580,7 @@ func resourceScalewayInstanceServerRead(ctx context.Context, d *schema.ResourceD
605
580
////
606
581
allUserData , _ := instanceAPI .GetAllServerUserData (& instance.GetAllServerUserDataRequest {
607
582
Zone : zone ,
608
- ServerID : ID ,
583
+ ServerID : id ,
609
584
}, scw .WithContext (ctx ))
610
585
611
586
userData := make (map [string ]interface {})
@@ -627,7 +602,7 @@ func resourceScalewayInstanceServerRead(ctx context.Context, d *schema.ResourceD
627
602
////
628
603
// Read server private networks
629
604
////
630
- ph , err := newPrivateNICHandler (ctx , instanceAPI , ID , zone )
605
+ ph , err := newPrivateNICHandler (ctx , instanceAPI , id , zone )
631
606
if err != nil {
632
607
return diag .FromErr (err )
633
608
}
@@ -645,7 +620,7 @@ func resourceScalewayInstanceServerRead(ctx context.Context, d *schema.ResourceD
645
620
646
621
//gocyclo:ignore
647
622
func 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 ())
649
624
if err != nil {
650
625
return diag .FromErr (err )
651
626
}
@@ -655,12 +630,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
655
630
656
631
var warnings diag.Diagnostics
657
632
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 ))
664
634
if err != nil {
665
635
return diag .FromErr (err )
666
636
}
@@ -747,12 +717,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
747
717
// Update reserved IP
748
718
////
749
719
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 ))
756
721
757
722
if err != nil {
758
723
return diag .FromErr (err )
@@ -770,43 +735,28 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
770
735
return diag .FromErr (err )
771
736
}
772
737
//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 ))
779
739
if err != nil {
780
740
return diag .FromErr (err )
781
741
}
782
742
}
783
743
// If a new IP is provided, we attach it to the server
784
744
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 ))
791
746
if err != nil {
792
747
return diag .FromErr (err )
793
748
}
794
749
795
750
_ , err = instanceAPI .UpdateIP (& instance.UpdateIPRequest {
796
751
Zone : zone ,
797
752
IP : ipID ,
798
- Server : & instance.NullableStringValue {Value : ID },
753
+ Server : & instance.NullableStringValue {Value : id },
799
754
}, scw .WithContext (ctx ))
800
755
if err != nil {
801
756
return diag .FromErr (err )
802
757
}
803
758
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 ))
810
760
if err != nil {
811
761
return diag .FromErr (err )
812
762
}
@@ -840,7 +790,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
840
790
if d .HasChanges ("user_data" ) {
841
791
userDataRequests := & instance.SetAllServerUserDataRequest {
842
792
Zone : zone ,
843
- ServerID : ID ,
793
+ ServerID : id ,
844
794
UserData : make (map [string ]io.Reader ),
845
795
}
846
796
@@ -857,12 +807,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
857
807
}
858
808
}
859
809
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 ))
866
811
if err != nil {
867
812
return diag .FromErr (err )
868
813
}
@@ -877,7 +822,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
877
822
// Update server private network
878
823
////
879
824
if d .HasChanges ("private_network" ) {
880
- ph , err := newPrivateNICHandler (ctx , instanceAPI , ID , zone )
825
+ ph , err := newPrivateNICHandler (ctx , instanceAPI , id , zone )
881
826
if err != nil {
882
827
diag .FromErr (err )
883
828
}
@@ -888,12 +833,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
888
833
if d .HasChange (pnKey ) {
889
834
o , n := d .GetChange (pnKey )
890
835
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 ))
897
837
if err != nil {
898
838
return diag .FromErr (err )
899
839
}
@@ -915,12 +855,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
915
855
for _ , raw := range o .([]interface {}) {
916
856
pn , pnExist := raw .(map [string ]interface {})
917
857
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 ))
924
859
if err != nil {
925
860
return diag .FromErr (err )
926
861
}
@@ -943,7 +878,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
943
878
return diag .FromErr (err )
944
879
}
945
880
// reach expected state
946
- err = reachState (ctx , instanceAPI , zone , ID , targetState )
881
+ err = reachState (ctx , instanceAPI , zone , id , targetState )
947
882
if err != nil {
948
883
return diag .FromErr (err )
949
884
}
@@ -954,12 +889,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
954
889
return diag .FromErr (err )
955
890
}
956
891
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 ))
963
893
if err != nil {
964
894
return diag .FromErr (err )
965
895
}
@@ -968,7 +898,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
968
898
}
969
899
970
900
func 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 ())
972
902
if err != nil {
973
903
return diag .FromErr (err )
974
904
}
@@ -988,34 +918,29 @@ func resourceScalewayInstanceServerDelete(ctx context.Context, d *schema.Resourc
988
918
_ , err := instanceAPI .UpdateServer (& instance.UpdateServerRequest {
989
919
Zone : zone ,
990
920
PlacementGroup : & instance.NullableStringValue {Null : true },
991
- ServerID : ID ,
921
+ ServerID : id ,
992
922
})
993
923
if err != nil {
994
924
log .Print ("[WARN] Failed remove server from instance group" )
995
925
}
996
926
}
997
927
// reach stopped state
998
- err = reachState (ctx , instanceAPI , zone , ID , instance .ServerStateStopped )
928
+ err = reachState (ctx , instanceAPI , zone , id , instance .ServerStateStopped )
999
929
if is404Error (err ) {
1000
930
return nil
1001
931
}
1002
932
if err != nil {
1003
933
return diag .FromErr (err )
1004
934
}
1005
935
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 ))
1012
937
if err != nil {
1013
938
return diag .FromErr (err )
1014
939
}
1015
940
1016
941
err = instanceAPI .DeleteServer (& instance.DeleteServerRequest {
1017
942
Zone : zone ,
1018
- ServerID : ID ,
943
+ ServerID : id ,
1019
944
}, scw .WithContext (ctx ))
1020
945
1021
946
if err != nil && ! is404Error (err ) {
0 commit comments