mirror of
https://github.com/containers/podman.git
synced 2025-06-23 18:59:30 +08:00
Merge pull request #6710 from vrothberg/fix-6413
libpod/containers/json: alias last -> limit
This commit is contained in:
@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/containers/libpod/pkg/ps"
|
"github.com/containers/libpod/pkg/ps"
|
||||||
"github.com/gorilla/schema"
|
"github.com/gorilla/schema"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ContainerExists(w http.ResponseWriter, r *http.Request) {
|
func ContainerExists(w http.ResponseWriter, r *http.Request) {
|
||||||
@ -36,7 +37,8 @@ func ListContainers(w http.ResponseWriter, r *http.Request) {
|
|||||||
query := struct {
|
query := struct {
|
||||||
All bool `schema:"all"`
|
All bool `schema:"all"`
|
||||||
Filters map[string][]string `schema:"filters"`
|
Filters map[string][]string `schema:"filters"`
|
||||||
Last int `schema:"last"`
|
Last int `schema:"last"` // alias for limit
|
||||||
|
Limit int `schema:"limit"`
|
||||||
Namespace bool `schema:"namespace"`
|
Namespace bool `schema:"namespace"`
|
||||||
Pod bool `schema:"pod"`
|
Pod bool `schema:"pod"`
|
||||||
Size bool `schema:"size"`
|
Size bool `schema:"size"`
|
||||||
@ -50,11 +52,22 @@ func ListContainers(w http.ResponseWriter, r *http.Request) {
|
|||||||
errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String()))
|
errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
limit := query.Limit
|
||||||
|
// Support `last` as an alias for `limit`. While Podman uses --last in
|
||||||
|
// the CLI, the API is using `limit`. As we first used `last` in the
|
||||||
|
// API as well, we decided to go with aliasing to prevent any
|
||||||
|
// regression. See github.com/containers/libpod/issues/6413.
|
||||||
|
if _, found := r.URL.Query()["last"]; found {
|
||||||
|
logrus.Info("List containers: received `last` parameter - overwriting `limit`")
|
||||||
|
limit = query.Last
|
||||||
|
}
|
||||||
|
|
||||||
runtime := r.Context().Value("runtime").(*libpod.Runtime)
|
runtime := r.Context().Value("runtime").(*libpod.Runtime)
|
||||||
opts := entities.ContainerListOptions{
|
opts := entities.ContainerListOptions{
|
||||||
All: query.All,
|
All: query.All,
|
||||||
Filters: query.Filters,
|
Filters: query.Filters,
|
||||||
Last: query.Last,
|
Last: limit,
|
||||||
Size: query.Size,
|
Size: query.Size,
|
||||||
Sort: "",
|
Sort: "",
|
||||||
Namespace: query.Namespace,
|
Namespace: query.Namespace,
|
||||||
|
@ -35,7 +35,7 @@ func List(ctx context.Context, filters map[string][]string, all *bool, last *int
|
|||||||
params.Set("all", strconv.FormatBool(*all))
|
params.Set("all", strconv.FormatBool(*all))
|
||||||
}
|
}
|
||||||
if last != nil {
|
if last != nil {
|
||||||
params.Set("last", strconv.Itoa(*last))
|
params.Set("limit", strconv.Itoa(*last))
|
||||||
}
|
}
|
||||||
if pod != nil {
|
if pod != nil {
|
||||||
params.Set("pod", strconv.FormatBool(*pod))
|
params.Set("pod", strconv.FormatBool(*pod))
|
||||||
|
@ -26,6 +26,27 @@ t GET libpod/containers/json?all=true 200 \
|
|||||||
.[0].ExitCode=0 \
|
.[0].ExitCode=0 \
|
||||||
.[0].IsInfra=false
|
.[0].IsInfra=false
|
||||||
|
|
||||||
|
# Make sure `limit` works.
|
||||||
|
t GET libpod/containers/json?limit=1 200 \
|
||||||
|
length=1 \
|
||||||
|
.[0].Id~[0-9a-f]\\{64\\} \
|
||||||
|
.[0].Image=$IMAGE \
|
||||||
|
.[0].Command[0]="true" \
|
||||||
|
.[0].State~\\\(exited\\\|stopped\\\) \
|
||||||
|
.[0].ExitCode=0 \
|
||||||
|
.[0].IsInfra=false
|
||||||
|
|
||||||
|
# Make sure `last` works, which is an alias for `limit`.
|
||||||
|
# See https://github.com/containers/libpod/issues/6413.
|
||||||
|
t GET libpod/containers/json?last=1 200 \
|
||||||
|
length=1 \
|
||||||
|
.[0].Id~[0-9a-f]\\{64\\} \
|
||||||
|
.[0].Image=$IMAGE \
|
||||||
|
.[0].Command[0]="true" \
|
||||||
|
.[0].State~\\\(exited\\\|stopped\\\) \
|
||||||
|
.[0].ExitCode=0 \
|
||||||
|
.[0].IsInfra=false
|
||||||
|
|
||||||
cid=$(jq -r '.[0].Id' <<<"$output")
|
cid=$(jq -r '.[0].Id' <<<"$output")
|
||||||
|
|
||||||
t DELETE libpod/containers/$cid 204
|
t DELETE libpod/containers/$cid 204
|
||||||
|
Reference in New Issue
Block a user