diff --git a/cmd/podman/kube/play.go b/cmd/podman/kube/play.go index 01451bad4f..d4ee11f737 100644 --- a/cmd/podman/kube/play.go +++ b/cmd/podman/kube/play.go @@ -344,10 +344,12 @@ func teardown(body io.Reader, options entities.PlayKubeDownOptions, quiet bool) fmt.Println("Pods stopped:") } for _, stopped := range reports.StopReport { - if len(stopped.Errs) == 0 && !quiet { - fmt.Println(stopped.Id) - } else { + switch { + case len(stopped.Errs) > 0: podStopErrors = append(podStopErrors, stopped.Errs...) + case quiet: + default: + fmt.Println(stopped.Id) } } // Dump any stop errors @@ -361,10 +363,12 @@ func teardown(body io.Reader, options entities.PlayKubeDownOptions, quiet bool) fmt.Println("Pods removed:") } for _, removed := range reports.RmReport { - if removed.Err == nil && !quiet { - fmt.Println(removed.Id) - } else { + switch { + case removed.Err != nil: podRmErrors = append(podRmErrors, removed.Err) + case quiet: + default: + fmt.Println(removed.Id) } } @@ -378,10 +382,12 @@ func teardown(body io.Reader, options entities.PlayKubeDownOptions, quiet bool) fmt.Println("Volumes removed:") } for _, removed := range reports.VolumeRmReport { - if removed.Err == nil && !quiet { - fmt.Println(removed.Id) - } else { + switch { + case removed.Err != nil: volRmErrors = append(volRmErrors, removed.Err) + case quiet: + default: + fmt.Println(removed.Id) } } diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go index ff884831a9..c37a87c5b5 100644 --- a/test/e2e/play_kube_test.go +++ b/test/e2e/play_kube_test.go @@ -4519,6 +4519,38 @@ cgroups="disabled"`), 0644) Expect(kube).Should(Exit(0)) }) + It("podman kube --quiet with error", func() { + yaml := ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend +spec: + replicas: 2 + template: + metadata: + labels: + app: guestbook + tier: frontend + spec: + containers: + - name: php-redis + image: quay.io/libpod/alpine_nginx:latest + ports: + - containerPort: 1234 +` + + err = writeYaml(yaml, kubeYaml) + Expect(err).ToNot(HaveOccurred()) + + kube := podmanTest.Podman([]string{"kube", "play", "--quiet", kubeYaml}) + kube.WaitWithDefaultTimeout() + Expect(kube).To(ExitWithError()) + // The ugly format-error exited once in Podman. The test makes + // sure it's not coming back. + Expect(kube.ErrorToString()).To(Not(ContainSubstring("Error: %!s(<nil>)"))) + }) + It("podman kube play invalid yaml should clean up pod that was created before failure", func() { podTemplate := `--- apiVersion: v1