diff --git a/client/driver/args/args.go b/client/driver/args/args.go index e40be3f29..9e8a9980c 100644 --- a/client/driver/args/args.go +++ b/client/driver/args/args.go @@ -9,13 +9,13 @@ var ( // ParseAndReplace takes the user supplied args and a map of environment // variables. It replaces any instance of an environment variable in the args // with the actual value. -func ParseAndReplace(args []string, env map[string]string) ([]string, error) { +func ParseAndReplace(args []string, env map[string]string) []string { replaced := make([]string, len(args)) for i, arg := range args { replaced[i] = ReplaceEnv(arg, env) } - return replaced, nil + return replaced } // ReplaceEnv takes an arg and replaces all occurences of environment variables. diff --git a/client/driver/args/args_test.go b/client/driver/args/args_test.go index e11b2cc8b..5e7cbca4a 100644 --- a/client/driver/args/args_test.go +++ b/client/driver/args/args_test.go @@ -23,10 +23,7 @@ var ( func TestDriverArgs_ParseAndReplaceInvalidEnv(t *testing.T) { input := []string{"invalid", "$FOO"} exp := []string{"invalid", "$FOO"} - act, err := ParseAndReplace(input, envVars) - if err != nil { - t.Fatalf("Failed to parse valid input args %v: %v", input, err) - } + act := ParseAndReplace(input, envVars) if !reflect.DeepEqual(act, exp) { t.Fatalf("ParseAndReplace(%v, %v) returned %#v; want %#v", input, envVars, act, exp) @@ -36,10 +33,7 @@ func TestDriverArgs_ParseAndReplaceInvalidEnv(t *testing.T) { func TestDriverArgs_ParseAndReplaceValidEnv(t *testing.T) { input := []string{"nomad_ip", fmt.Sprintf(`"$%v"!`, ipKey)} exp := []string{"nomad_ip", fmt.Sprintf("\"%s\"!", ipVal)} - act, err := ParseAndReplace(input, envVars) - if err != nil { - t.Fatalf("Failed to parse valid input args %v: %v", input, err) - } + act := ParseAndReplace(input, envVars) if !reflect.DeepEqual(act, exp) { t.Fatalf("ParseAndReplace(%v, %v) returned %#v; want %#v", input, envVars, act, exp) @@ -49,10 +43,7 @@ func TestDriverArgs_ParseAndReplaceValidEnv(t *testing.T) { func TestDriverArgs_ParseAndReplaceChainedEnv(t *testing.T) { input := []string{"-foo", fmt.Sprintf("$%s$%s", ipKey, portKey)} exp := []string{"-foo", fmt.Sprintf("%s%s", ipVal, portVal)} - act, err := ParseAndReplace(input, envVars) - if err != nil { - t.Fatalf("Failed to parse valid input args %v: %v", input, err) - } + act := ParseAndReplace(input, envVars) if !reflect.DeepEqual(act, exp) { t.Fatalf("ParseAndReplace(%v, %v) returned %#v; want %#v", input, envVars, act, exp) diff --git a/client/driver/docker.go b/client/driver/docker.go index 69aea2b73..4aa97e13b 100644 --- a/client/driver/docker.go +++ b/client/driver/docker.go @@ -293,10 +293,7 @@ func (d *DockerDriver) createContainer(ctx *ExecContext, task *structs.Task, dri config.ExposedPorts = exposedPorts } - parsedArgs, err := args.ParseAndReplace(driverConfig.Args, env.Map()) - if err != nil { - return c, err - } + parsedArgs := args.ParseAndReplace(driverConfig.Args, env.Map()) // If the user specified a custom command to run as their entrypoint, we'll // inject it here. diff --git a/client/driver/executor/exec_basic.go b/client/driver/executor/exec_basic.go index 8bf75c2ee..2ef4fbedc 100644 --- a/client/driver/executor/exec_basic.go +++ b/client/driver/executor/exec_basic.go @@ -62,11 +62,7 @@ func (e *BasicExecutor) Start() error { } e.cmd.Path = args.ReplaceEnv(e.cmd.Path, envVars.Map()) - parsed, err := args.ParseAndReplace(e.cmd.Args, envVars.Map()) - if err != nil { - return err - } - e.cmd.Args = parsed + e.cmd.Args = args.ParseAndReplace(e.cmd.Args, envVars.Map()) spawnState := filepath.Join(e.allocDir, fmt.Sprintf("%s_%s", e.taskName, "exit_status")) e.spawn = spawn.NewSpawner(spawnState) diff --git a/client/driver/executor/exec_linux.go b/client/driver/executor/exec_linux.go index c2f2931c0..43c9270e0 100644 --- a/client/driver/executor/exec_linux.go +++ b/client/driver/executor/exec_linux.go @@ -167,11 +167,7 @@ func (e *LinuxExecutor) Start() error { } e.cmd.Path = args.ReplaceEnv(e.cmd.Path, envVars.Map()) - parsed, err := args.ParseAndReplace(e.cmd.Args, envVars.Map()) - if err != nil { - return err - } - e.cmd.Args = parsed + e.cmd.Args = args.ParseAndReplace(e.cmd.Args, envVars.Map()) spawnState := filepath.Join(e.allocDir, fmt.Sprintf("%s_%s", e.taskName, "exit_status")) e.spawn = spawn.NewSpawner(spawnState) diff --git a/client/driver/rkt.go b/client/driver/rkt.go index d86129656..1fb6e9e06 100644 --- a/client/driver/rkt.go +++ b/client/driver/rkt.go @@ -151,10 +151,7 @@ func (d *RktDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, e // Add user passed arguments. if len(driverConfig.Args) != 0 { - parsed, err := args.ParseAndReplace(driverConfig.Args, envVars.Map()) - if err != nil { - return nil, err - } + parsed := args.ParseAndReplace(driverConfig.Args, envVars.Map()) // Need to start arguments with "--" if len(parsed) > 0 {