14325: Propagate API env vars to crunch-run.
[arvados.git] / lib / dispatchcloud / worker / worker.go
index a0a61c1597198171a54b0de373cc84761afacc58..1adc7c29fdf84c5acb15e87f8afc677ab4b9494b 100644 (file)
@@ -12,7 +12,7 @@ import (
 
        "git.curoverse.com/arvados.git/lib/cloud"
        "git.curoverse.com/arvados.git/sdk/go/arvados"
-       "github.com/Sirupsen/logrus"
+       "github.com/sirupsen/logrus"
 )
 
 // State indicates whether a worker is available to do work, and (if
@@ -86,7 +86,11 @@ func (wkr *worker) startContainer(ctr arvados.Container) {
        wkr.starting[ctr.UUID] = struct{}{}
        wkr.state = StateRunning
        go func() {
-               stdout, stderr, err := wkr.executor.Execute("crunch-run --detach '"+ctr.UUID+"'", nil)
+               env := map[string]string{
+                       "ARVADOS_API_HOST":  wkr.wp.arvClient.APIHost,
+                       "ARVADOS_API_TOKEN": wkr.wp.arvClient.AuthToken,
+               }
+               stdout, stderr, err := wkr.executor.Execute(env, "crunch-run --detach '"+ctr.UUID+"'", nil)
                wkr.mtx.Lock()
                defer wkr.mtx.Unlock()
                now := time.Now()
@@ -168,7 +172,10 @@ func (wkr *worker) probeAndUpdate() {
                        "Duration": dur,
                        "State":    wkr.state,
                })
-               if wkr.state == StateBooting {
+               if wkr.state == StateBooting && !needProbeRunning {
+                       // If we know the instance has never passed a
+                       // boot probe, it's not noteworthy that it
+                       // hasn't passed this probe.
                        logger.Debug("new instance not responding")
                } else {
                        logger.Info("instance not responding")
@@ -231,7 +238,7 @@ func (wkr *worker) probeAndUpdate() {
 
 func (wkr *worker) probeRunning() (running []string, ok bool, stderr []byte) {
        cmd := "crunch-run --list"
-       stdout, stderr, err := wkr.executor.Execute(cmd, nil)
+       stdout, stderr, err := wkr.executor.Execute(nil, cmd, nil)
        if err != nil {
                wkr.logger.WithFields(logrus.Fields{
                        "Command": cmd,
@@ -252,7 +259,7 @@ func (wkr *worker) probeBooted() (ok bool, stderr []byte) {
        if cmd == "" {
                cmd = "true"
        }
-       stdout, stderr, err := wkr.executor.Execute(cmd, nil)
+       stdout, stderr, err := wkr.executor.Execute(nil, cmd, nil)
        logger := wkr.logger.WithFields(logrus.Fields{
                "Command": cmd,
                "stdout":  string(stdout),