|
1 | 1 | package secret_test |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "context" |
4 | 5 | "fmt" |
5 | 6 | "regexp" |
6 | 7 | "testing" |
| 8 | + "time" |
7 | 9 |
|
| 10 | + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" |
8 | 11 | "github.com/hashicorp/terraform-plugin-testing/helper/resource" |
9 | 12 | "github.com/hashicorp/terraform-plugin-testing/terraform" |
10 | 13 | secretSDK "github.com/scaleway/scaleway-sdk-go/api/secret/v1beta1" |
@@ -316,30 +319,35 @@ func testAccCheckSecretExists(tt *acctest.TestTools, n string) resource.TestChec |
316 | 319 |
|
317 | 320 | func testAccCheckSecretDestroy(tt *acctest.TestTools) resource.TestCheckFunc { |
318 | 321 | return func(state *terraform.State) error { |
319 | | - for _, rs := range state.RootModule().Resources { |
320 | | - if rs.Type != "scaleway_secret" { |
321 | | - continue |
322 | | - } |
| 322 | + ctx := context.Background() |
323 | 323 |
|
324 | | - api, region, id, err := secret.NewAPIWithRegionAndID(tt.Meta, rs.Primary.ID) |
325 | | - if err != nil { |
326 | | - return err |
327 | | - } |
| 324 | + return retry.RetryContext(ctx, 3*time.Minute, func() *retry.RetryError { |
| 325 | + for _, rs := range state.RootModule().Resources { |
| 326 | + if rs.Type != "scaleway_secret" { |
| 327 | + continue |
| 328 | + } |
328 | 329 |
|
329 | | - _, err = api.GetSecret(&secretSDK.GetSecretRequest{ |
330 | | - SecretID: id, |
331 | | - Region: region, |
332 | | - }) |
| 330 | + api, region, id, err := secret.NewAPIWithRegionAndID(tt.Meta, rs.Primary.ID) |
| 331 | + if err != nil { |
| 332 | + return retry.NonRetryableError(err) |
| 333 | + } |
333 | 334 |
|
334 | | - if err == nil { |
335 | | - return fmt.Errorf("secret (%s) still exists", rs.Primary.ID) |
336 | | - } |
| 335 | + _, err = api.GetSecret(&secretSDK.GetSecretRequest{ |
| 336 | + SecretID: id, |
| 337 | + Region: region, |
| 338 | + }) |
337 | 339 |
|
338 | | - if !httperrors.Is404(err) { |
339 | | - return err |
| 340 | + switch { |
| 341 | + case err == nil: |
| 342 | + return retry.RetryableError(fmt.Errorf("secret (%s) still exists", rs.Primary.ID)) |
| 343 | + case httperrors.Is404(err): |
| 344 | + continue |
| 345 | + default: |
| 346 | + return retry.NonRetryableError(err) |
| 347 | + } |
340 | 348 | } |
341 | | - } |
342 | 349 |
|
343 | | - return nil |
| 350 | + return nil |
| 351 | + }) |
344 | 352 | } |
345 | 353 | } |
0 commit comments