diff options
-rw-r--r-- | libpod/kube.go | 16 | ||||
-rw-r--r-- | test/e2e/generate_kube_test.go | 25 |
2 files changed, 39 insertions, 2 deletions
diff --git a/libpod/kube.go b/libpod/kube.go index f83e99d82..6df79e394 100644 --- a/libpod/kube.go +++ b/libpod/kube.go @@ -303,12 +303,24 @@ func containerToV1Container(c *Container) (v1.Container, []v1.Volume, error) { // This should not be applicable //container.EnvFromSource = kubeContainer.Env = envVariables - // TODO enable resources when we can support naming conventions - //container.Resources kubeContainer.SecurityContext = kubeSec kubeContainer.StdinOnce = false kubeContainer.TTY = c.config.Spec.Process.Terminal + // TODO add CPU limit support. + if c.config.Spec.Linux != nil && + c.config.Spec.Linux.Resources != nil && + c.config.Spec.Linux.Resources.Memory != nil && + c.config.Spec.Linux.Resources.Memory.Limit != nil { + if kubeContainer.Resources.Limits == nil { + kubeContainer.Resources.Limits = v1.ResourceList{} + } + + qty := kubeContainer.Resources.Limits.Memory() + qty.Set(*c.config.Spec.Linux.Resources.Memory.Limit) + kubeContainer.Resources.Limits[v1.ResourceMemory] = *qty + } + return kubeContainer, kubeVolumes, nil } diff --git a/test/e2e/generate_kube_test.go b/test/e2e/generate_kube_test.go index a3a841dc6..05a7f4ddf 100644 --- a/test/e2e/generate_kube_test.go +++ b/test/e2e/generate_kube_test.go @@ -235,6 +235,31 @@ var _ = Describe("Podman generate kube", func() { } }) + It("podman generate kube on pod with memory limit", func() { + podName := "testMemoryLimit" + podSession := podmanTest.Podman([]string{"pod", "create", "--name", podName}) + podSession.WaitWithDefaultTimeout() + Expect(podSession.ExitCode()).To(Equal(0)) + + ctr1Name := "ctr1" + ctr1Session := podmanTest.Podman([]string{"create", "--name", ctr1Name, "--pod", podName, "--memory", "10Mi", ALPINE, "top"}) + ctr1Session.WaitWithDefaultTimeout() + Expect(ctr1Session.ExitCode()).To(Equal(0)) + + kube := podmanTest.Podman([]string{"generate", "kube", podName}) + kube.WaitWithDefaultTimeout() + Expect(kube.ExitCode()).To(Equal(0)) + + pod := new(v1.Pod) + err := yaml.Unmarshal(kube.Out.Contents(), pod) + Expect(err).To(BeNil()) + + for _, ctr := range pod.Spec.Containers { + memoryLimit, _ := ctr.Resources.Limits.Memory().AsInt64() + Expect(memoryLimit).To(Equal(int64(10 * 1024 * 1024))) + } + }) + It("podman generate kube on pod with ports", func() { podName := "test" podSession := podmanTest.Podman([]string{"pod", "create", "--name", podName, "-p", "4000:4000", "-p", "5000:5000"}) |