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