Merge branch '17335-oidc-auth-params'
[arvados.git] / lib / dispatchcloud / worker / runner.go
index e819a6036b341d5d2bbe28a242292296b5b36cd2..0fd99aeeef136cdc1113f55466b1342b7c975cc1 100644 (file)
@@ -8,6 +8,7 @@ import (
        "bytes"
        "encoding/json"
        "fmt"
+       "net"
        "syscall"
        "time"
 
@@ -20,6 +21,7 @@ type remoteRunner struct {
        uuid          string
        executor      Executor
        envJSON       json.RawMessage
+       runnerCmd     string
        remoteUser    string
        timeoutTERM   time.Duration
        timeoutSignal time.Duration
@@ -47,6 +49,8 @@ func newRemoteRunner(uuid string, wkr *worker) *remoteRunner {
                "ARVADOS_API_HOST":  wkr.wp.arvClient.APIHost,
                "ARVADOS_API_TOKEN": wkr.wp.arvClient.AuthToken,
                "InstanceType":      instJSON.String(),
+               "GatewayAddress":    net.JoinHostPort(wkr.instance.Address(), "0"),
+               "GatewayAuthSecret": wkr.wp.gatewayAuthSecret(uuid),
        }
        if wkr.wp.arvClient.Insecure {
                env["ARVADOS_API_HOST_INSECURE"] = "1"
@@ -59,6 +63,7 @@ func newRemoteRunner(uuid string, wkr *worker) *remoteRunner {
                uuid:          uuid,
                executor:      wkr.executor,
                envJSON:       envJSON,
+               runnerCmd:     wkr.wp.runnerCmd,
                remoteUser:    wkr.instance.RemoteUser(),
                timeoutTERM:   wkr.wp.timeoutTERM,
                timeoutSignal: wkr.wp.timeoutSignal,
@@ -76,7 +81,7 @@ func newRemoteRunner(uuid string, wkr *worker) *remoteRunner {
 // assume the remote process _might_ have started, at least until it
 // probes the worker and finds otherwise.
 func (rr *remoteRunner) Start() {
-       cmd := "crunch-run --detach --stdin-env '" + rr.uuid + "'"
+       cmd := rr.runnerCmd + " --detach --stdin-env '" + rr.uuid + "'"
        if rr.remoteUser != "root" {
                cmd = "sudo " + cmd
        }
@@ -136,7 +141,7 @@ func (rr *remoteRunner) Kill(reason string) {
 func (rr *remoteRunner) kill(sig syscall.Signal) {
        logger := rr.logger.WithField("Signal", int(sig))
        logger.Info("sending signal")
-       cmd := fmt.Sprintf("crunch-run --kill %d %s", sig, rr.uuid)
+       cmd := fmt.Sprintf(rr.runnerCmd+" --kill %d %s", sig, rr.uuid)
        if rr.remoteUser != "root" {
                cmd = "sudo " + cmd
        }