mirror of
https://github.com/containers/podman.git
synced 2025-10-25 18:25:59 +08:00
generate kube: handle entrypoint
The spec of a Kube Container has a `Command` and `Args`. While both are slices, the `Command` is the counterpart of the entrypoint of a libpod container. Kube is also happily accepting the arguments to as following items in the slice but it's cleaner to move those to `Args`. Fixes: #9211 Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
package integration
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
@ -639,4 +640,63 @@ var _ = Describe("Podman generate kube", func() {
|
||||
Expect(pod.Spec.DNSConfig.Options[0].Name).To(Equal("color"))
|
||||
Expect(*pod.Spec.DNSConfig.Options[0].Value).To(Equal("blue"))
|
||||
})
|
||||
|
||||
It("podman generate kube - set entrypoint as command", func() {
|
||||
session := podmanTest.Podman([]string{"create", "--pod", "new:testpod", "--entrypoint", "/bin/sleep", ALPINE, "10s"})
|
||||
session.WaitWithDefaultTimeout()
|
||||
Expect(session.ExitCode()).To(Equal(0))
|
||||
|
||||
kube := podmanTest.Podman([]string{"generate", "kube", "testpod"})
|
||||
kube.WaitWithDefaultTimeout()
|
||||
Expect(kube.ExitCode()).To(Equal(0))
|
||||
|
||||
// Now make sure that the container's command is set to the
|
||||
// entrypoint and it's arguments to "10s".
|
||||
pod := new(v1.Pod)
|
||||
err := yaml.Unmarshal(kube.Out.Contents(), pod)
|
||||
Expect(err).To(BeNil())
|
||||
|
||||
containers := pod.Spec.Containers
|
||||
Expect(len(containers)).To(Equal(1))
|
||||
|
||||
Expect(containers[0].Command).To(Equal([]string{"/bin/sleep"}))
|
||||
Expect(containers[0].Args).To(Equal([]string{"10s"}))
|
||||
})
|
||||
|
||||
It("podman generate kube - use entrypoint from image", func() {
|
||||
// Build an image with an entrypoint.
|
||||
containerfile := `FROM quay.io/libpod/alpine:latest
|
||||
ENTRYPOINT /bin/sleep`
|
||||
|
||||
targetPath, err := CreateTempDirInTempDir()
|
||||
Expect(err).To(BeNil())
|
||||
containerfilePath := filepath.Join(targetPath, "Containerfile")
|
||||
err = ioutil.WriteFile(containerfilePath, []byte(containerfile), 0644)
|
||||
Expect(err).To(BeNil())
|
||||
|
||||
image := "generatekube:test"
|
||||
session := podmanTest.Podman([]string{"build", "-f", containerfilePath, "-t", image})
|
||||
session.WaitWithDefaultTimeout()
|
||||
Expect(session.ExitCode()).To(Equal(0))
|
||||
|
||||
session = podmanTest.Podman([]string{"create", "--pod", "new:testpod", image, "10s"})
|
||||
session.WaitWithDefaultTimeout()
|
||||
Expect(session.ExitCode()).To(Equal(0))
|
||||
|
||||
kube := podmanTest.Podman([]string{"generate", "kube", "testpod"})
|
||||
kube.WaitWithDefaultTimeout()
|
||||
Expect(kube.ExitCode()).To(Equal(0))
|
||||
|
||||
// Now make sure that the container's command is set to the
|
||||
// entrypoint and it's arguments to "10s".
|
||||
pod := new(v1.Pod)
|
||||
err = yaml.Unmarshal(kube.Out.Contents(), pod)
|
||||
Expect(err).To(BeNil())
|
||||
|
||||
containers := pod.Spec.Containers
|
||||
Expect(len(containers)).To(Equal(1))
|
||||
|
||||
Expect(containers[0].Command).To(Equal([]string{"/bin/sh", "-c", "/bin/sleep"}))
|
||||
Expect(containers[0].Args).To(Equal([]string{"10s"}))
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user