add "download consul binary" task
[arvados.git] / services / boot / task.go
1 package main
2
3 import (
4         "log"
5 )
6
7 func runTasks(tasks []task) {
8         for _, t := range tasks {
9                 err := t.Check()
10                 if err == nil {
11                         log.Printf("%s: OK", t)
12                         continue
13                 }
14                 log.Printf("%s: %s", t, err)
15                 if !t.CanFix() {
16                         log.Printf("%s: can't fix")
17                         continue
18                 }
19                 if err = t.Fix(); err != nil {
20                         log.Printf("%s: can't fix: %s", t, err)
21                         continue
22                 }
23                 if err = t.Check(); err != nil {
24                         log.Printf("%s: fixed, but still broken?!: %s", t, err)
25                         continue
26                 }
27                 log.Printf("%s: OK", t)
28         }
29 }
30
31 type task interface {
32         String() string
33         Check() error
34         CanFix() bool
35         Fix() error
36 }
37