Skip to content

Commit d9ae345

Browse files
authored
chore(container): add support for fast retry with cassettes (#1190)
1 parent 32c2bdb commit d9ae345

4 files changed

+436
-495
lines changed

scaleway/helpers_container.go

+18
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package scaleway
22

33
import (
4+
"context"
45
"time"
56

67
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -10,6 +11,7 @@ import (
1011

1112
const (
1213
defaultContainerNamespaceTimeout = 20 * time.Second
14+
defaultContainerRetryInterval = 5 * time.Second
1315
)
1416

1517
// containerAPIWithRegion returns a new container API and the region.
@@ -97,3 +99,19 @@ func setCreateContainerRequest(d *schema.ResourceData, region scw.Region) (*cont
9799

98100
return req, nil
99101
}
102+
103+
func waitForContainerNamespace(ctx context.Context, containerAPI *container.API, region scw.Region, id string, timeout time.Duration) (*container.Namespace, error) {
104+
retryInterval := defaultContainerRetryInterval
105+
if DefaultWaitRetryInterval != nil {
106+
retryInterval = *DefaultWaitRetryInterval
107+
}
108+
109+
ns, err := containerAPI.WaitForNamespace(&container.WaitForNamespaceRequest{
110+
Region: region,
111+
NamespaceID: id,
112+
RetryInterval: &retryInterval,
113+
Timeout: scw.TimeDurationPtr(timeout),
114+
}, scw.WithContext(ctx))
115+
116+
return ns, err
117+
}

scaleway/resource_container_namespace.go

+11-22
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ func resourceScalewayContainerNamespaceCreate(ctx context.Context, d *schema.Res
8282

8383
d.SetId(newRegionalIDString(region, ns.ID))
8484

85+
_, err = waitForContainerNamespace(ctx, api, region, ns.ID, d.Timeout(schema.TimeoutCreate))
86+
if err != nil {
87+
return diag.FromErr(err)
88+
}
89+
8590
return resourceScalewayContainerNamespaceRead(ctx, d, meta)
8691
}
8792

@@ -91,12 +96,7 @@ func resourceScalewayContainerNamespaceRead(ctx context.Context, d *schema.Resou
9196
return diag.FromErr(err)
9297
}
9398

94-
ns, err := api.WaitForNamespace(&container.WaitForNamespaceRequest{
95-
Region: region,
96-
NamespaceID: id,
97-
RetryInterval: DefaultWaitRetryInterval,
98-
}, scw.WithContext(ctx))
99-
99+
ns, err := waitForContainerNamespace(ctx, api, region, id, d.Timeout(schema.TimeoutRead))
100100
if err != nil {
101101
if is404Error(err) {
102102
d.SetId("")
@@ -123,17 +123,13 @@ func resourceScalewayContainerNamespaceUpdate(ctx context.Context, d *schema.Res
123123
return diag.FromErr(err)
124124
}
125125

126-
ns, err := api.WaitForNamespace(&container.WaitForNamespaceRequest{
127-
Region: region,
128-
NamespaceID: id,
129-
RetryInterval: DefaultWaitRetryInterval,
130-
}, scw.WithContext(ctx))
126+
ns, err := waitForContainerNamespace(ctx, api, region, id, d.Timeout(schema.TimeoutUpdate))
131127
if err != nil {
132128
return diag.FromErr(err)
133129
}
134130

135131
req := &container.UpdateNamespaceRequest{
136-
Region: region,
132+
Region: ns.Region,
137133
NamespaceID: ns.ID,
138134
}
139135

@@ -159,11 +155,7 @@ func resourceScalewayContainerNamespaceDelete(ctx context.Context, d *schema.Res
159155
return diag.FromErr(err)
160156
}
161157

162-
_, err = api.WaitForNamespace(&container.WaitForNamespaceRequest{
163-
Region: region,
164-
NamespaceID: id,
165-
RetryInterval: DefaultWaitRetryInterval,
166-
}, scw.WithContext(ctx))
158+
_, err = waitForContainerNamespace(ctx, api, region, id, d.Timeout(schema.TimeoutDelete))
167159
if err != nil {
168160
if is404Error(err) {
169161
d.SetId("")
@@ -176,21 +168,18 @@ func resourceScalewayContainerNamespaceDelete(ctx context.Context, d *schema.Res
176168
Region: region,
177169
NamespaceID: id,
178170
}, scw.WithContext(ctx))
179-
180171
if err != nil && !is404Error(err) {
181172
return diag.FromErr(err)
182173
}
183174

184-
_, err = api.WaitForNamespace(&container.WaitForNamespaceRequest{
185-
Region: region,
186-
NamespaceID: id,
187-
}, scw.WithContext(ctx))
175+
_, err = waitForContainerNamespace(ctx, api, region, id, d.Timeout(schema.TimeoutDelete))
188176
if err != nil {
189177
if is404Error(err) {
190178
d.SetId("")
191179
return nil
192180
}
193181
return diag.FromErr(err)
194182
}
183+
195184
return nil
196185
}

0 commit comments

Comments
 (0)