libpod API: return proper error status code for pod start

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 <pholzing@redhat.com>
This commit is contained in:
Paul Holzinger
2024-06-24 13:20:21 +02:00
parent 7b4f6ec576
commit 29ecf5984c
2 changed files with 4 additions and 9 deletions

View File

@ -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 {
@ -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{

View File

@ -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() {