summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hunt <pehunt@redhat.com>2019-07-17 12:46:31 -0400
committerPeter Hunt <pehunt@redhat.com>2019-07-17 12:59:50 -0400
commit6f35a5742313a8406bcc197e0696c504d18793ff (patch)
tree56bb94938f690356ed410ca670576c13c2755b7f
parent04a9cb01fec7a31a6ab4156f369a45399930e418 (diff)
downloadpodman-6f35a5742313a8406bcc197e0696c504d18793ff.tar.gz
podman-6f35a5742313a8406bcc197e0696c504d18793ff.tar.bz2
podman-6f35a5742313a8406bcc197e0696c504d18793ff.zip
Fix play kube command
Before, play kube wasn't properly setting the command. Fix this Also, begin a dedicated test suite for play kube to catch regressions like this in the future Signed-off-by: Peter Hunt <pehunt@redhat.com>
-rw-r--r--pkg/adapter/pods.go2
-rw-r--r--test/e2e/play_kube_test.go123
2 files changed, 124 insertions, 1 deletions
diff --git a/pkg/adapter/pods.go b/pkg/adapter/pods.go
index b45b02d09..2ca4f228f 100644
--- a/pkg/adapter/pods.go
+++ b/pkg/adapter/pods.go
@@ -676,7 +676,7 @@ func kubeContainerToCreateConfig(ctx context.Context, containerYAML v1.Container
if imageData != nil && imageData.Config != nil {
containerConfig.Command = append(containerConfig.Command, imageData.Config.Entrypoint...)
}
- if len(containerConfig.Command) != 0 {
+ if len(containerYAML.Command) != 0 {
containerConfig.Command = append(containerConfig.Command, containerYAML.Command...)
} else if imageData != nil && imageData.Config != nil {
containerConfig.Command = append(containerConfig.Command, imageData.Config.Cmd...)
diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go
new file mode 100644
index 000000000..a6f59a3da
--- /dev/null
+++ b/test/e2e/play_kube_test.go
@@ -0,0 +1,123 @@
+// +build !remoteclient
+
+package integration
+
+import (
+ "os"
+ "path/filepath"
+ "text/template"
+
+ . "github.com/containers/libpod/test/utils"
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+)
+
+var yamlTemplate = `
+apiVersion: v1
+kind: Pod
+metadata:
+ creationTimestamp: "2019-07-17T14:44:08Z"
+ labels:
+ app: {{ .Name }}
+ name: {{ .Name }}
+spec:
+ containers:
+{{ with .Containers }}
+ {{ range . }}
+ - command:
+ - {{ .Cmd }}
+ env:
+ - name: PATH
+ value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ - name: TERM
+ value: xterm
+ - name: HOSTNAME
+ - name: container
+ value: podman
+ image: {{ .Image }}
+ name: {{ .Name }}
+ resources: {}
+ securityContext:
+ allowPrivilegeEscalation: true
+ capabilities: {}
+ privileged: false
+ readOnlyRootFilesystem: false
+ workingDir: /
+ {{ end }}
+{{ end }}
+status: {}
+`
+
+type Pod struct {
+ Name string
+ Containers []Container
+}
+
+type Container struct {
+ Cmd string
+ Image string
+ Name string
+}
+
+func generateKubeYaml(ctrs []Container, fileName string) error {
+ f, err := os.Create(fileName)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+ testPod := Pod{"test", ctrs}
+
+ t, err := template.New("pod").Parse(yamlTemplate)
+ if err != nil {
+ return err
+ }
+
+ if err := t.Execute(f, testPod); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+var _ = Describe("Podman generate kube", func() {
+ var (
+ tempdir string
+ err error
+ podmanTest *PodmanTestIntegration
+ )
+
+ BeforeEach(func() {
+ tempdir, err = CreateTempDirInTempDir()
+ if err != nil {
+ os.Exit(1)
+ }
+ podmanTest = PodmanTestCreate(tempdir)
+ podmanTest.Setup()
+ podmanTest.SeedImages()
+ })
+
+ AfterEach(func() {
+ podmanTest.Cleanup()
+ f := CurrentGinkgoTestDescription()
+ processTestResult(f)
+ })
+
+ It("podman play kube test correct command", func() {
+ ctrName := "testCtr"
+ ctrCmd := "top"
+ testContainer := Container{ctrCmd, ALPINE, ctrName}
+ tempFile := filepath.Join(podmanTest.TempDir, "kube.yaml")
+
+ err := generateKubeYaml([]Container{testContainer}, tempFile)
+ Expect(err).To(BeNil())
+
+ kube := podmanTest.Podman([]string{"play", "kube", tempFile})
+ kube.WaitWithDefaultTimeout()
+ Expect(kube.ExitCode()).To(Equal(0))
+
+ inspect := podmanTest.Podman([]string{"inspect", ctrName})
+ inspect.WaitWithDefaultTimeout()
+ Expect(inspect.ExitCode()).To(Equal(0))
+ Expect(inspect.OutputToString()).To(ContainSubstring(ctrCmd))
+ })
+})