Skip to content

Commit 8345648

Browse files
authored
chore(registry): add support for fast retry with cassettes (#1191)
1 parent 8aa02d8 commit 8345648

4 files changed

+456
-282
lines changed

scaleway/helpers_registry.go

+19-1
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"
@@ -9,7 +10,8 @@ import (
910
)
1011

1112
const (
12-
defaultRegistryNamespaceTimeout = 5 * time.Minute
13+
defaultRegistryNamespaceTimeout = 5 * time.Minute
14+
defaultRegistryNamespaceRetryInterval = 5 * time.Second
1315
)
1416

1517
type ErrorRegistryMessage struct {
@@ -39,3 +41,19 @@ func registryAPIWithRegionAndID(m interface{}, id string) (*registry.API, scw.Re
3941
}
4042
return api, region, id, nil
4143
}
44+
45+
func waitForRegistryNamespace(ctx context.Context, api *registry.API, region scw.Region, id string, timeout time.Duration) (*registry.Namespace, error) {
46+
retryInterval := defaultRegistryNamespaceRetryInterval
47+
if DefaultWaitRetryInterval != nil {
48+
retryInterval = *DefaultWaitRetryInterval
49+
}
50+
51+
ns, err := api.WaitForNamespace(&registry.WaitForNamespaceRequest{
52+
Region: region,
53+
NamespaceID: id,
54+
RetryInterval: &retryInterval,
55+
Timeout: scw.TimeDurationPtr(timeout),
56+
}, scw.WithContext(ctx))
57+
58+
return ns, err
59+
}

scaleway/resource_registry_namespace.go

+12-21
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ func resourceScalewayRegistryNamespaceCreate(ctx context.Context, d *schema.Reso
7070

7171
d.SetId(newRegionalIDString(region, ns.ID))
7272

73+
_, err = waitForRegistryNamespace(ctx, api, region, ns.ID, d.Timeout(schema.TimeoutCreate))
74+
if err != nil {
75+
return diag.FromErr(err)
76+
}
77+
7378
return resourceScalewayRegistryNamespaceRead(ctx, d, meta)
7479
}
7580

@@ -79,13 +84,7 @@ func resourceScalewayRegistryNamespaceRead(ctx context.Context, d *schema.Resour
7984
return diag.FromErr(err)
8085
}
8186

82-
ns, err := api.WaitForNamespace(&registry.WaitForNamespaceRequest{
83-
Region: region,
84-
NamespaceID: id,
85-
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutRead)),
86-
RetryInterval: DefaultWaitRetryInterval,
87-
}, scw.WithContext(ctx))
88-
87+
ns, err := waitForRegistryNamespace(ctx, api, region, id, d.Timeout(schema.TimeoutRead))
8988
if err != nil {
9089
if is404Error(err) {
9190
d.SetId("")
@@ -111,13 +110,7 @@ func resourceScalewayRegistryNamespaceUpdate(ctx context.Context, d *schema.Reso
111110
return diag.FromErr(err)
112111
}
113112

114-
_, err = api.WaitForNamespace(&registry.WaitForNamespaceRequest{
115-
Region: region,
116-
NamespaceID: id,
117-
RetryInterval: DefaultWaitRetryInterval,
118-
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutUpdate)),
119-
}, scw.WithContext(ctx))
120-
113+
_, err = waitForRegistryNamespace(ctx, api, region, id, d.Timeout(schema.TimeoutUpdate))
121114
if err != nil {
122115
if is404Error(err) {
123116
d.SetId("")
@@ -146,13 +139,7 @@ func resourceScalewayRegistryNamespaceDelete(ctx context.Context, d *schema.Reso
146139
return diag.FromErr(err)
147140
}
148141

149-
_, err = api.WaitForNamespace(&registry.WaitForNamespaceRequest{
150-
Region: region,
151-
NamespaceID: id,
152-
RetryInterval: DefaultWaitRetryInterval,
153-
Timeout: scw.TimeDurationPtr(d.Timeout(schema.TimeoutDelete)),
154-
}, scw.WithContext(ctx))
155-
142+
_, err = waitForRegistryNamespace(ctx, api, region, id, d.Timeout(schema.TimeoutDelete))
156143
if err != nil {
157144
if is404Error(err) {
158145
d.SetId("")
@@ -165,7 +152,11 @@ func resourceScalewayRegistryNamespaceDelete(ctx context.Context, d *schema.Reso
165152
Region: region,
166153
NamespaceID: id,
167154
}, scw.WithContext(ctx))
155+
if err != nil && !is404Error(err) {
156+
return diag.FromErr(err)
157+
}
168158

159+
_, err = waitForRegistryNamespace(ctx, api, region, id, d.Timeout(schema.TimeoutDelete))
169160
if err != nil && !is404Error(err) {
170161
return diag.FromErr(err)
171162
}

0 commit comments

Comments
 (0)