From df7abcfe9ba2a254394589c6d0efa422001cbe1d Mon Sep 17 00:00:00 2001 From: Gosuke Miyashita Date: Thu, 17 Nov 2016 20:41:54 +0900 Subject: [PATCH] Implement wait_for file --- lib/task/wait_for.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/task/wait_for.go b/lib/task/wait_for.go index c33b385..66ff2d0 100644 --- a/lib/task/wait_for.go +++ b/lib/task/wait_for.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "net" + "os" "strconv" "time" @@ -77,6 +78,31 @@ func connected(host string, port int) bool { } func (w *WaitFor) waitForFile(t *Task) { + log.Infof("[%s] wait_for: file %s %s", t.Name, w.File, w.State) + if w.State == "ready" || w.State == "present" { + for { + if isExist(w.File) { + return + } else { + time.Sleep(10 * time.Millisecond) + } + } + } + + if w.State == "unready" || w.State == "absent" { + for { + if !isExist(w.File) { + return + } else { + time.Sleep(10 * time.Millisecond) + } + } + } +} + +func isExist(file string) bool { + _, err := os.Stat(file) + return err == nil } func (w *WaitFor) validate() error {