Skip to content

Commit

Permalink
Merge pull request #18068 from umohnani8/kube-name
Browse files Browse the repository at this point in the history
Fix invalid pod name and hostname during kube generate
  • Loading branch information
openshift-merge-robot authored Apr 6, 2023
2 parents 1946373 + d0ffb87 commit 85b1ea6
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
7 changes: 4 additions & 3 deletions libpod/kube.go
Original file line number Diff line number Diff line change
Expand Up @@ -470,8 +470,8 @@ func (p *Pod) podWithContainers(ctx context.Context, containers []*Container, po
// Since hostname is only set at pod level, set the hostname to the hostname of the first container we encounter
if hostname == "" {
// Only set the hostname if it is not set to the truncated container ID, which we do by default if no
// hostname is specified for the container
if !strings.Contains(ctr.ID(), ctr.Hostname()) {
// hostname is specified for the container and if it is not set to the pod name.
if !strings.Contains(ctr.ID(), ctr.Hostname()) && ctr.Hostname() != p.Name() {
hostname = ctr.Hostname()
}
}
Expand Down Expand Up @@ -533,9 +533,10 @@ func (p *Pod) podWithContainers(ctx context.Context, containers []*Container, po
for _, vol := range deDupPodVolumes {
podVolumes = append(podVolumes, *vol)
}
podName := removeUnderscores(p.Name())

return newPodObject(
p.Name(),
podName,
podAnnotations,
podInitCtrs,
podContainers,
Expand Down
22 changes: 22 additions & 0 deletions test/e2e/generate_kube_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1485,4 +1485,26 @@ USER test1`
kube.WaitWithDefaultTimeout()
Expect(kube).Should(Exit(125))
})

It("podman generate kube on pod with invalid name", func() {
podName := "test_pod"
session := podmanTest.Podman([]string{"pod", "create", podName})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))

session = podmanTest.Podman([]string{"create", "--pod", podName, "--restart", "no", ALPINE, "top"})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))

kube := podmanTest.Podman([]string{"generate", "kube", podName})
kube.WaitWithDefaultTimeout()
Expect(kube).Should(Exit(0))

pod := new(v1.Pod)
err := yaml.Unmarshal(kube.Out.Contents(), pod)
Expect(err).ToNot(HaveOccurred())
// The pod name should no longer have _ and there should be no hostname in the generated yaml
Expect(pod.Name).To(Equal("testpod"))
Expect(pod.Spec.Hostname).To(Equal(""))
})
})
2 changes: 1 addition & 1 deletion test/system/710-kube.bats
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ metadata.creationTimestamp | =~ | [0-9T:-]\\+Z
metadata.labels.app | = | ${pname}
metadata.name | = | ${pname}
spec.hostname | = | $pname
spec.hostname | = | null
spec.containers[0].command | = | [\"top\"]
spec.containers[0].image | = | $IMAGE
Expand Down

0 comments on commit 85b1ea6

Please sign in to comment.