Skip to content

Commit

Permalink
Merge pull request #7913 from andylibrian/kube-generate-support-resou…
Browse files Browse the repository at this point in the history
…rce-limits-7855

Add support for resource memory limit to generate kube
  • Loading branch information
openshift-merge-robot authored Oct 5, 2020
2 parents a9d572f + 62607e7 commit 436dda2
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 2 deletions.
16 changes: 14 additions & 2 deletions libpod/kube.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
25 changes: 25 additions & 0 deletions test/e2e/generate_kube_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"})
Expand Down

0 comments on commit 436dda2

Please sign in to comment.