diff options
author | Duncan Mac-Vicar P <dmacvicar@suse.de> | 2016-05-06 00:36:42 +0200 |
---|---|---|
committer | Duncan Mac-Vicar P <dmacvicar@suse.de> | 2016-05-06 00:36:42 +0200 |
commit | 61227d660a95759bb80aa33dfe8fd1893b49d6f1 (patch) | |
tree | 318728122d2ae34850c376ae24b6f4f12c952765 /libvirt/utils.go | |
parent | bcc2ddfc005964cb0d75b24a12c598436afe993b (diff) | |
download | terraform-provider-libvirt-61227d660a95759bb80aa33dfe8fd1893b49d6f1.tar terraform-provider-libvirt-61227d660a95759bb80aa33dfe8fd1893b49d6f1.tar.gz |
wait for refresh to happen as there may be async jobs running on the pool
Diffstat (limited to 'libvirt/utils.go')
-rw-r--r-- | libvirt/utils.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libvirt/utils.go b/libvirt/utils.go index deec2900..3dc8e17e 100644 --- a/libvirt/utils.go +++ b/libvirt/utils.go @@ -2,6 +2,7 @@ package libvirt import ( "fmt" + "time" ) var diskLetters []rune = []rune("abcdefghijklmnopqrstuvwxyz") @@ -18,3 +19,19 @@ func DiskLetterForIndex(i int) string { return fmt.Sprintf("%s%c", DiskLetterForIndex(q-1), letter) } + +// wait for success and timeout after 5 minutes. +func WaitForSuccess(errorMessage string, f func() error) error { + start := time.Now() + for { + err := f() + if err == nil { + return nil + } + + time.Sleep(1 * time.Second) + if time.Since(start) > 5*time.Minute { + return fmt.Errorf("%s: %s", errorMessage, err) + } + } +} |