summaryrefslogtreecommitdiff
path: root/libvirt/utils.go
diff options
context:
space:
mode:
authorDuncan Mac-Vicar P <dmacvicar@suse.de>2016-05-06 00:36:42 +0200
committerDuncan Mac-Vicar P <dmacvicar@suse.de>2016-05-06 00:36:42 +0200
commit61227d660a95759bb80aa33dfe8fd1893b49d6f1 (patch)
tree318728122d2ae34850c376ae24b6f4f12c952765 /libvirt/utils.go
parentbcc2ddfc005964cb0d75b24a12c598436afe993b (diff)
downloadterraform-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.go17
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)
+ }
+ }
+}