Merge pull request #14700 from shuttle-hq/bug/docker-compat-initialized

Docker compat returning unknown "initialized" for `status.status`
This commit is contained in:
openshift-ci[bot]
2022-06-28 14:07:04 +00:00
committed by GitHub
2 changed files with 31 additions and 5 deletions

View File

@ -289,8 +289,10 @@ func LibpodToContainer(l *libpod.Container, sz bool) (*handlers.Container, error
return nil, err return nil, err
} }
stateStr := state.String() stateStr := state.String()
if stateStr == "configured" {
stateStr = "created" // Some docker states are not the same as ours. This makes sure the state string stays true to the Docker API
if state == define.ContainerStateCreated {
stateStr = define.ContainerStateConfigured.String()
} }
switch state { switch state {
@ -420,9 +422,9 @@ func LibpodToContainerJSON(l *libpod.Container, sz bool) (*types.ContainerJSON,
state.Running = true state.Running = true
} }
// docker calls the configured state "created" // Dockers created state is our configured state
if state.Status == define.ContainerStateConfigured.String() { if state.Status == define.ContainerStateCreated.String() {
state.Status = define.ContainerStateCreated.String() state.Status = define.ContainerStateConfigured.String()
} }
if l.HasHealthCheck() && state.Status != "created" { if l.HasHealthCheck() && state.Status != "created" {

View File

@ -502,3 +502,27 @@ done
stop_service stop_service
start_service start_service
# Our states are different from Docker's.
# Regression test for #14700 (Docker compat returning unknown "initialized" for status.status) to ensure the stay compatible
podman create --name status-test $IMAGE sh -c "sleep 3"
t GET containers/status-test/json 200 .State.Status="created"
podman init status-test
t GET containers/status-test/json 200 .State.Status="created"
podman start status-test
t GET containers/status-test/json 200 .State.Status="running"
podman pause status-test
t GET containers/status-test/json 200 .State.Status="paused"
podman unpause status-test
t GET containers/status-test/json 200 .State.Status="running"
podman stop status-test &
sleep 1
t GET containers/status-test/json 200 .State.Status="stopping"
sleep 3
t GET containers/status-test/json 200 .State.Status="exited"