Skip to content

Commit ac43ecf

Browse files
authored
Merge branch 'master' into baremetal_timeout
2 parents b8f8b1c + 6f542ac commit ac43ecf

16 files changed

+114
-103
lines changed

scaleway/helpers_iot.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scaleway
22

33
import (
44
"fmt"
5+
"time"
56

67
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
78
iot "github.com/scaleway/scaleway-sdk-go/api/iot/v1"
@@ -25,11 +26,12 @@ func iotAPIWithRegionAndID(m interface{}, id string) (*iot.API, scw.Region, stri
2526
return iotAPI, region, ID, err
2627
}
2728

28-
func waitIotHub(iotAPI *iot.API, region scw.Region, hubID string, desiredStates ...iot.HubStatus) error {
29+
func waitIotHub(iotAPI *iot.API, region scw.Region, hubID string, timeout time.Duration, desiredStates ...iot.HubStatus) error {
2930
hub, err := iotAPI.WaitForHub(&iot.WaitForHubRequest{
3031
HubID: hubID,
3132
Region: region,
3233
RetryInterval: DefaultWaitRetryInterval,
34+
Timeout: scw.TimeDurationPtr(timeout),
3335
})
3436
if err != nil {
3537
return err

scaleway/helpers_k8s.go

+10-13
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@ import (
1313
)
1414

1515
const (
16-
defaultK8SClusterTimeout = 10 * time.Minute
17-
defaultK8SPoolTimeout = 10 * time.Minute
18-
k8sClusterWaitForPoolRequiredTimeout = 10 * time.Minute
19-
k8sClusterWaitForDeletedTimeout = 10 * time.Minute
20-
k8sPoolWaitForReadyTimeout = 15 * time.Minute
16+
defaultK8SClusterTimeout = 15 * time.Minute
17+
defaultK8SPoolTimeout = 15 * time.Minute
2118
)
2219

2320
func k8sAPIWithRegion(d *schema.ResourceData, m interface{}) (*k8s.API, scw.Region, error) {
@@ -77,29 +74,29 @@ func k8sGetLatestVersionFromMinor(ctx context.Context, k8sAPI *k8s.API, region s
7774
return "", fmt.Errorf("no available upstream version found for %s", version)
7875
}
7976

80-
func waitK8SCluster(ctx context.Context, k8sAPI *k8s.API, region scw.Region, clusterID string) (*k8s.Cluster, error) {
77+
func waitK8SCluster(ctx context.Context, k8sAPI *k8s.API, region scw.Region, clusterID string, timeout time.Duration) (*k8s.Cluster, error) {
8178
return k8sAPI.WaitForCluster(&k8s.WaitForClusterRequest{
8279
ClusterID: clusterID,
8380
Region: region,
84-
Timeout: scw.TimeDurationPtr(k8sClusterWaitForPoolRequiredTimeout),
81+
Timeout: scw.TimeDurationPtr(timeout),
8582
RetryInterval: DefaultWaitRetryInterval,
8683
}, scw.WithContext(ctx))
8784
}
8885

89-
func waitK8SClusterPool(ctx context.Context, k8sAPI *k8s.API, region scw.Region, clusterID string) (*k8s.Cluster, error) {
86+
func waitK8SClusterPool(ctx context.Context, k8sAPI *k8s.API, region scw.Region, clusterID string, timeout time.Duration) (*k8s.Cluster, error) {
9087
return k8sAPI.WaitForClusterPool(&k8s.WaitForClusterRequest{
9188
ClusterID: clusterID,
9289
Region: region,
93-
Timeout: scw.TimeDurationPtr(k8sClusterWaitForPoolRequiredTimeout),
90+
Timeout: scw.TimeDurationPtr(timeout),
9491
RetryInterval: DefaultWaitRetryInterval,
9592
}, scw.WithContext(ctx))
9693
}
9794

98-
func waitK8SClusterDeleted(ctx context.Context, k8sAPI *k8s.API, region scw.Region, clusterID string) error {
95+
func waitK8SClusterDeleted(ctx context.Context, k8sAPI *k8s.API, region scw.Region, clusterID string, timeout time.Duration) error {
9996
cluster, err := k8sAPI.WaitForCluster(&k8s.WaitForClusterRequest{
10097
ClusterID: clusterID,
10198
Region: region,
102-
Timeout: scw.TimeDurationPtr(k8sClusterWaitForDeletedTimeout),
99+
Timeout: scw.TimeDurationPtr(timeout),
103100
RetryInterval: DefaultWaitRetryInterval,
104101
}, scw.WithContext(ctx))
105102
if err != nil {
@@ -112,11 +109,11 @@ func waitK8SClusterDeleted(ctx context.Context, k8sAPI *k8s.API, region scw.Regi
112109
return fmt.Errorf("cluster %s has state %s, wants %s", clusterID, cluster.Status, k8s.ClusterStatusDeleted)
113110
}
114111

115-
func waitK8SPoolReady(ctx context.Context, k8sAPI *k8s.API, region scw.Region, poolID string) error {
112+
func waitK8SPoolReady(ctx context.Context, k8sAPI *k8s.API, region scw.Region, poolID string, timeout time.Duration) error {
116113
pool, err := k8sAPI.WaitForPool(&k8s.WaitForPoolRequest{
117114
PoolID: poolID,
118115
Region: region,
119-
Timeout: scw.TimeDurationPtr(k8sPoolWaitForReadyTimeout),
116+
Timeout: scw.TimeDurationPtr(timeout),
120117
RetryInterval: DefaultWaitRetryInterval,
121118
}, scw.WithContext(ctx))
122119

scaleway/helpers_rdb.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,12 @@ func expandInstanceSettings(i interface{}) []*rdb.InstanceSetting {
7474
return res
7575
}
7676

77-
func waitInstance(ctx context.Context, api *rdb.API, region scw.Region, id string) (*rdb.Instance, error) {
77+
func waitInstance(ctx context.Context, api *rdb.API, region scw.Region, id string, timeout time.Duration) (*rdb.Instance, error) {
7878
retryInterval := defaultWaitRDBRetryInterval
7979
return api.WaitForInstance(&rdb.WaitForInstanceRequest{
8080
Region: region,
8181
InstanceID: id,
82-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout * 3), // upgrade takes some time
82+
Timeout: scw.TimeDurationPtr(timeout),
8383
RetryInterval: &retryInterval,
8484
}, scw.WithContext(ctx))
8585
}

scaleway/resource_instance_server.go

+15-15
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
386386
_, err = instanceAPI.WaitForServer(&instance.WaitForServerRequest{
387387
Zone: zone,
388388
ServerID: res.Server.ID,
389-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
389+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutCreate)),
390390
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
391391
})
392392
if err != nil {
@@ -419,7 +419,7 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
419419
_, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
420420
Zone: zone,
421421
ServerID: res.Server.ID,
422-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
422+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutCreate)),
423423
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
424424
})
425425
if err != nil {
@@ -458,7 +458,7 @@ func resourceScalewayInstanceServerCreate(ctx context.Context, d *schema.Resourc
458458
_, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
459459
Zone: zone,
460460
ServerID: res.Server.ID,
461-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
461+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutCreate)),
462462
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
463463
})
464464
if err != nil {
@@ -485,7 +485,7 @@ func resourceScalewayInstanceServerRead(ctx context.Context, d *schema.ResourceD
485485
server, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
486486
Zone: zone,
487487
ServerID: ID,
488-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
488+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutRead)),
489489
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
490490
})
491491
if err != nil {
@@ -639,7 +639,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
639639
server, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
640640
Zone: zone,
641641
ServerID: ID,
642-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
642+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
643643
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
644644
})
645645
if err != nil {
@@ -731,7 +731,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
731731
server, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
732732
Zone: zone,
733733
ServerID: ID,
734-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
734+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
735735
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
736736
})
737737

@@ -754,7 +754,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
754754
_, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
755755
Zone: zone,
756756
ServerID: ID,
757-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
757+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
758758
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
759759
})
760760
if err != nil {
@@ -766,7 +766,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
766766
_, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
767767
Zone: zone,
768768
ServerID: ID,
769-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
769+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
770770
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
771771
})
772772
if err != nil {
@@ -785,7 +785,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
785785
_, err = instanceAPI.WaitForServer(&instance.WaitForServerRequest{
786786
Zone: zone,
787787
ServerID: ID,
788-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
788+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
789789
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
790790
})
791791
if err != nil {
@@ -841,7 +841,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
841841
_, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
842842
Zone: zone,
843843
ServerID: ID,
844-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
844+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
845845
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
846846
})
847847
if err != nil {
@@ -872,7 +872,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
872872
_, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
873873
Zone: zone,
874874
ServerID: ID,
875-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
875+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
876876
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
877877
})
878878
if err != nil {
@@ -899,7 +899,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
899899
_, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{
900900
Zone: zone,
901901
ServerID: ID,
902-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
902+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
903903
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
904904
})
905905
if err != nil {
@@ -932,7 +932,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
932932
_, err = instanceAPI.WaitForServer(&instance.WaitForServerRequest{
933933
Zone: zone,
934934
ServerID: ID,
935-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
935+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
936936
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
937937
})
938938
if err != nil {
@@ -947,7 +947,7 @@ func resourceScalewayInstanceServerUpdate(ctx context.Context, d *schema.Resourc
947947
_, err = instanceAPI.WaitForServer(&instance.WaitForServerRequest{
948948
Zone: zone,
949949
ServerID: ID,
950-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
950+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
951951
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
952952
})
953953
if err != nil {
@@ -975,7 +975,7 @@ func resourceScalewayInstanceServerDelete(ctx context.Context, d *schema.Resourc
975975
_, err = instanceAPI.WaitForServer(&instance.WaitForServerRequest{
976976
Zone: zone,
977977
ServerID: ID,
978-
Timeout: scw.TimeDurationPtr(defaultInstanceServerWaitTimeout),
978+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutDelete)),
979979
RetryInterval: scw.TimeDurationPtr(retryInstanceServerInterval),
980980
})
981981
if err != nil {

scaleway/resource_instance_snapshot.go

+12
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,17 @@ func resourceScalewayInstanceSnapshotCreate(ctx context.Context, d *schema.Resou
8888
}
8989

9090
d.SetId(newZonedIDString(zone, res.Snapshot.ID))
91+
92+
_, err = instanceAPI.WaitForSnapshot(&instance.WaitForSnapshotRequest{
93+
SnapshotID: res.Snapshot.ID,
94+
Zone: zone,
95+
RetryInterval: DefaultWaitRetryInterval,
96+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutCreate)),
97+
})
98+
if err != nil {
99+
return diag.FromErr(err)
100+
}
101+
91102
return resourceScalewayInstanceSnapshotRead(ctx, d, meta)
92103
}
93104

@@ -148,6 +159,7 @@ func resourceScalewayInstanceSnapshotDelete(ctx context.Context, d *schema.Resou
148159
SnapshotID: id,
149160
Zone: zone,
150161
RetryInterval: DefaultWaitRetryInterval,
162+
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutDelete)),
151163
})
152164
if err != nil {
153165
return diag.FromErr(err)

scaleway/resource_iot_hub.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func resourceScalewayIotHubCreate(ctx context.Context, d *schema.ResourceData, m
142142
return diag.FromErr(err)
143143
}
144144

145-
err = waitIotHub(iotAPI, region, res.ID, iot.HubStatusReady)
145+
err = waitIotHub(iotAPI, region, res.ID, d.Timeout(schema.TimeoutCreate), iot.HubStatusReady)
146146
if err != nil {
147147
return diag.FromErr(err)
148148
}
@@ -183,7 +183,7 @@ func resourceScalewayIotHubCreate(ctx context.Context, d *schema.ResourceData, m
183183
return diag.FromErr(err)
184184
}
185185

186-
err = waitIotHub(iotAPI, region, res.ID, iot.HubStatusDisabled)
186+
err = waitIotHub(iotAPI, region, res.ID, d.Timeout(schema.TimeoutCreate), iot.HubStatusDisabled)
187187
if err != nil {
188188
return diag.FromErr(err)
189189
}
@@ -262,7 +262,7 @@ func resourceScalewayIotHubUpdate(ctx context.Context, d *schema.ResourceData, m
262262
return diag.FromErr(err)
263263
}
264264

265-
err = waitIotHub(iotAPI, region, hubID, iot.HubStatusReady, iot.HubStatusDisabled)
265+
err = waitIotHub(iotAPI, region, hubID, d.Timeout(schema.TimeoutUpdate), iot.HubStatusReady, iot.HubStatusDisabled)
266266
if err != nil {
267267
return diag.FromErr(err)
268268
}

scaleway/resource_k8s_cluster.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ func resourceScalewayK8SClusterCreate(ctx context.Context, d *schema.ResourceDat
380380
return diag.FromErr(err)
381381
}
382382

383-
res, err = waitK8SClusterPool(ctx, k8sAPI, region, res.ID)
383+
res, err = waitK8SClusterPool(ctx, k8sAPI, region, res.ID, d.Timeout(schema.TimeoutCreate))
384384
if err != nil {
385385
return diag.FromErr(err)
386386
}
@@ -399,7 +399,7 @@ func resourceScalewayK8SClusterRead(ctx context.Context, d *schema.ResourceData,
399399
////
400400
// Read Cluster
401401
////
402-
cluster, err := waitK8SCluster(ctx, k8sAPI, region, clusterID)
402+
cluster, err := waitK8SCluster(ctx, k8sAPI, region, clusterID, d.Timeout(schema.TimeoutRead))
403403
if err != nil {
404404
if is404Error(err) {
405405
d.SetId("")
@@ -652,7 +652,7 @@ func resourceScalewayK8SClusterUpdate(ctx context.Context, d *schema.ResourceDat
652652
return diag.FromErr(err)
653653
}
654654

655-
_, err = waitK8SCluster(ctx, k8sAPI, region, clusterID)
655+
_, err = waitK8SCluster(ctx, k8sAPI, region, clusterID, d.Timeout(schema.TimeoutUpdate))
656656
if err != nil {
657657
return diag.FromErr(err)
658658
}
@@ -672,7 +672,7 @@ func resourceScalewayK8SClusterUpdate(ctx context.Context, d *schema.ResourceDat
672672
return diag.FromErr(err)
673673
}
674674

675-
_, err = waitK8SCluster(ctx, k8sAPI, region, clusterID)
675+
_, err = waitK8SCluster(ctx, k8sAPI, region, clusterID, d.Timeout(schema.TimeoutUpdate))
676676
if err != nil {
677677
return diag.FromErr(err)
678678
}
@@ -704,7 +704,7 @@ func resourceScalewayK8SClusterDelete(ctx context.Context, d *schema.ResourceDat
704704
return diag.FromErr(err)
705705
}
706706

707-
err = waitK8SClusterDeleted(ctx, k8sAPI, region, clusterID)
707+
err = waitK8SClusterDeleted(ctx, k8sAPI, region, clusterID, d.Timeout(schema.TimeoutDelete))
708708
if err != nil {
709709
return diag.FromErr(err)
710710
}

scaleway/resource_k8s_pool.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ func resourceScalewayK8SPoolCreate(ctx context.Context, d *schema.ResourceData,
265265
if cluster.Status == k8s.ClusterStatusPoolRequired {
266266
waitForCluster = true
267267
} else if cluster.Status == k8s.ClusterStatusCreating {
268-
_, err = waitK8SCluster(ctx, k8sAPI, region, cluster.ID)
268+
_, err = waitK8SCluster(ctx, k8sAPI, region, cluster.ID, d.Timeout(schema.TimeoutCreate))
269269
if err != nil {
270270
return diag.FromErr(err)
271271
}
@@ -279,14 +279,14 @@ func resourceScalewayK8SPoolCreate(ctx context.Context, d *schema.ResourceData,
279279
d.SetId(newRegionalIDString(region, res.ID))
280280

281281
if d.Get("wait_for_pool_ready").(bool) { // wait for the pool to be ready if specified (including all its nodes)
282-
err = waitK8SPoolReady(ctx, k8sAPI, region, res.ID)
282+
err = waitK8SPoolReady(ctx, k8sAPI, region, res.ID, d.Timeout(schema.TimeoutCreate))
283283
if err != nil {
284284
return diag.FromErr(err)
285285
}
286286
}
287287

288288
if waitForCluster {
289-
_, err = waitK8SCluster(ctx, k8sAPI, region, cluster.ID)
289+
_, err = waitK8SCluster(ctx, k8sAPI, region, cluster.ID, d.Timeout(schema.TimeoutCreate))
290290
if err != nil {
291291
return diag.FromErr(err)
292292
}
@@ -412,7 +412,7 @@ func resourceScalewayK8SPoolUpdate(ctx context.Context, d *schema.ResourceData,
412412
}
413413

414414
if d.Get("wait_for_pool_ready").(bool) { // wait for the pool to be ready if specified (including all its nodes)
415-
err = waitK8SPoolReady(ctx, k8sAPI, region, res.ID)
415+
err = waitK8SPoolReady(ctx, k8sAPI, region, res.ID, d.Timeout(schema.TimeoutUpdate))
416416
if err != nil {
417417
return diag.FromErr(err)
418418
}

0 commit comments

Comments
 (0)