Skip to content

Commit 6408a05

Browse files
committed
Return StatusNotFound when multiple volumes matching occurs
Fixes containers#22616 Signed-off-by: Daniel J Walsh <[email protected]>
1 parent 759e546 commit 6408a05

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

pkg/api/handlers/utils/errors.go

+11-5
Original file line numberDiff line numberDiff line change
@@ -34,51 +34,57 @@ func Error(w http.ResponseWriter, code int, err error) {
3434
}
3535

3636
func VolumeNotFound(w http.ResponseWriter, name string, err error) {
37-
if !errors.Is(err, define.ErrNoSuchVolume) {
38-
InternalServerError(w, err)
37+
if errors.Is(err, define.ErrNoSuchVolume) || errors.Is(err, define.ErrVolumeExists) {
38+
Error(w, http.StatusNotFound, err)
39+
return
3940
}
40-
Error(w, http.StatusNotFound, err)
41+
InternalServerError(w, err)
4142
}
4243

4344
func ContainerNotFound(w http.ResponseWriter, name string, err error) {
4445
if errors.Is(err, define.ErrNoSuchCtr) || errors.Is(err, define.ErrCtrExists) {
4546
Error(w, http.StatusNotFound, err)
46-
} else {
47-
InternalServerError(w, err)
47+
return
4848
}
49+
InternalServerError(w, err)
4950
}
5051

5152
func ImageNotFound(w http.ResponseWriter, name string, err error) {
5253
if !errors.Is(err, storage.ErrImageUnknown) {
5354
InternalServerError(w, err)
55+
return
5456
}
5557
Error(w, http.StatusNotFound, err)
5658
}
5759

5860
func NetworkNotFound(w http.ResponseWriter, name string, err error) {
5961
if !errors.Is(err, define.ErrNoSuchNetwork) {
6062
InternalServerError(w, err)
63+
return
6164
}
6265
Error(w, http.StatusNotFound, err)
6366
}
6467

6568
func PodNotFound(w http.ResponseWriter, name string, err error) {
6669
if !errors.Is(err, define.ErrNoSuchPod) {
6770
InternalServerError(w, err)
71+
return
6872
}
6973
Error(w, http.StatusNotFound, err)
7074
}
7175

7276
func SessionNotFound(w http.ResponseWriter, name string, err error) {
7377
if !errors.Is(err, define.ErrNoSuchExecSession) {
7478
InternalServerError(w, err)
79+
return
7580
}
7681
Error(w, http.StatusNotFound, err)
7782
}
7883

7984
func SecretNotFound(w http.ResponseWriter, nameOrID string, err error) {
8085
if errorhandling.Cause(err).Error() != "no such secret" {
8186
InternalServerError(w, err)
87+
return
8288
}
8389
Error(w, http.StatusNotFound, err)
8490
}

test/e2e/volume_rm_test.go

-4
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,6 @@ var _ = Describe("Podman volume rm", func() {
105105
// boltdb issues volume name in quotes
106106
expect = `more than one result for volume name "myv": volume already exists`
107107
}
108-
if IsRemote() {
109-
// FIXME: #22616
110-
expect = `unmarshalling error into &errorhandling.ErrorModel`
111-
}
112108
Expect(session).To(ExitWithError(125, expect))
113109

114110
session = podmanTest.Podman([]string{"volume", "ls"})

0 commit comments

Comments
 (0)