mirror of
https://github.com/containers/podman.git
synced 2025-10-25 18:25:59 +08:00
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>
This commit is contained in:
@ -225,7 +225,10 @@ func (r *Runtime) createInfraContainer(ctx context.Context, p *Pod) (*Container,
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
imageName := newImage.Names()[0]
|
imageName := "none"
|
||||||
|
if len(newImage.Names()) > 0 {
|
||||||
|
imageName = newImage.Names()[0]
|
||||||
|
}
|
||||||
imageID := data.ID
|
imageID := data.ID
|
||||||
|
|
||||||
return r.makeInfraContainer(ctx, p, imageName, r.config.Engine.InfraImage, imageID, data.Config)
|
return r.makeInfraContainer(ctx, p, imageName, r.config.Engine.InfraImage, imageID, data.Config)
|
||||||
|
|||||||
@ -436,13 +436,20 @@ func (p *PodmanTestIntegration) RunLsContainerInPod(name, pod string) (*PodmanSe
|
|||||||
|
|
||||||
// BuildImage uses podman build and buildah to build an image
|
// BuildImage uses podman build and buildah to build an image
|
||||||
// called imageName based on a string dockerfile
|
// 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")
|
dockerfilePath := filepath.Join(p.TempDir, "Dockerfile")
|
||||||
err := ioutil.WriteFile(dockerfilePath, []byte(dockerfile), 0755)
|
err := ioutil.WriteFile(dockerfilePath, []byte(dockerfile), 0755)
|
||||||
Expect(err).To(BeNil())
|
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)
|
session.Wait(240)
|
||||||
Expect(session).Should(Exit(0), fmt.Sprintf("BuildImage session output: %q", session.OutputToString()))
|
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
|
// PodmanPID execs podman and returns its PID
|
||||||
|
|||||||
@ -501,4 +501,18 @@ entrypoint ["/fromimage"]
|
|||||||
Expect(session.OutputToString()).To(ContainSubstring("inet 127.0.0.1/8 scope host lo"))
|
Expect(session.OutputToString()).To(ContainSubstring("inet 127.0.0.1/8 scope host lo"))
|
||||||
Expect(len(session.OutputToStringArray())).To(Equal(1))
|
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())
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user