@@ -11,11 +11,6 @@ import (
11
11
"github.com/scaleway/scaleway-sdk-go/scw"
12
12
)
13
13
14
- const (
15
- retryIntervalVPCGatewayNetwork = 1 * time .Minute
16
- retryGWTimeout = 2 * time .Minute
17
- )
18
-
19
14
func resourceScalewayVPCGatewayNetwork () * schema.Resource {
20
15
return & schema.Resource {
21
16
CreateContext : resourceScalewayVPCGatewayNetworkCreate ,
@@ -91,27 +86,21 @@ func resourceScalewayVPCGatewayNetwork() *schema.Resource {
91
86
}
92
87
93
88
func resourceScalewayVPCGatewayNetworkCreate (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
94
- vpcgwNetworkAPI , zone , err := vpcgwAPIWithZone (d , meta )
89
+ vpcgwAPI , zone , err := vpcgwAPIWithZone (d , meta )
95
90
if err != nil {
96
91
return diag .FromErr (err )
97
92
}
98
93
99
- retryInterval := retryGWTimeout
100
94
gatewayID := expandZonedID (d .Get ("gateway_id" ).(string )).ID
101
- gw , err := vpcgwNetworkAPI .WaitForGateway (& vpcgw.WaitForGatewayRequest {
102
- GatewayID : gatewayID ,
103
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
104
- RetryInterval : & retryInterval ,
105
- Zone : zone ,
106
- }, scw .WithContext (ctx ))
107
- // check err waiting process
95
+
96
+ gateway , err := waitForVPCPublicGateway (ctx , vpcgwAPI , zone , gatewayID , d .Timeout (schema .TimeoutCreate ))
108
97
if err != nil {
109
98
return diag .FromErr (err )
110
99
}
111
100
112
101
req := & vpcgw.CreateGatewayNetworkRequest {
113
102
Zone : zone ,
114
- GatewayID : gw .ID ,
103
+ GatewayID : gateway .ID ,
115
104
PrivateNetworkID : expandZonedID (d .Get ("private_network_id" ).(string )).ID ,
116
105
EnableMasquerade : * expandBoolPtr (d .Get ("enable_masquerade" )),
117
106
EnableDHCP : expandBoolPtr (d .Get ("enable_dhcp" )),
@@ -131,63 +120,37 @@ func resourceScalewayVPCGatewayNetworkCreate(ctx context.Context, d *schema.Reso
131
120
req .DHCPID = & dhcpZoned .ID
132
121
}
133
122
134
- gatewayNetwork , err := vpcgwNetworkAPI .CreateGatewayNetwork (req , scw .WithContext (ctx ))
123
+ gatewayNetwork , err := vpcgwAPI .CreateGatewayNetwork (req , scw .WithContext (ctx ))
135
124
if err != nil {
136
125
return diag .FromErr (err )
137
126
}
138
127
139
- gw , err = vpcgwNetworkAPI .WaitForGateway (& vpcgw.WaitForGatewayRequest {
140
- GatewayID : gatewayID ,
141
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
142
- RetryInterval : & retryInterval ,
143
- Zone : zone ,
144
- }, scw .WithContext (ctx ))
145
- // check err waiting process
128
+ d .SetId (newZonedIDString (zone , gatewayNetwork .ID ))
129
+
130
+ _ , err = waitForVPCPublicGateway (ctx , vpcgwAPI , zone , gatewayNetwork .GatewayID , d .Timeout (schema .TimeoutCreate ))
146
131
if err != nil {
147
132
return diag .FromErr (err )
148
133
}
149
134
150
- retryInterval = retryIntervalVPCGatewayNetwork
151
- gatewayNetwork , err = vpcgwNetworkAPI .WaitForGatewayNetwork (& vpcgw.WaitForGatewayNetworkRequest {
152
- GatewayNetworkID : gatewayNetwork .ID ,
153
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
154
- RetryInterval : & retryInterval ,
155
- Zone : zone ,
156
- }, scw .WithContext (ctx ))
135
+ _ , err = waitForVPCGatewayNetwork (ctx , vpcgwAPI , zone , gatewayNetwork .ID , d .Timeout (schema .TimeoutCreate ))
157
136
if err != nil {
158
137
return diag .FromErr (err )
159
138
}
160
139
161
- d .SetId (newZonedIDString (zone , gatewayNetwork .ID ))
162
-
163
140
return resourceScalewayVPCGatewayNetworkRead (ctx , d , meta )
164
141
}
165
142
166
143
func resourceScalewayVPCGatewayNetworkRead (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
167
- vpcgwNetworkAPI , zone , ID , err := vpcgwAPIWithZoneAndID (meta , d .Id ())
144
+ vpcgwAPI , zone , ID , err := vpcgwAPIWithZoneAndID (meta , d .Id ())
168
145
if err != nil {
169
146
return diag .FromErr (err )
170
147
}
171
148
172
- readGWNetwork := & vpcgw.GetGatewayNetworkRequest {
173
- GatewayNetworkID : ID ,
174
- Zone : zone ,
175
- }
176
-
177
- gatewayID := expandZonedID (d .Get ("gateway_id" ).(string )).ID
178
- retryInterval := retryGWTimeout
179
- _ , err = vpcgwNetworkAPI .WaitForGateway (& vpcgw.WaitForGatewayRequest {
180
- GatewayID : gatewayID ,
181
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
182
- RetryInterval : & retryInterval ,
183
- Zone : zone ,
184
- }, scw .WithContext (ctx ))
185
- // check err waiting process
149
+ gatewayNetwork , err := waitForVPCGatewayNetwork (ctx , vpcgwAPI , zone , ID , d .Timeout (schema .TimeoutRead ))
186
150
if err != nil {
187
151
return diag .FromErr (err )
188
152
}
189
-
190
- gatewayNetwork , err := vpcgwNetworkAPI .GetGatewayNetwork (readGWNetwork , scw .WithContext (ctx ))
153
+ _ , err = waitForVPCPublicGateway (ctx , vpcgwAPI , zone , gatewayNetwork .GatewayID , d .Timeout (schema .TimeoutRead ))
191
154
if err != nil {
192
155
return diag .FromErr (err )
193
156
}
@@ -218,13 +181,7 @@ func resourceScalewayVPCGatewayNetworkRead(ctx context.Context, d *schema.Resour
218
181
cleanUpDHCPValue = * expandBoolPtr (cleanUpDHCP )
219
182
}
220
183
221
- retryInterval = retryIntervalVPCGatewayNetwork
222
- gatewayNetwork , err = vpcgwNetworkAPI .WaitForGatewayNetwork (& vpcgw.WaitForGatewayNetworkRequest {
223
- GatewayNetworkID : gatewayNetwork .ID ,
224
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
225
- RetryInterval : & retryInterval ,
226
- Zone : zone ,
227
- }, scw .WithContext (ctx ))
184
+ gatewayNetwork , err = waitForVPCGatewayNetwork (ctx , vpcgwAPI , zone , gatewayNetwork .ID , d .Timeout (schema .TimeoutRead ))
228
185
if err != nil {
229
186
return diag .FromErr (err )
230
187
}
@@ -246,26 +203,7 @@ func resourceScalewayVPCGatewayNetworkUpdate(ctx context.Context, d *schema.Reso
246
203
return diag .FromErr (err )
247
204
}
248
205
249
- gatewayID := expandZonedID (d .Get ("gateway_id" ).(string )).ID
250
- retryInterval := retryGWTimeout
251
- _ , err = vpcgwAPI .WaitForGateway (& vpcgw.WaitForGatewayRequest {
252
- GatewayID : gatewayID ,
253
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
254
- RetryInterval : & retryInterval ,
255
- Zone : zone ,
256
- }, scw .WithContext (ctx ))
257
- // check err waiting process
258
- if err != nil {
259
- return diag .FromErr (err )
260
- }
261
-
262
- retryInterval = retryIntervalVPCGatewayNetwork
263
- _ , err = vpcgwAPI .WaitForGatewayNetwork (& vpcgw.WaitForGatewayNetworkRequest {
264
- GatewayNetworkID : ID ,
265
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
266
- RetryInterval : & retryInterval ,
267
- Zone : zone ,
268
- }, scw .WithContext (ctx ))
206
+ _ , err = waitForVPCGatewayNetwork (ctx , vpcgwAPI , zone , ID , d .Timeout (schema .TimeoutUpdate ))
269
207
if err != nil {
270
208
return diag .FromErr (err )
271
209
}
@@ -294,24 +232,7 @@ func resourceScalewayVPCGatewayNetworkUpdate(ctx context.Context, d *schema.Reso
294
232
}
295
233
}
296
234
297
- _ , err = vpcgwAPI .WaitForGatewayNetwork (& vpcgw.WaitForGatewayNetworkRequest {
298
- GatewayNetworkID : ID ,
299
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
300
- RetryInterval : & retryInterval ,
301
- Zone : zone ,
302
- }, scw .WithContext (ctx ))
303
- if err != nil {
304
- return diag .FromErr (err )
305
- }
306
-
307
- retryInterval = retryGWTimeout
308
- _ , err = vpcgwAPI .WaitForGateway (& vpcgw.WaitForGatewayRequest {
309
- GatewayID : gatewayID ,
310
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
311
- RetryInterval : & retryInterval ,
312
- Zone : zone ,
313
- }, scw .WithContext (ctx ))
314
- // check err waiting process
235
+ _ , err = waitForVPCGatewayNetwork (ctx , vpcgwAPI , zone , ID , d .Timeout (schema .TimeoutUpdate ))
315
236
if err != nil {
316
237
return diag .FromErr (err )
317
238
}
@@ -320,54 +241,32 @@ func resourceScalewayVPCGatewayNetworkUpdate(ctx context.Context, d *schema.Reso
320
241
}
321
242
322
243
func resourceScalewayVPCGatewayNetworkDelete (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
323
- vpcgwAPI , zone , ID , err := vpcgwAPIWithZoneAndID (meta , d .Id ())
244
+ vpcgwAPI , zone , id , err := vpcgwAPIWithZoneAndID (meta , d .Id ())
324
245
if err != nil {
325
246
return diag .FromErr (err )
326
247
}
327
248
328
- gatewayID := expandZonedID (d .Get ("gateway_id" ).(string )).ID
329
- retryInterval := retryGWTimeout
330
- _ , err = vpcgwAPI .WaitForGateway (& vpcgw.WaitForGatewayRequest {
331
- GatewayID : gatewayID ,
332
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
333
- RetryInterval : & retryInterval ,
334
- Zone : zone ,
335
- }, scw .WithContext (ctx ))
336
- // check err waiting process
337
- if err != nil {
338
- return diag .FromErr (err )
339
- }
340
-
341
- retryInterval = retryIntervalVPCGatewayNetwork
342
- gwNetwork , err := vpcgwAPI .WaitForGatewayNetwork (& vpcgw.WaitForGatewayNetworkRequest {
343
- GatewayNetworkID : ID ,
344
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
345
- RetryInterval : & retryInterval ,
346
- Zone : zone ,
347
- }, scw .WithContext (ctx ))
249
+ gwNetwork , err := waitForVPCGatewayNetwork (ctx , vpcgwAPI , zone , id , d .Timeout (schema .TimeoutDelete ))
348
250
if err != nil {
349
251
return diag .FromErr (err )
350
252
}
351
253
352
254
req := & vpcgw.DeleteGatewayNetworkRequest {
353
255
GatewayNetworkID : gwNetwork .ID ,
354
- Zone : zone ,
256
+ Zone : gwNetwork . Zone ,
355
257
CleanupDHCP : * expandBoolPtr (d .Get ("cleanup_dhcp" )),
356
258
}
357
-
358
259
err = vpcgwAPI .DeleteGatewayNetwork (req , scw .WithContext (ctx ))
359
260
if err != nil {
360
261
return diag .FromErr (err )
361
262
}
362
263
363
- //check gateway is in stable state.
364
- retryInterval = retryGWTimeout
365
- _ , err = vpcgwAPI .WaitForGateway (& vpcgw.WaitForGatewayRequest {
366
- GatewayID : gatewayID ,
367
- Timeout : scw .TimeDurationPtr (defaultVPCGatewayTimeout ),
368
- RetryInterval : & retryInterval ,
369
- Zone : zone ,
370
- }, scw .WithContext (ctx ))
264
+ _ , err = waitForVPCGatewayNetwork (ctx , vpcgwAPI , zone , id , d .Timeout (schema .TimeoutDelete ))
265
+ if err != nil && ! is404Error (err ) {
266
+ return diag .FromErr (err )
267
+ }
268
+
269
+ _ , err = waitForVPCPublicGateway (ctx , vpcgwAPI , zone , gwNetwork .GatewayID , d .Timeout (schema .TimeoutDelete ))
371
270
if err != nil && ! is404Error (err ) {
372
271
return diag .FromErr (err )
373
272
}
0 commit comments