| package gophercloud | |
| import ( | |
| "fmt" | |
| "time" | |
| ) | |
| // WaitFor polls a predicate function once per second up to secs times to wait for a certain state to arrive. | |
| func WaitFor(secs int, predicate func() (bool, error)) error { | |
| for i := 0; i < secs; i++ { | |
| time.Sleep(1 * time.Second) | |
| satisfied, err := predicate() | |
| if err != nil { | |
| return err | |
| } | |
| if satisfied { | |
| return nil | |
| } | |
| } | |
| return fmt.Errorf("Time out in WaitFor.") | |
| } |