From 3b22faa24b9ba73f77b3257c4fea1315b5cff0d2 Mon Sep 17 00:00:00 2001
From: Ashley Cui <acui@redhat.com>
Date: Wed, 22 Jul 2020 13:58:54 -0400
Subject: Publish IP from YAML (podman play kube)

podman play kube didn't set host ip correctly from YAML

Signed-off-by: Ashley Cui <acui@redhat.com>
---
 test/e2e/play_kube_test.go | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

(limited to 'test')

diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go
index b1844b917..1637a7ab0 100644
--- a/test/e2e/play_kube_test.go
+++ b/test/e2e/play_kube_test.go
@@ -87,6 +87,11 @@ spec:
       {{ end }}
       privileged: false
       readOnlyRootFilesystem: false
+    ports:
+    - containerPort: {{ .Port }}
+      hostIP: {{ .HostIP }}
+      hostPort: {{ .Port }}
+      protocol: TCP
     workingDir: /
     {{ end }}
   {{ end }}
@@ -338,12 +343,14 @@ type Ctr struct {
 	CapAdd          []string
 	CapDrop         []string
 	PullPolicy      string
+	HostIP          string
+	Port            string
 }
 
 // getCtr takes a list of ctrOptions and returns a Ctr with sane defaults
 // and the configured options
 func getCtr(options ...ctrOption) *Ctr {
-	c := Ctr{defaultCtrName, defaultCtrImage, defaultCtrCmd, defaultCtrArg, true, false, nil, nil, ""}
+	c := Ctr{defaultCtrName, defaultCtrImage, defaultCtrCmd, defaultCtrArg, true, false, nil, nil, "", "", ""}
 	for _, option := range options {
 		option(&c)
 	}
@@ -396,6 +403,13 @@ func withPullPolicy(policy string) ctrOption {
 	}
 }
 
+func withHostIP(ip string, port string) ctrOption {
+	return func(c *Ctr) {
+		c.HostIP = ip
+		c.Port = port
+	}
+}
+
 func getCtrNameInPod(pod *Pod) string {
 	return fmt.Sprintf("%s-%s", pod.Name, defaultCtrName)
 }
@@ -815,4 +829,23 @@ spec:
 			Expect(inspect.OutputToString()).To(ContainSubstring(correctCmd))
 		}
 	})
+
+	It("podman play kube test with network portbindings", func() {
+		ip := "127.0.0.100"
+		port := "5000"
+		ctr := getCtr(withHostIP(ip, port), withImage(BB))
+
+		pod := getPod(withCtr(ctr))
+		err := generatePodKubeYaml(pod, kubeYaml)
+		Expect(err).To(BeNil())
+
+		kube := podmanTest.Podman([]string{"play", "kube", kubeYaml})
+		kube.WaitWithDefaultTimeout()
+		Expect(kube.ExitCode()).To(Equal(0))
+
+		inspect := podmanTest.Podman([]string{"port", getCtrNameInPod(pod)})
+		inspect.WaitWithDefaultTimeout()
+		Expect(inspect.ExitCode()).To(Equal(0))
+		Expect(inspect.OutputToString()).To(Equal("5000/tcp -> 127.0.0.100:5000"))
+	})
 })
-- 
cgit v1.2.3-54-g00ecf