github.com/adamar/terraform@v0.2.2-0.20141016210445-2e703afdad0e/helper/resource/wait.go (about) 1 package resource 2 3 import ( 4 "time" 5 ) 6 7 // RetryFunc is the function retried until it succeeds. 8 type RetryFunc func() error 9 10 // Retry is a basic wrapper around StateChangeConf that will just retry 11 // a function until it no longer returns an error. 12 func Retry(timeout time.Duration, f RetryFunc) error { 13 var err error 14 c := &StateChangeConf{ 15 Pending: []string{"error"}, 16 Target: "success", 17 Timeout: timeout, 18 MinTimeout: 500 * time.Millisecond, 19 Refresh: func() (interface{}, string, error) { 20 err = f() 21 if err != nil { 22 return 42, "error", nil 23 } 24 25 return 42, "success", nil 26 }, 27 } 28 29 c.WaitForState() 30 return err 31 }