From 61227d660a95759bb80aa33dfe8fd1893b49d6f1 Mon Sep 17 00:00:00 2001 From: Duncan Mac-Vicar P Date: Fri, 6 May 2016 00:36:42 +0200 Subject: wait for refresh to happen as there may be async jobs running on the pool --- libvirt/utils.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'libvirt/utils.go') 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) + } + } +} -- cgit v1.2.3