From f2f18768a8c705a0a15abe814aaa52640af0b279 Mon Sep 17 00:00:00 2001
From: baude <bbaude@redhat.com>
Date: Mon, 15 Feb 2021 09:32:49 -0600
Subject: Fix panic in pod creation

when creating a pod with --infra-image and using a untagged image for
the infra-image (none/none), the lookup for the image's name was
creating a panic.

Fixes: #9374

Signed-off-by: baude <bbaude@redhat.com>
---
 test/e2e/common_test.go     | 11 +++++++++--
 test/e2e/pod_create_test.go | 14 ++++++++++++++
 2 files changed, 23 insertions(+), 2 deletions(-)

(limited to 'test/e2e')

diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go
index d033cc646..12b30b2c5 100644
--- a/test/e2e/common_test.go
+++ b/test/e2e/common_test.go
@@ -436,13 +436,20 @@ func (p *PodmanTestIntegration) RunLsContainerInPod(name, pod string) (*PodmanSe
 
 // BuildImage uses podman build and buildah to build an image
 // called imageName based on a string dockerfile
-func (p *PodmanTestIntegration) BuildImage(dockerfile, imageName string, layers string) {
+func (p *PodmanTestIntegration) BuildImage(dockerfile, imageName string, layers string) string {
 	dockerfilePath := filepath.Join(p.TempDir, "Dockerfile")
 	err := ioutil.WriteFile(dockerfilePath, []byte(dockerfile), 0755)
 	Expect(err).To(BeNil())
-	session := p.Podman([]string{"build", "--layers=" + layers, "-t", imageName, "--file", dockerfilePath, p.TempDir})
+	cmd := []string{"build", "--layers=" + layers, "--file", dockerfilePath}
+	if len(imageName) > 0 {
+		cmd = append(cmd, []string{"-t", imageName}...)
+	}
+	cmd = append(cmd, p.TempDir)
+	session := p.Podman(cmd)
 	session.Wait(240)
 	Expect(session).Should(Exit(0), fmt.Sprintf("BuildImage session output: %q", session.OutputToString()))
+	output := session.OutputToStringArray()
+	return output[len(output)-1]
 }
 
 // PodmanPID execs podman and returns its PID
diff --git a/test/e2e/pod_create_test.go b/test/e2e/pod_create_test.go
index e57712f62..0a7a5101e 100644
--- a/test/e2e/pod_create_test.go
+++ b/test/e2e/pod_create_test.go
@@ -501,4 +501,18 @@ entrypoint ["/fromimage"]
 		Expect(session.OutputToString()).To(ContainSubstring("inet 127.0.0.1/8 scope host lo"))
 		Expect(len(session.OutputToStringArray())).To(Equal(1))
 	})
+
+	It("podman pod create --infra-image w/untagged image", func() {
+		podmanTest.AddImageToRWStore(ALPINE)
+		dockerfile := `FROM quay.io/libpod/alpine:latest
+ENTRYPOINT ["sleep","99999"]
+		`
+		// This builds a none/none image
+		iid := podmanTest.BuildImage(dockerfile, "", "true")
+
+		create := podmanTest.Podman([]string{"pod", "create", "--infra-image", iid})
+		create.WaitWithDefaultTimeout()
+		Expect(create.ExitCode()).To(BeZero())
+	})
+
 })
-- 
cgit v1.2.3-54-g00ecf