Skip to content

Commit

Permalink
Merge pull request #12726 from hikhvar/remove-superflous-pod-rename
Browse files Browse the repository at this point in the history
Don't rename pod if container has the same name
  • Loading branch information
openshift-merge-robot authored Jan 7, 2022
2 parents 8a22384 + 4191616 commit 67dab9e
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 8 deletions.
9 changes: 1 addition & 8 deletions pkg/domain/infra/abi/play.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,17 +178,10 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
return nil, err
}

// check for name collision between pod and container
// Assert the pod has a name
if podName == "" {
return nil, errors.Errorf("pod does not have a name")
}
for _, n := range podYAML.Spec.Containers {
if n.Name == podName {
playKubePod.Logs = append(playKubePod.Logs,
fmt.Sprintf("a container exists with the same name (%q) as the pod in your YAML file; changing pod name to %s_pod\n", podName, podName))
podName = fmt.Sprintf("%s_pod", podName)
}
}

podOpt := entities.PodCreateOptions{Infra: true, Net: &entities.NetOptions{NoHosts: options.NoHosts}}
podOpt, err = kube.ToPodOpt(ctx, podName, podOpt, podYAML)
Expand Down
58 changes: 58 additions & 0 deletions test/e2e/play_kube_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,31 @@ metadata:
spec:
hostname: unknown
`

var podnameEqualsContainerNameYaml = `
apiVersion: v1
kind: Pod
metadata:
name: podnameEqualsContainerNameYaml
spec:
containers:
- name: podnameEqualsContainerNameYaml
image: quay.io/libpod/alpine:latest
ports:
- containerPort: 80
`

var podWithoutAName = `
apiVersion: v1
kind: Pod
spec:
containers:
- name: podDoesntHaveAName
image: quay.io/libpod/alpine:latest
ports:
- containerPort: 80
`

var checkInfraImagePodYaml = `
apiVersion: v1
kind: Pod
Expand Down Expand Up @@ -1278,6 +1303,39 @@ var _ = Describe("Podman play kube", func() {
Expect(sharednamespaces).To(ContainSubstring("pid"))
})

It("podman play kube should not rename pod if container in pod has same name", func() {
err := writeYaml(podnameEqualsContainerNameYaml, kubeYaml)
Expect(err).To(BeNil())

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

testPodCreated := podmanTest.Podman([]string{"pod", "exists", "podnameEqualsContainerNameYaml"})
testPodCreated.WaitWithDefaultTimeout()
Expect(testPodCreated).Should(Exit(0))

inspect := podmanTest.Podman([]string{"inspect", "podnameEqualsContainerNameYaml"})
inspect.WaitWithDefaultTimeout()
podInspect := inspect.InspectPodArrToJSON()
Expect(podInspect).Should(HaveLen(1))
var containerNames []string
for _, container := range podInspect[0].Containers {
containerNames = append(containerNames, container.Name)
}
Expect(containerNames).To(ContainElement("podnameEqualsContainerNameYaml-podnameEqualsContainerNameYaml"))
})

It("podman play kube should error if pod dont have a name", func() {
err := writeYaml(podWithoutAName, kubeYaml)
Expect(err).To(BeNil())

kube := podmanTest.Podman([]string{"play", "kube", kubeYaml})
kube.WaitWithDefaultTimeout()
Expect(kube).Should(Exit(125))

})

It("podman play kube support container liveness probe", func() {
err := writeYaml(livenessProbePodYaml, kubeYaml)
Expect(err).To(BeNil())
Expand Down

0 comments on commit 67dab9e

Please sign in to comment.