13 dispatchLocal = &arvadosGoBooter{name: "crunch-dispatch-local"}
14 dispatchSLURM = &arvadosGoBooter{name: "crunch-dispatch-slurm"}
15 gitHTTP = &arvadosGoBooter{name: "arvados-git-httpd", conf: "git-httpd"}
16 keepbalance = &arvadosGoBooter{name: "keep-balance", tmpl: keepbalanceTmpl}
17 keepproxy = &arvadosGoBooter{name: "keepproxy"}
18 keepstore = &arvadosGoBooter{name: "keepstore"}
19 websocket = &arvadosGoBooter{name: "arvados-ws", conf: "ws"}
21 keepbalanceTmpl = `{"RunPeriod":"1m"}`
24 type arvadosGoBooter struct {
30 func (agb *arvadosGoBooter) Boot(ctx context.Context) error {
40 cmd := path.Join(cfg.UsrDir, "bin", agb.name)
41 if _, err := os.Stat(cmd); err != nil {
42 if found, err := filepath.Glob(path.Join(cfg.UsrDir, "pkg", agb.name+"_*.deb")); err == nil && len(found) > 0 {
43 cmd := command("dpkg", "-i", found[0])
46 osPackageMutex.Unlock()
52 cfgPath := path.Join("/etc/arvados", agb.conf, agb.conf+".yml")
53 if err := os.MkdirAll(path.Dir(cfgPath), 0755); err != nil {
56 // ctmpl := []byte(fmt.Sprintf(`{{tree %q | explode | toJSONPretty}}`, agb.name))
58 if err := atomicWriteFile(cfgPath+".ctmpl", ctmpl, 0644); err != nil {
67 cmd: path.Join(cfg.UsrDir, "bin", "consul-template"),
69 "-consul-addr=" + fmt.Sprintf("0.0.0.0:%d", cfg.Ports.ConsulHTTP),
70 "-template=" + cfgPath + ".ctmpl:" + cfgPath,