]> git.immae.eu Git - github/fretlink/terraform-provider-mailgun.git/commitdiff
replace sleep by resource.Retry 16/head
authorAlexandre Garand <alexandre.garand@fretlink.com>
Tue, 9 Jul 2019 11:48:52 +0000 (13:48 +0200)
committerAlexandre Garand <alexandre.garand@fretlink.com>
Tue, 9 Jul 2019 11:48:52 +0000 (13:48 +0200)
mailgun/resource_mailgun_domain.go
mailgun/resource_mailgun_domain_test.go

index e2bfe732e7fe68142addfe6e7e517f3868a52f33..c195cf0010bc1f98615f83b92d3982431a79ee44 100644 (file)
@@ -4,6 +4,7 @@ import (
        "context"
        "fmt"
        "github.com/hashicorp/terraform/helper/schema"
+       "github.com/hashicorp/terraform/helper/resource"
        "github.com/mailgun/mailgun-go/v3"
        "log"
        "time"
@@ -493,13 +494,18 @@ func ImportStatePassthroughDomain(d *schema.ResourceData, meta interface{}) ([]*
 }
 
 func getIps(ctx context.Context,mg *mailgun.MailgunImpl) ([]mailgun.IPAddress, error){
-       start := time.Now()
-       t := time.Now()
-       ipAddress, err := mg.ListDomainIPS(ctx)
-       for (err != nil && t.Sub(start)< 120 * time.Second) {
+       var ipAddress []mailgun.IPAddress
+       log.Printf("[DEBUG] begin to fetch ips for %s",mg.Domain())
+       err := resource.Retry(2*time.Minute, func() *resource.RetryError {
+               var err error
                ipAddress, err = mg.ListDomainIPS(ctx)
-               time.Sleep(5 * time.Second)
-               t = time.Now()
-       }
+               if err != nil {
+                       log.Printf("[DEBUG] failed to fetch ips for %s",mg.Domain())
+                       return resource.RetryableError(err)
+               }
+               log.Printf("[DEBUG] managed to fetch ips for %s",mg.Domain())
+
+               return nil
+       })
        return ipAddress, err
 }
index a129b1f1d2e9bb2527c614e1fe887ac3ee719015..57aa63060e5197b58ff15898fc44a601986d870f 100644 (file)
@@ -10,6 +10,7 @@ import (
        "strconv"
        "testing"
        "time"
+       "log"
 )
 
 type fullDomain struct {
@@ -210,13 +211,20 @@ func testAccDomainCheckDestroy(domain *fullDomain) resource.TestCheckFunc {
                mg := testAccProvider.Meta().(*mailgun.MailgunImpl)
                ctx, cancel := context.WithTimeout(context.Background(), time.Second*30)
                defer cancel()
-               time.Sleep(5 * time.Second)
-               _, err := mg.GetDomain(ctx, domain.domainResponse.Domain.Name)
-               if err == nil {
-                       return fmt.Errorf("domain still exists")
-               }
 
-               return nil
+               log.Printf("[DEBUG] try to fetch destroyed domain %s",mg.Domain())
+
+               return resource.Retry(1*time.Minute, func() *resource.RetryError {
+                       _, err := mg.GetDomain(ctx, domain.domainResponse.Domain.Name)
+                       if err == nil {
+                               log.Printf("[DEBUG] managed to fetch destroyed domain %s",mg.Domain())
+                               return resource.RetryableError(err)
+                       }
+
+                       log.Printf("[DEBUG] failed to fetch destroyed domain %s",mg.Domain())
+
+                       return nil
+               })
        }
 }