summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pkg/domain/infra/abi/play.go9
-rw-r--r--test/e2e/play_kube_test.go58
-rw-r--r--test/system/030-run.bats4
-rw-r--r--test/system/120-load.bats43
4 files changed, 80 insertions, 34 deletions
diff --git a/pkg/domain/infra/abi/play.go b/pkg/domain/infra/abi/play.go
index 6b3b04a0b..40c31b163 100644
--- a/pkg/domain/infra/abi/play.go
+++ b/pkg/domain/infra/abi/play.go
@@ -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)
diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go
index f79710ee6..1c7eb09a4 100644
--- a/test/e2e/play_kube_test.go
+++ b/test/e2e/play_kube_test.go
@@ -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
@@ -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())
diff --git a/test/system/030-run.bats b/test/system/030-run.bats
index 317026710..feca5370b 100644
--- a/test/system/030-run.bats
+++ b/test/system/030-run.bats
@@ -14,8 +14,8 @@ load helpers
# ...but check the configured runtime engine, and switch to crun as needed
run_podman info --format '{{ .Host.OCIRuntime.Path }}'
if expr "$output" : ".*/crun"; then
- err_no_such_cmd="Error:.*executable file.* not found in \$PATH: No such file or directory: OCI runtime attempted to invoke a command that was not found"
- err_no_exec_dir="Error:.*open executable: Operation not permitted: OCI permission denied"
+ err_no_such_cmd="Error: crun: executable file.* not found in \$PATH: No such file or directory: OCI runtime attempted to invoke a command that was not found"
+ err_no_exec_dir="Error: crun: open executable: Operation not permitted: OCI permission denied"
fi
tests="
diff --git a/test/system/120-load.bats b/test/system/120-load.bats
index 541095764..b1d181d50 100644
--- a/test/system/120-load.bats
+++ b/test/system/120-load.bats
@@ -79,31 +79,26 @@ verify_iid_and_name() {
}
@test "podman image scp transfer" {
- skip_if_root_ubuntu "cannot create a new user successfully on ubuntu"
+ skip_if_remote "only applicable under local podman"
+
+ skip "FIXME FIXME FIXME: this needs a big rewrite"
+
get_iid_and_name
- if ! is_remote; then
- if is_rootless; then
- whoami=$(id -un)
- run_podman image scp $whoami@localhost::$iid root@localhost::
- if [ "$status" -ne 0 ]; then
- die "Command failed: podman image scp transfer"
- fi
- whoami=$(id -un)
- run_podman image scp -q $whoami@localhost::$iid root@localhost::
- if [ "$status" -ne 0 ]; then
- die "Command failed: podman image scp quiet transfer failed"
- fi
- fi
- if ! is_rootless; then
- id -u 1000 &>/dev/null || useradd -u 1000 -g 1000 testingUsr
- if [ "$status" -ne 0 ]; then
- die "Command failed: useradd 1000"
- fi
- run_podman image scp root@localhost::$iid 1000:1000@localhost::
- if [ "$status" -ne 0 ]; then
- die "Command failed: podman image scp transfer"
- fi
- fi
+ if is_rootless; then
+ whoami=$(id -un)
+ # FIXME: first, test that we can sudo. If we can't, skip.
+ # FIXME: test 'scp $IMAGE root@localhost::'
+ # FIXME: then test the rest
+ # FIXME: check output
+ run_podman image scp $whoami@localhost::$iid root@localhost::
+ is "$output" "Loaded image.*: $iid" "...."
+
+ # FIXME: "-q" is a NOP
+ run_podman image scp -q $whoami@localhost::$iid root@localhost::
+ else
+ # root
+ # FIXME: identify a rootless user. DO NOT CREATE ONE.
+ run_podman image scp root@localhost::$iid 1000:1000@localhost::
fi
}