From 6408a05927e763b1ca02a8c46f0b4049734efac3 Mon Sep 17 00:00:00 2001 From: Daniel J Walsh Date: Wed, 15 May 2024 06:10:14 -0400 Subject: [PATCH] Return StatusNotFound when multiple volumes matching occurs Fixes #22616 Signed-off-by: Daniel J Walsh --- pkg/api/handlers/utils/errors.go | 16 +++++++++++----- test/e2e/volume_rm_test.go | 4 ---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pkg/api/handlers/utils/errors.go b/pkg/api/handlers/utils/errors.go index 2f97bd7168..f659aa06cc 100644 --- a/pkg/api/handlers/utils/errors.go +++ b/pkg/api/handlers/utils/errors.go @@ -34,23 +34,25 @@ func Error(w http.ResponseWriter, code int, err error) { } func VolumeNotFound(w http.ResponseWriter, name string, err error) { - if !errors.Is(err, define.ErrNoSuchVolume) { - InternalServerError(w, err) + if errors.Is(err, define.ErrNoSuchVolume) || errors.Is(err, define.ErrVolumeExists) { + Error(w, http.StatusNotFound, err) + return } - Error(w, http.StatusNotFound, err) + InternalServerError(w, err) } func ContainerNotFound(w http.ResponseWriter, name string, err error) { if errors.Is(err, define.ErrNoSuchCtr) || errors.Is(err, define.ErrCtrExists) { Error(w, http.StatusNotFound, err) - } else { - InternalServerError(w, err) + return } + InternalServerError(w, err) } func ImageNotFound(w http.ResponseWriter, name string, err error) { if !errors.Is(err, storage.ErrImageUnknown) { InternalServerError(w, err) + return } Error(w, http.StatusNotFound, err) } @@ -58,6 +60,7 @@ func ImageNotFound(w http.ResponseWriter, name string, err error) { func NetworkNotFound(w http.ResponseWriter, name string, err error) { if !errors.Is(err, define.ErrNoSuchNetwork) { InternalServerError(w, err) + return } Error(w, http.StatusNotFound, err) } @@ -65,6 +68,7 @@ func NetworkNotFound(w http.ResponseWriter, name string, err error) { func PodNotFound(w http.ResponseWriter, name string, err error) { if !errors.Is(err, define.ErrNoSuchPod) { InternalServerError(w, err) + return } Error(w, http.StatusNotFound, err) } @@ -72,6 +76,7 @@ func PodNotFound(w http.ResponseWriter, name string, err error) { func SessionNotFound(w http.ResponseWriter, name string, err error) { if !errors.Is(err, define.ErrNoSuchExecSession) { InternalServerError(w, err) + return } Error(w, http.StatusNotFound, err) } @@ -79,6 +84,7 @@ func SessionNotFound(w http.ResponseWriter, name string, err error) { func SecretNotFound(w http.ResponseWriter, nameOrID string, err error) { if errorhandling.Cause(err).Error() != "no such secret" { InternalServerError(w, err) + return } Error(w, http.StatusNotFound, err) } diff --git a/test/e2e/volume_rm_test.go b/test/e2e/volume_rm_test.go index c0d52144f7..59f611f131 100644 --- a/test/e2e/volume_rm_test.go +++ b/test/e2e/volume_rm_test.go @@ -105,10 +105,6 @@ var _ = Describe("Podman volume rm", func() { // boltdb issues volume name in quotes expect = `more than one result for volume name "myv": volume already exists` } - if IsRemote() { - // FIXME: #22616 - expect = `unmarshalling error into &errorhandling.ErrorModel` - } Expect(session).To(ExitWithError(125, expect)) session = podmanTest.Podman([]string{"volume", "ls"})