From e73c66cfc44e59ae380fedfedaefd553a58fa6f7 Mon Sep 17 00:00:00 2001 From: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Date: Mon, 31 Jan 2022 20:02:46 +0200 Subject: [PATCH] feat(common): force `NVIDIA_VISIBLE_DEVICES: "void"` when no GPU is assigned (#1819) * feat(common): force when no GPU is assigned * try this * adjust some tests? --- charts/library/common/Chart.yaml | 2 +- .../templates/lib/controller/_container.tpl | 4 ++ tests/library/common/container_spec.rb | 64 +++++++++---------- 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/charts/library/common/Chart.yaml b/charts/library/common/Chart.yaml index fddb1e05036..59990295cc6 100644 --- a/charts/library/common/Chart.yaml +++ b/charts/library/common/Chart.yaml @@ -15,4 +15,4 @@ maintainers: name: common sources: null type: library -version: 8.14.2 +version: 8.14.3 diff --git a/charts/library/common/templates/lib/controller/_container.tpl b/charts/library/common/templates/lib/controller/_container.tpl index 9c750357686..6b3f1a71c79 100644 --- a/charts/library/common/templates/lib/controller/_container.tpl +++ b/charts/library/common/templates/lib/controller/_container.tpl @@ -56,6 +56,10 @@ - name: S6_READ_ONLY_ROOT value: "1" {{- end }} + {{- if not ( .Values.scaleGPU ) }} + - name: NVIDIA_VISIBLE_DEVICES + value: "void" + {{- end }} {{- range $key, $value := .Values.envTpl }} - name: {{ $key }} value: {{ tpl $value $ | quote }} diff --git a/tests/library/common/container_spec.rb b/tests/library/common/container_spec.rb index 9eab6c06554..6d20520d423 100644 --- a/tests/library/common/container_spec.rb +++ b/tests/library/common/container_spec.rb @@ -101,14 +101,14 @@ class Test < ChartTest deployment = chart.resources(kind: "Deployment").first containers = deployment["spec"]["template"]["spec"]["containers"] mainContainer = containers.find{ |c| c["name"] == "common-test" } - assert_equal(values[:env].keys[0].to_s, mainContainer["env"][4]["name"]) - assert_equal(values[:env].values[0].to_s, mainContainer["env"][4]["value"]) - assert_equal(values[:env].keys[1].to_s, mainContainer["env"][5]["name"]) - assert_equal(values[:env].values[1].to_s, mainContainer["env"][5]["value"]) - assert_equal(values[:env].keys[2].to_s, mainContainer["env"][6]["name"]) - assert_equal(values[:env].values[2].to_s, mainContainer["env"][6]["value"]) - assert_equal(values[:env].keys[3].to_s, mainContainer["env"][7]["name"]) - assert_equal(values[:env].values[3].to_s, mainContainer["env"][7]["value"]) + assert_equal(values[:env].keys[0].to_s, mainContainer["env"][5]["name"]) + assert_equal(values[:env].values[0].to_s, mainContainer["env"][5]["value"]) + assert_equal(values[:env].keys[1].to_s, mainContainer["env"][6]["name"]) + assert_equal(values[:env].values[1].to_s, mainContainer["env"][6]["value"]) + assert_equal(values[:env].keys[2].to_s, mainContainer["env"][7]["name"]) + assert_equal(values[:env].values[2].to_s, mainContainer["env"][7]["value"]) + assert_equal(values[:env].keys[3].to_s, mainContainer["env"][8]["name"]) + assert_equal(values[:env].values[3].to_s, mainContainer["env"][8]["value"]) end it 'set list of static "kubernetes style" environment variables' do @@ -124,8 +124,8 @@ class Test < ChartTest deployment = chart.resources(kind: "Deployment").first containers = deployment["spec"]["template"]["spec"]["containers"] mainContainer = containers.find{ |c| c["name"] == "common-test" } - assert_equal(values[:envList][0][:name].to_s, mainContainer["env"][4]["name"]) - assert_equal(values[:envList][0][:value].to_s, mainContainer["env"][4]["value"]) + assert_equal(values[:envList][0][:name].to_s, mainContainer["env"][5]["name"]) + assert_equal(values[:envList][0][:value].to_s, mainContainer["env"][5]["value"]) end it 'set both static "k/v pair style" and static "k/valueFrom style" environment variables' do @@ -145,10 +145,10 @@ class Test < ChartTest deployment = chart.resources(kind: "Deployment").first containers = deployment["spec"]["template"]["spec"]["containers"] mainContainer = containers.find{ |c| c["name"] == "common-test" } - assert_equal(values[:env].keys[0].to_s, mainContainer["env"][4]["name"]) - assert_equal(values[:env].values[0].to_s, mainContainer["env"][4]["value"]) - assert_equal(values[:env].keys[1].to_s, mainContainer["env"][5]["name"]) - assert_equal(values[:env].values[1][:valueFrom][:fieldRef][:fieldPath], mainContainer["env"][5]["valueFrom"]["fieldRef"]["fieldPath"]) + assert_equal(values[:env].keys[0].to_s, mainContainer["env"][5]["name"]) + assert_equal(values[:env].values[0].to_s, mainContainer["env"][5]["value"]) + assert_equal(values[:env].keys[1].to_s, mainContainer["env"][6]["name"]) + assert_equal(values[:env].values[1][:valueFrom][:fieldRef][:fieldPath], mainContainer["env"][6]["valueFrom"]["fieldRef"]["fieldPath"]) end it 'set static "k/explicitValueFrom pair style" environment variables' do @@ -167,8 +167,8 @@ class Test < ChartTest deployment = chart.resources(kind: "Deployment").first containers = deployment["spec"]["template"]["spec"]["containers"] mainContainer = containers.find{ |c| c["name"] == "common-test" } - assert_equal(values[:env].keys[0].to_s, mainContainer["env"][4]["name"]) - assert_equal(values[:env].values[0][:valueFrom][:fieldRef][:fieldPath], mainContainer["env"][4]["valueFrom"]["fieldRef"]["fieldPath"]) + assert_equal(values[:env].keys[0].to_s, mainContainer["env"][5]["name"]) + assert_equal(values[:env].values[0][:valueFrom][:fieldRef][:fieldPath], mainContainer["env"][5]["valueFrom"]["fieldRef"]["fieldPath"]) end it 'set static "k/implicitValueFrom pair style" environment variables' do @@ -185,8 +185,8 @@ class Test < ChartTest deployment = chart.resources(kind: "Deployment").first containers = deployment["spec"]["template"]["spec"]["containers"] mainContainer = containers.find{ |c| c["name"] == "common-test" } - assert_equal(values[:env].keys[0].to_s, mainContainer["env"][4]["name"]) - assert_equal(values[:env].values[0][:fieldRef][:fieldPath], mainContainer["env"][4]["valueFrom"]["fieldRef"]["fieldPath"]) + assert_equal(values[:env].keys[0].to_s, mainContainer["env"][5]["name"]) + assert_equal(values[:env].values[0][:fieldRef][:fieldPath], mainContainer["env"][5]["valueFrom"]["fieldRef"]["fieldPath"]) end it 'set both static "k/v pair style" and templated "k/v pair style" environment variables' do @@ -200,10 +200,10 @@ class Test < ChartTest deployment = chart.resources(kind: "Deployment").first containers = deployment["spec"]["template"]["spec"]["containers"] mainContainer = containers.find{ |c| c["name"] == "common-test" } - assert_equal(values[:env].keys[0].to_s, mainContainer["env"][4]["name"]) - assert_equal("common-test-admin", mainContainer["env"][4]["value"]) - assert_equal(values[:env].keys[1].to_s, mainContainer["env"][5]["name"]) - assert_equal(values[:env].values[1].to_s, mainContainer["env"][5]["value"]) + assert_equal(values[:env].keys[0].to_s, mainContainer["env"][5]["name"]) + assert_equal("common-test-admin", mainContainer["env"][5]["value"]) + assert_equal(values[:env].keys[1].to_s, mainContainer["env"][6]["name"]) + assert_equal(values[:env].values[1].to_s, mainContainer["env"][6]["value"]) end it 'set templated "k/v pair style" environment variables' do @@ -216,8 +216,8 @@ class Test < ChartTest deployment = chart.resources(kind: "Deployment").first containers = deployment["spec"]["template"]["spec"]["containers"] mainContainer = containers.find{ |c| c["name"] == "common-test" } - assert_equal(values[:env].keys[0].to_s, mainContainer["env"][4]["name"]) - assert_equal("common-test-admin", mainContainer["env"][4]["value"]) + assert_equal(values[:env].keys[0].to_s, mainContainer["env"][5]["name"]) + assert_equal("common-test-admin", mainContainer["env"][5]["value"]) end it 'set static "k/v pair style", templated "k/v pair style", static "k/explicitValueFrom pair style", and static "k/implicitValueFrom pair style" environment variables' do @@ -243,14 +243,14 @@ class Test < ChartTest deployment = chart.resources(kind: "Deployment").first containers = deployment["spec"]["template"]["spec"]["containers"] mainContainer = containers.find{ |c| c["name"] == "common-test" } - assert_equal(values[:env].keys[0].to_s, mainContainer["env"][4]["name"]) - assert_equal("common-test-admin", mainContainer["env"][4]["value"]) - assert_equal(values[:env].keys[1].to_s, mainContainer["env"][5]["name"]) - assert_equal(values[:env].values[1].to_s, mainContainer["env"][5]["value"]) - assert_equal(values[:env].keys[2].to_s, mainContainer["env"][6]["name"]) - assert_equal(values[:env].values[2][:valueFrom][:fieldRef][:fieldPath], mainContainer["env"][6]["valueFrom"]["fieldRef"]["fieldPath"]) - assert_equal(values[:env].keys[3].to_s, mainContainer["env"][7]["name"]) - assert_equal(values[:env].values[3][:fieldRef][:fieldPath], mainContainer["env"][7]["valueFrom"]["fieldRef"]["fieldPath"]) + assert_equal(values[:env].keys[0].to_s, mainContainer["env"][5]["name"]) + assert_equal("common-test-admin", mainContainer["env"][5]["value"]) + assert_equal(values[:env].keys[1].to_s, mainContainer["env"][6]["name"]) + assert_equal(values[:env].values[1].to_s, mainContainer["env"][6]["value"]) + assert_equal(values[:env].keys[2].to_s, mainContainer["env"][7]["name"]) + assert_equal(values[:env].values[2][:valueFrom][:fieldRef][:fieldPath], mainContainer["env"][7]["valueFrom"]["fieldRef"]["fieldPath"]) + assert_equal(values[:env].keys[3].to_s, mainContainer["env"][8]["name"]) + assert_equal(values[:env].values[3][:fieldRef][:fieldPath], mainContainer["env"][8]["valueFrom"]["fieldRef"]["fieldPath"]) end it 'set "static" secret variables' do