|
1 | 1 | package mongodb_test |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "context" |
4 | 5 | "errors" |
5 | 6 | "fmt" |
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 | mongodbSDK "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1" |
@@ -497,30 +500,35 @@ func isMongoDBInstancePresent(tt *acctest.TestTools, n string) resource.TestChec |
497 | 500 |
|
498 | 501 | func IsInstanceDestroyed(tt *acctest.TestTools) resource.TestCheckFunc { |
499 | 502 | return func(state *terraform.State) error { |
500 | | - for _, rs := range state.RootModule().Resources { |
501 | | - if rs.Type != "scaleway_mongodb_instance" { |
502 | | - continue |
503 | | - } |
504 | | - |
505 | | - mongodbAPI, extractRegion, ID, err := mongodb.NewAPIWithRegionAndID(tt.Meta, rs.Primary.ID) |
506 | | - if err != nil { |
507 | | - return err |
508 | | - } |
| 503 | + ctx := context.Background() |
509 | 504 |
|
510 | | - _, err = mongodbAPI.GetInstance(&mongodbSDK.GetInstanceRequest{ |
511 | | - InstanceID: ID, |
512 | | - Region: extractRegion, |
513 | | - }) |
| 505 | + return retry.RetryContext(ctx, 3*time.Minute, func() *retry.RetryError { |
| 506 | + for _, rs := range state.RootModule().Resources { |
| 507 | + if rs.Type != "scaleway_mongodb_instance" { |
| 508 | + continue |
| 509 | + } |
514 | 510 |
|
515 | | - if err == nil { |
516 | | - return fmt.Errorf("instance (%s) still exists", rs.Primary.ID) |
517 | | - } |
| 511 | + api, region, id, err := mongodb.NewAPIWithRegionAndID(tt.Meta, rs.Primary.ID) |
| 512 | + if err != nil { |
| 513 | + return retry.NonRetryableError(err) |
| 514 | + } |
518 | 515 |
|
519 | | - if !httperrors.Is404(err) { |
520 | | - return err |
| 516 | + _, err = api.GetInstance(&mongodbSDK.GetInstanceRequest{ |
| 517 | + InstanceID: id, |
| 518 | + Region: region, |
| 519 | + }) |
| 520 | + |
| 521 | + switch { |
| 522 | + case err == nil: |
| 523 | + return retry.RetryableError(fmt.Errorf("mongodb instance (%s) still exists", rs.Primary.ID)) |
| 524 | + case httperrors.Is404(err): |
| 525 | + continue |
| 526 | + default: |
| 527 | + return retry.NonRetryableError(err) |
| 528 | + } |
521 | 529 | } |
522 | | - } |
523 | 530 |
|
524 | | - return nil |
| 531 | + return nil |
| 532 | + }) |
525 | 533 | } |
526 | 534 | } |
0 commit comments