Skip to content

Commit

Permalink
libpod API: return proper error status code for pod start
Browse files Browse the repository at this point in the history
When we failed to do anything we should return 500, the 409 code has a
special meaing to the client as it uses a different error format. As
such the remote client was not able to unmarshal the error correctly and
just returned an empty string.

Fixes #22989

Signed-off-by: Paul Holzinger <[email protected]>
  • Loading branch information
Luap99 committed Jun 24, 2024
1 parent 7b4f6ec commit 29ecf59
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 9 deletions.
6 changes: 3 additions & 3 deletions pkg/api/handlers/libpod/pods.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ func PodStart(w http.ResponseWriter, r *http.Request) {
}
status, err := pod.GetPodStatus()
if err != nil {
utils.Error(w, http.StatusInternalServerError, err)
utils.InternalServerError(w, err)
return
}
if status == define.PodStateRunning {
Expand All @@ -212,13 +212,13 @@ func PodStart(w http.ResponseWriter, r *http.Request) {

responses, err := pod.Start(r.Context())
if err != nil && !errors.Is(err, define.ErrPodPartialFail) {
utils.Error(w, http.StatusConflict, err)
utils.InternalServerError(w, err)
return
}

cfg, err := pod.Config()
if err != nil {
utils.Error(w, http.StatusConflict, err)
utils.InternalServerError(w, err)
return
}
report := entities.PodStartReport{
Expand Down
7 changes: 1 addition & 6 deletions test/e2e/pod_start_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,7 @@ var _ = Describe("Podman pod start", func() {

session := podmanTest.Podman([]string{"pod", "start", podid})
session.WaitWithDefaultTimeout()
expect := fmt.Sprintf("no containers in pod %s have no dependencies, cannot start pod: no such container", podid)
if IsRemote() {
// FIXME: #22989 no error message
expect = "Error:"
}
Expect(session).Should(ExitWithError(125, expect))
Expect(session).Should(ExitWithError(125, fmt.Sprintf("no containers in pod %s have no dependencies, cannot start pod: no such container", podid)))
})

It("podman pod start single pod by name", func() {
Expand Down

0 comments on commit 29ecf59

Please sign in to comment.