Skip to content

Commit dea5b17

Browse files
committed
fix: ensure env vals are strings
1 parent 228cdfd commit dea5b17

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

submitter/adaptors/k8s_adaptor/resources/base.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from ruamel.yaml.scalarstring import DoubleQuotedScalarString as quoted_str
2+
13
WORKLOADS = ("Deployment", "DaemonSet", "StatefulSet", "Job", "Pod")
24

35
class Resource:
@@ -169,3 +171,21 @@ def __init__(self, app, name, manifest):
169171
self.spec = self.manifest.get("spec", {}).get("template", {}).get(
170172
"spec", None
171173
) or self.manifest.get("spec", {})
174+
if "containers" in self.spec:
175+
traverse_and_modify(self.spec["containers"])
176+
177+
def stringify_env_values(env_list):
178+
for env_var in env_list:
179+
if "value" in env_var:
180+
env_var['value'] = quoted_str(env_var['value'])
181+
182+
def traverse_and_modify(obj):
183+
if isinstance(obj, dict):
184+
for key, value in obj.items():
185+
if key == 'env' and isinstance(value, list):
186+
stringify_env_values(value)
187+
else:
188+
traverse_and_modify(value)
189+
elif isinstance(obj, list):
190+
for item in obj:
191+
traverse_and_modify(item)

submitter/adaptors/k8s_adaptor/resources/container.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import shlex
22

3+
from ruamel.yaml.scalarstring import DoubleQuotedScalarString as quoted_str
4+
35
# Swarm properties unsupported by Kubernetes and/or this adaptor
46
SWARM_PROPERTIES = (
57
"configs",
@@ -85,7 +87,7 @@ def _translate_docker_properties(self):
8587
self.spec.setdefault("env", _make_env(self.spec.pop("environment", {})))
8688
for env in self.spec.get("env", []):
8789
if "value" in env:
88-
env["value"] = str(env["value"])
90+
env["value"] = quoted_str(env["value"])
8991

9092
self.spec.setdefault("stdin", self.spec.pop("stdin_open", None))
9193
self.spec.setdefault("workingDir", self.spec.pop("working_dir", None))

0 commit comments

Comments
 (0)