Merge pull request #24275 from Luap99/wait-condition

libpod API: only return exit code without conditions
This commit is contained in:
openshift-merge-bot[bot]
2024-10-22 10:53:12 +00:00
committed by GitHub
2 changed files with 20 additions and 3 deletions

View File

@ -137,9 +137,11 @@ func WaitContainerLibpod(w http.ResponseWriter, r *http.Request) {
// However we keep the exit code around for longer than the container so
// we can just look it up here. Of course this only works when we get a
// full id as param but podman-remote will do that
if code, err := runtime.GetContainerExitCode(name); err == nil {
WriteResponse(w, http.StatusOK, strconv.Itoa(int(code)))
return
if len(opts.Conditions) == 0 {
if code, err := runtime.GetContainerExitCode(name); err == nil {
WriteResponse(w, http.StatusOK, strconv.Itoa(int(code)))
return
}
}
ContainerNotFound(w, name, err)
return

View File

@ -15,6 +15,12 @@ t POST "containers/nonExistent/wait?condition=next-exit" 404
# Make sure to test a non-zero exit code (see #18889)
podman create --name "${CTR}" "${IMAGE}" sh -c "exit 3"
t GET libpod/containers/${CTR}/json 200 \
.Id~[0-9a-f]\\{64\\}
# We need the cid for the wait test at the end
cid=$(jq -r '.Id' <<<"$output")
t POST "containers/${CTR}/wait?condition=non-existent-cond" 400
t POST "containers/${CTR}/wait?condition=not-running" 200
@ -49,3 +55,12 @@ t POST "containers/${CTR}/wait?condition=removed" 200 \
# work correctly.
t POST "containers/${CTR}/wait?condition=next-exit" 404
wait "${child_pid}"
t POST "libpod/containers/${CTR}/wait?condition=running" 404
t POST "libpod/containers/${cid}/wait?condition=running" 404
# The container no longer exists but we want to ensure the remote client
# can still fetch the exit code correctly until the exit code is pruned
# (after 5 mins) but only by the container id and not the name.
t POST "libpod/containers/${CTR}/wait" 404
t POST "libpod/containers/${cid}/wait" 200 \
"3"