From a9e3f2cf3edd4963ee8d0aa6ed7c4d5242cb9a27 Mon Sep 17 00:00:00 2001 From: Michael Schurter Date: Mon, 6 Mar 2017 17:09:44 -0800 Subject: [PATCH] Replace "-" in env var keys with "_" Fixes #2405 --- client/driver/env/env.go | 8 ++++++++ client/driver/env/env_test.go | 23 +++++++++++++++++++++++ scripts/build.sh | 2 +- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/client/driver/env/env.go b/client/driver/env/env.go index 56f1cf322..d496209bd 100644 --- a/client/driver/env/env.go +++ b/client/driver/env/env.go @@ -251,6 +251,14 @@ func (t *TaskEnvironment) Build() *TaskEnvironment { t.TaskEnv[k] = v } + // Clean keys (see #2405) + cleanedEnv := make(map[string]string, len(t.TaskEnv)) + for k, v := range t.TaskEnv { + cleanedK := strings.Replace(k, "-", "_", -1) + cleanedEnv[cleanedK] = v + } + t.TaskEnv = cleanedEnv + return t } diff --git a/client/driver/env/env_test.go b/client/driver/env/env_test.go index ad0ded87d..60a441cde 100644 --- a/client/driver/env/env_test.go +++ b/client/driver/env/env_test.go @@ -267,3 +267,26 @@ func TestEnvironment_AppendHostEnvVars(t *testing.T) { t.Fatalf("Didn't filter environment variable %q", skip) } } + +// TestEnvironment_DashesInTaskName asserts dashes in port labels are properly +// converted to underscores in environment variables. +// See: https://github.com/hashicorp/nomad/issues/2405 +func TestEnvironment_DashesInTaskName(t *testing.T) { + env := testTaskEnvironment() + env.SetNetworks([]*structs.NetworkResource{ + { + Device: "eth0", + DynamicPorts: []structs.Port{ + { + Label: "just-some-dashes", + Value: 9000, + }, + }, + }, + }) + env.Build() + + if env.TaskEnv["NOMAD_PORT_just_some_dashes"] != "9000" { + t.Fatalf("Expected NOMAD_PORT_just_some_dashes=9000 in TaskEnv; found:\n%#v", env.TaskEnv) + } +} diff --git a/scripts/build.sh b/scripts/build.sh index c01ea0ab7..fb8aaf672 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -23,7 +23,7 @@ rm -rf pkg/* mkdir -p bin/ targets=$TARGETS -if [[ ! -z TARGETS ]]; then +if [ -z TARGETS ]; then if [[ $(uname) == "Linux" ]]; then targets="linux_386 linux_amd64 linux_amd64-lxc linux_arm linux_arm64 windows_386 windows_amd64" elif [[ $(uname) == "Darwin" ]]; then