@@ -3,6 +3,7 @@ package scaleway
3
3
import (
4
4
"context"
5
5
"errors"
6
+ "fmt"
6
7
7
8
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
8
9
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -140,7 +141,7 @@ func resourceScalewayLbCertificateCreate(ctx context.Context, d *schema.Resource
140
141
return diag .FromErr (errors .New ("you need to define either letsencrypt or custom_certificate configuration" ))
141
142
}
142
143
143
- retryInterval := DefaultWaitLBRetryInterval
144
+ retryInterval := defaultWaitLBRetryInterval
144
145
_ , err = lbAPI .WaitForLb (& lb.ZonedAPIWaitForLBRequest {
145
146
Zone : zone ,
146
147
LBID : lbID ,
@@ -160,6 +161,16 @@ func resourceScalewayLbCertificateCreate(ctx context.Context, d *schema.Resource
160
161
return diag .FromErr (err )
161
162
}
162
163
164
+ _ , err = lbAPI .WaitForLBCertificate (& lb.ZonedAPIWaitForLBCertificateRequest {
165
+ CertID : res .ID ,
166
+ Zone : res .LB .Zone ,
167
+ Timeout : scw .TimeDurationPtr (defaultLbLbTimeout ),
168
+ RetryInterval : scw .TimeDurationPtr (defaultWaitLBRetryInterval ),
169
+ })
170
+ if err != nil {
171
+ return diag .FromErr (err )
172
+ }
173
+
163
174
_ , err = lbAPI .WaitForLb (& lb.ZonedAPIWaitForLBRequest {
164
175
Zone : zone ,
165
176
LBID : lbID ,
@@ -185,38 +196,40 @@ func resourceScalewayLbCertificateRead(ctx context.Context, d *schema.ResourceDa
185
196
return diag .FromErr (err )
186
197
}
187
198
188
- res , err := lbAPI .GetCertificate (& lb.ZonedAPIGetCertificateRequest {
189
- CertificateID : ID ,
199
+ cert , err := lbAPI .WaitForLBCertificate (& lb.ZonedAPIWaitForLBCertificateRequest {
200
+ CertID : ID ,
190
201
Zone : zone ,
191
- }, scw .WithContext (ctx ))
192
-
202
+ Timeout : scw .TimeDurationPtr (defaultLbLbTimeout ),
203
+ RetryInterval : scw .TimeDurationPtr (defaultWaitLBRetryInterval ),
204
+ })
193
205
if err != nil {
194
- if is404Error (err ) {
195
- d .SetId ("" )
196
- return nil
197
- }
198
206
return diag .FromErr (err )
199
207
}
200
208
201
- retryInterval := DefaultWaitLBRetryInterval
209
+ // check if cert is on error state
210
+ if cert .Status == lb .CertificateStatusError {
211
+ return diag .FromErr (fmt .Errorf ("certificate with error state" ))
212
+ }
213
+
214
+ retryInterval := defaultWaitLBRetryInterval
202
215
_ , err = lbAPI .WaitForLb (& lb.ZonedAPIWaitForLBRequest {
203
216
Zone : zone ,
204
- LBID : res .LB .ID ,
217
+ LBID : cert .LB .ID ,
205
218
Timeout : scw .TimeDurationPtr (defaultInstanceServerWaitTimeout ),
206
219
RetryInterval : & retryInterval ,
207
220
}, scw .WithContext (ctx ))
208
221
if err != nil {
209
222
return diag .FromErr (err )
210
223
}
211
224
212
- _ = d .Set ("lb_id" , newZonedIDString (zone , res .LB .ID ))
213
- _ = d .Set ("name" , res .Name )
214
- _ = d .Set ("common_name" , res .CommonName )
215
- _ = d .Set ("subject_alternative_name" , res .SubjectAlternativeName )
216
- _ = d .Set ("fingerprint" , res .Fingerprint )
217
- _ = d .Set ("not_valid_before" , flattenTime (res .NotValidBefore ))
218
- _ = d .Set ("not_valid_after" , flattenTime (res .NotValidAfter ))
219
- _ = d .Set ("status" , res .Status )
225
+ _ = d .Set ("lb_id" , newZonedIDString (zone , cert .LB .ID ))
226
+ _ = d .Set ("name" , cert .Name )
227
+ _ = d .Set ("common_name" , cert .CommonName )
228
+ _ = d .Set ("subject_alternative_name" , cert .SubjectAlternativeName )
229
+ _ = d .Set ("fingerprint" , cert .Fingerprint )
230
+ _ = d .Set ("not_valid_before" , flattenTime (cert .NotValidBefore ))
231
+ _ = d .Set ("not_valid_after" , flattenTime (cert .NotValidAfter ))
232
+ _ = d .Set ("status" , cert .Status )
220
233
return nil
221
234
}
222
235
@@ -226,15 +239,17 @@ func resourceScalewayLbCertificateUpdate(ctx context.Context, d *schema.Resource
226
239
return diag .FromErr (err )
227
240
}
228
241
229
- cert , err := lbAPI .GetCertificate (& lb.ZonedAPIGetCertificateRequest {
230
- CertificateID : ID ,
242
+ cert , err := lbAPI .WaitForLBCertificate (& lb.ZonedAPIWaitForLBCertificateRequest {
243
+ CertID : ID ,
231
244
Zone : zone ,
232
- }, scw .WithContext (ctx ))
245
+ Timeout : scw .TimeDurationPtr (defaultLbLbTimeout ),
246
+ RetryInterval : scw .TimeDurationPtr (defaultWaitLBRetryInterval ),
247
+ })
233
248
if err != nil {
234
249
return diag .FromErr (err )
235
250
}
236
251
237
- retryInterval := DefaultWaitLBRetryInterval
252
+ retryInterval := defaultWaitLBRetryInterval
238
253
_ , err = lbAPI .WaitForLb (& lb.ZonedAPIWaitForLBRequest {
239
254
Zone : zone ,
240
255
LBID : cert .LB .ID ,
@@ -285,15 +300,17 @@ func resourceScalewayLbCertificateDelete(ctx context.Context, d *schema.Resource
285
300
return diag .FromErr (err )
286
301
}
287
302
288
- cert , err := lbAPI .GetCertificate (& lb.ZonedAPIGetCertificateRequest {
289
- CertificateID : ID ,
303
+ cert , err := lbAPI .WaitForLBCertificate (& lb.ZonedAPIWaitForLBCertificateRequest {
304
+ CertID : ID ,
290
305
Zone : zone ,
291
- }, scw .WithContext (ctx ))
306
+ Timeout : scw .TimeDurationPtr (defaultLbLbTimeout ),
307
+ RetryInterval : scw .TimeDurationPtr (defaultWaitLBRetryInterval ),
308
+ })
292
309
if err != nil {
293
310
return diag .FromErr (err )
294
311
}
295
312
296
- retryInterval := DefaultWaitLBRetryInterval
313
+ retryInterval := defaultWaitLBRetryInterval
297
314
_ , err = lbAPI .WaitForLb (& lb.ZonedAPIWaitForLBRequest {
298
315
Zone : zone ,
299
316
LBID : cert .LB .ID ,
0 commit comments