diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-07-03 06:17:03 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-03 06:17:03 -0400 |
commit | 895b8151889422aac1f9b72eebe6d62e8e15095c (patch) | |
tree | 3694e61ecedcb8c8fb1b59dd12e1e882d7ce6ae0 /pkg/api/handlers/compat | |
parent | 07716133c44c9c9593364029f4b98085d1be3bdd (diff) | |
parent | 8f6a0243f4b7f861a116c0dba5967b3cfe23d61f (diff) | |
download | podman-895b8151889422aac1f9b72eebe6d62e8e15095c.tar.gz podman-895b8151889422aac1f9b72eebe6d62e8e15095c.tar.bz2 podman-895b8151889422aac1f9b72eebe6d62e8e15095c.zip |
Merge pull request #10836 from Luap99/diff
podman diff accept two images or containers
Diffstat (limited to 'pkg/api/handlers/compat')
-rw-r--r-- | pkg/api/handlers/compat/changes.go | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/pkg/api/handlers/compat/changes.go b/pkg/api/handlers/compat/changes.go index c442abbf9..dfe656755 100644 --- a/pkg/api/handlers/compat/changes.go +++ b/pkg/api/handlers/compat/changes.go @@ -4,14 +4,39 @@ import ( "net/http" "github.com/containers/podman/v3/libpod" + "github.com/containers/podman/v3/libpod/define" "github.com/containers/podman/v3/pkg/api/handlers/utils" + "github.com/gorilla/schema" + "github.com/pkg/errors" ) func Changes(w http.ResponseWriter, r *http.Request) { + decoder := r.Context().Value("decoder").(*schema.Decoder) runtime := r.Context().Value("runtime").(*libpod.Runtime) + query := struct { + Parent string `schema:"parent"` + DiffType string `schema:"diffType"` + }{} + if err := decoder.Decode(&query, r.URL.Query()); err != nil { + utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String())) + return + } + var diffType define.DiffType + switch query.DiffType { + case "", "all": + diffType = define.DiffAll + case "container": + diffType = define.DiffContainer + case "image": + diffType = define.DiffImage + default: + utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Errorf("invalid diffType value %q", query.DiffType)) + return + } + id := utils.GetName(r) - changes, err := runtime.GetDiff("", id) + changes, err := runtime.GetDiff(query.Parent, id, diffType) if err != nil { utils.InternalServerError(w, err) return |