summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUrvashi Mohnani <umohnani@redhat.com>2022-01-06 07:56:20 -0500
committerUrvashi Mohnani <umohnani@redhat.com>2022-01-10 05:51:19 -0500
commit4dc5a5b15db4884101fc85a543ca356f3346ef6a (patch)
tree4eb665346a54479265c667127fa2794058a387de
parent6ed2c639ac614b8292660fda604d3a8f6cbb42b7 (diff)
downloadpodman-4dc5a5b15db4884101fc85a543ca356f3346ef6a.tar.gz
podman-4dc5a5b15db4884101fc85a543ca356f3346ef6a.tar.bz2
podman-4dc5a5b15db4884101fc85a543ca356f3346ef6a.zip
Don't add env if optional and not found
If the pod yaml has env from secret and condifg map but they are optional and the secret cannot be found, don't add the env key as well as the env value will not be found. Matches behavior with k8s. Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
-rw-r--r--pkg/specgen/generate/kube/kube.go5
-rw-r--r--test/e2e/play_kube_test.go10
2 files changed, 9 insertions, 6 deletions
diff --git a/pkg/specgen/generate/kube/kube.go b/pkg/specgen/generate/kube/kube.go
index 6d9f598c9..b41ee8db0 100644
--- a/pkg/specgen/generate/kube/kube.go
+++ b/pkg/specgen/generate/kube/kube.go
@@ -291,7 +291,10 @@ func ToSpecGen(ctx context.Context, opts *CtrSpecGenOptions) (*specgen.SpecGener
return nil, err
}
- envs[env.Name] = value
+ // Only set the env if the value is not ""
+ if value != "" {
+ envs[env.Name] = value
+ }
}
for _, envFrom := range opts.Container.EnvFrom {
cmEnvs, err := envVarsFrom(envFrom, opts)
diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go
index 1c7eb09a4..71bfd1e99 100644
--- a/test/e2e/play_kube_test.go
+++ b/test/e2e/play_kube_test.go
@@ -1659,7 +1659,7 @@ var _ = Describe("Podman play kube", func() {
inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod), "--format", "'{{ range .Config.Env }}[{{ . }}]{{end}}'"})
inspect.WaitWithDefaultTimeout()
Expect(inspect).Should(Exit(0))
- Expect(inspect.OutputToString()).To(ContainSubstring(`[FOO=]`))
+ Expect(inspect.OutputToString()).To(Not(ContainSubstring(`[FOO=]`)))
})
It("podman play kube test optional env value from missing configmap", func() {
@@ -1674,7 +1674,7 @@ var _ = Describe("Podman play kube", func() {
inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod), "--format", "'{{ range .Config.Env }}[{{ . }}]{{end}}'"})
inspect.WaitWithDefaultTimeout()
Expect(inspect).Should(Exit(0))
- Expect(inspect.OutputToString()).To(ContainSubstring(`[FOO=]`))
+ Expect(inspect.OutputToString()).To(Not(ContainSubstring(`[FOO=]`)))
})
It("podman play kube test get all key-value pairs from configmap as envs", func() {
@@ -1768,7 +1768,7 @@ var _ = Describe("Podman play kube", func() {
inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod), "--format", "'{{ range .Config.Env }}[{{ . }}]{{end}}'"})
inspect.WaitWithDefaultTimeout()
Expect(inspect).Should(Exit(0))
- Expect(inspect.OutputToString()).To(ContainSubstring(`[FOO=]`))
+ Expect(inspect.OutputToString()).To(Not(ContainSubstring(`[FOO=]`)))
})
It("podman play kube test optional env value from secret with missing key", func() {
@@ -1784,7 +1784,7 @@ var _ = Describe("Podman play kube", func() {
inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod), "--format", "'{{ range .Config.Env }}[{{ . }}]{{end}}'"})
inspect.WaitWithDefaultTimeout()
Expect(inspect).Should(Exit(0))
- Expect(inspect.OutputToString()).To(ContainSubstring(`[FOO=]`))
+ Expect(inspect.OutputToString()).To(Not(ContainSubstring(`[FOO=]`)))
})
It("podman play kube test get all key-value pairs from secret as envs", func() {
@@ -3212,7 +3212,7 @@ ENV OPENJ9_JAVA_OPTIONS=%q
inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod), "--format", "'{{ range .Config.Env }}[{{ . }}]{{end}}'"})
inspect.WaitWithDefaultTimeout()
Expect(inspect).Should(Exit(0))
- Expect(inspect.OutputToString()).To(ContainSubstring(`[FOO=]`))
+ Expect(inspect.OutputToString()).To(Not(ContainSubstring(`[FOO=]`)))
})
It("podman play kube uses all key-value pairs as envs", func() {