diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-05-05 17:25:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-05 17:25:04 +0200 |
commit | e6235ef8f1a3111f8f1afbb1bf64f0e6da704a5b (patch) | |
tree | 0e9adb10b78b589120b81b49c46b41cc75da7966 /pkg/bindings/images/rm.go | |
parent | 4a1331d0afd9a21ff9465916d4006ff7297ae07c (diff) | |
parent | 7f97896c59d23d9dda704b19203a9ceb49b57237 (diff) | |
download | podman-e6235ef8f1a3111f8f1afbb1bf64f0e6da704a5b.tar.gz podman-e6235ef8f1a3111f8f1afbb1bf64f0e6da704a5b.tar.bz2 podman-e6235ef8f1a3111f8f1afbb1bf64f0e6da704a5b.zip |
Merge pull request #6076 from vrothberg/rmi-v2.2
image removal: refactor part 2
Diffstat (limited to 'pkg/bindings/images/rm.go')
-rw-r--r-- | pkg/bindings/images/rm.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/pkg/bindings/images/rm.go b/pkg/bindings/images/rm.go new file mode 100644 index 000000000..e3b5590df --- /dev/null +++ b/pkg/bindings/images/rm.go @@ -0,0 +1,65 @@ +package images + +import ( + "context" + "net/http" + "net/url" + "strconv" + + "github.com/containers/libpod/pkg/api/handlers" + "github.com/containers/libpod/pkg/bindings" + "github.com/containers/libpod/pkg/domain/entities" + "github.com/containers/libpod/pkg/errorhandling" +) + +// BachtRemove removes a batch of images from the local storage. +func BatchRemove(ctx context.Context, images []string, opts entities.ImageRemoveOptions) (*entities.ImageRemoveReport, []error) { + // FIXME - bindings tests are missing for this endpoint. Once the CI is + // re-enabled for bindings, we need to add them. At the time of writing, + // the tests don't compile. + var report handlers.LibpodImagesRemoveReport + conn, err := bindings.GetClient(ctx) + if err != nil { + return nil, []error{err} + } + + params := url.Values{} + params.Set("all", strconv.FormatBool(opts.All)) + params.Set("force", strconv.FormatBool(opts.Force)) + for _, i := range images { + params.Add("images", i) + } + + response, err := conn.DoRequest(nil, http.MethodDelete, "/images/remove", params) + if err != nil { + return nil, []error{err} + } + if err := response.Process(&report); err != nil { + return nil, []error{err} + } + + return &report.ImageRemoveReport, errorhandling.StringsToErrors(report.Errors) +} + +// Remove removes an image from the local storage. Use force to remove an +// image, even if it's used by containers. +func Remove(ctx context.Context, nameOrID string, force bool) (*entities.ImageRemoveReport, error) { + var report handlers.LibpodImagesRemoveReport + conn, err := bindings.GetClient(ctx) + if err != nil { + return nil, err + } + + params := url.Values{} + params.Set("force", strconv.FormatBool(force)) + response, err := conn.DoRequest(nil, http.MethodDelete, "/images/%s/remove", params, nameOrID) + if err != nil { + return nil, err + } + if err := response.Process(&report); err != nil { + return nil, err + } + + errs := errorhandling.StringsToErrors(report.Errors) + return &report.ImageRemoveReport, errorhandling.JoinErrors(errs) +} |