From 14439b986924dd64c465e2f0df12f74e7334298e Mon Sep 17 00:00:00 2001
From: Benedikt Ziemons <ben@rs485.network>
Date: Wed, 23 Dec 2020 19:28:32 +0100
Subject: Set NetNS mode instead of value

when HostNetwork is true in the pod spec.
Also propagate whether host network namespace should be used for containers.

Add test for HostNetwork setting in kubeYaml.
The infra configuration should reflect the setting.

Signed-off-by: Benedikt Ziemons <ben@rs485.network>
---
 test/e2e/play_kube_test.go | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

(limited to 'test')

diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go
index ff3189038..f009e333e 100644
--- a/test/e2e/play_kube_test.go
+++ b/test/e2e/play_kube_test.go
@@ -62,6 +62,7 @@ metadata:
 spec:
   restartPolicy: {{ .RestartPolicy }}
   hostname: {{ .Hostname }}
+  hostNetwork: {{ .HostNetwork }}
   hostAliases:
 {{ range .HostAliases }}
   - hostnames:
@@ -220,6 +221,7 @@ spec:
     spec:
       restartPolicy: {{ .RestartPolicy }}
       hostname: {{ .Hostname }}
+      hostNetwork: {{ .HostNetwork }}
       containers:
     {{ with .Ctrs }}
       {{ range . }}
@@ -376,6 +378,7 @@ type Pod struct {
 	Name          string
 	RestartPolicy string
 	Hostname      string
+	HostNetwork   bool
 	HostAliases   []HostAlias
 	Ctrs          []*Ctr
 	Volumes       []*Volume
@@ -396,6 +399,7 @@ func getPod(options ...podOption) *Pod {
 		Name:          defaultPodName,
 		RestartPolicy: "Never",
 		Hostname:      "",
+		HostNetwork:   false,
 		HostAliases:   nil,
 		Ctrs:          make([]*Ctr, 0),
 		Volumes:       make([]*Volume, 0),
@@ -464,6 +468,12 @@ func withVolume(v *Volume) podOption {
 	}
 }
 
+func withHostNetwork() podOption {
+	return func(pod *Pod) {
+		pod.HostNetwork = true
+	}
+}
+
 // Deployment describes the options a kube yaml can be configured at deployment level
 type Deployment struct {
 	Name        string
@@ -1587,4 +1597,23 @@ MemoryReservation: {{ .HostConfig.MemoryReservation }}`})
 		Expect(inspect.ExitCode()).To(Equal(0))
 		Expect(inspect.OutputToString()).To(Equal("false"))
 	})
+
+	It("podman play kube test with HostNetwork", func() {
+		if !strings.Contains(podmanTest.OCIRuntime, "crun") {
+			Skip("Test only works on crun")
+		}
+
+		pod := getPod(withHostNetwork())
+		err := generateKubeYaml("pod", 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{"inspect", pod.Name, "--format", "{{ .InfraConfig.HostNetwork }}"})
+		inspect.WaitWithDefaultTimeout()
+		Expect(inspect.ExitCode()).To(Equal(0))
+		Expect(inspect.OutputToString()).To(Equal("true"))
+	})
 })
-- 
cgit v1.2.3-54-g00ecf