tidy runit
[arvados.git] / services / boot / main.go
1 package main
2
3 import (
4         "context"
5         "encoding/json"
6         "flag"
7         "log"
8         "os"
9         "time"
10
11         "git.curoverse.com/arvados.git/sdk/go/config"
12 )
13
14 const defaultCfgPath = "/etc/arvados/boot/boot.yml"
15
16 func main() {
17         cfgPath := flag.String("config", defaultCfgPath, "`path` to config file")
18         flag.Parse()
19
20         cfg := DefaultConfig()
21         if err := config.LoadFile(cfg, *cfgPath); os.IsNotExist(err) && *cfgPath == defaultCfgPath {
22                 log.Printf("WARNING: No config file specified or found, starting fresh!")
23         } else if err != nil {
24                 log.Fatal(err)
25         }
26
27         enc := json.NewEncoder(os.Stderr)
28         enc.SetIndent("", "  ")
29         enc.Encode(cfg)
30
31         go runWebGUI(cfg)
32         go func() {
33                 var ctl Booter = &controller{}
34                 ticker := time.NewTicker(5 * time.Second)
35                 for {
36                         err := ctl.Boot(withCfg(context.Background(), cfg))
37                         if err != nil {
38                                 log.Printf("controller boot failed: %v", err)
39                         } else {
40                                 log.Printf("controller boot OK")
41                         }
42                         <-ticker.C
43                 }
44         }()
45         <-(chan struct{})(nil)
46 }