]> git.immae.eu Git - github/fretlink/terraform-provider-mailgun.git/blobdiff - mailgun/resource_mailgun_domain.go
replace sleep by resource.Retry
[github/fretlink/terraform-provider-mailgun.git] / mailgun / resource_mailgun_domain.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
 }