diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2022-07-04 07:13:51 -0400 |
---|---|---|
committer | Daniel J Walsh <dwalsh@redhat.com> | 2022-07-08 05:26:56 -0400 |
commit | 96dd57ca50de54e82cea177c317b92612ed1cf81 (patch) | |
tree | eca8422dc0416feb0dc3e5f9600a07fb2a544b97 /pkg | |
parent | a2bcf833c98cb38eb28dc65a8768963d0b7344fc (diff) | |
download | podman-96dd57ca50de54e82cea177c317b92612ed1cf81.tar.gz podman-96dd57ca50de54e82cea177c317b92612ed1cf81.tar.bz2 podman-96dd57ca50de54e82cea177c317b92612ed1cf81.zip |
podman wait can take multiple conditions
Podman wait should not be defaulting to just stopped. By default
wait API waits for stopped and exited. We should not override this on
the client side.
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/api/handlers/utils/containers.go | 14 | ||||
-rw-r--r-- | pkg/domain/infra/abi/containers.go | 3 |
2 files changed, 6 insertions, 11 deletions
diff --git a/pkg/api/handlers/utils/containers.go b/pkg/api/handlers/utils/containers.go index 80f8522fd..e198bdd6c 100644 --- a/pkg/api/handlers/utils/containers.go +++ b/pkg/api/handlers/utils/containers.go @@ -99,9 +99,8 @@ func WaitContainerDocker(w http.ResponseWriter, r *http.Request) { func WaitContainerLibpod(w http.ResponseWriter, r *http.Request) { var ( - err error - interval = time.Millisecond * 250 - conditions = []define.ContainerStatus{define.ContainerStateStopped, define.ContainerStateExited} + err error + interval = time.Millisecond * 250 ) decoder := r.Context().Value(api.DecoderKey).(*schema.Decoder) query := waitQueryLibpod{} @@ -118,17 +117,10 @@ func WaitContainerLibpod(w http.ResponseWriter, r *http.Request) { } } - if _, found := r.URL.Query()["condition"]; found { - if len(query.Condition) > 0 { - conditions = query.Condition - } - } - name := GetName(r) waitFn := createContainerWaitFn(r.Context(), name, interval) - - exitCode, err := waitFn(conditions...) + exitCode, err := waitFn(query.Condition...) if err != nil { if errors.Is(err, define.ErrNoSuchCtr) { ContainerNotFound(w, name, err) diff --git a/pkg/domain/infra/abi/containers.go b/pkg/domain/infra/abi/containers.go index 1688be57e..23a591604 100644 --- a/pkg/domain/infra/abi/containers.go +++ b/pkg/domain/infra/abi/containers.go @@ -101,6 +101,9 @@ func (ic *ContainerEngine) ContainerWait(ctx context.Context, namesOrIds []strin responses := make([]entities.WaitReport, 0, len(ctrs)) for _, c := range ctrs { response := entities.WaitReport{Id: c.ID()} + if options.Condition == nil { + options.Condition = []define.ContainerStatus{define.ContainerStateStopped, define.ContainerStateExited} + } exitCode, err := c.WaitForConditionWithInterval(ctx, options.Interval, options.Condition...) if err != nil { response.Error = err |