"context"
"fmt"
"github.com/hashicorp/terraform/helper/schema"
+ "github.com/hashicorp/terraform/helper/resource"
"github.com/mailgun/mailgun-go/v3"
"log"
"time"
}
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
}
"strconv"
"testing"
"time"
+ "log"
)
type fullDomain struct {
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
+ })
}
}