diff options
author | Jhon Honce <jhonce@redhat.com> | 2019-04-23 09:45:58 -0700 |
---|---|---|
committer | Jhon Honce <jhonce@redhat.com> | 2019-04-30 08:21:14 -0700 |
commit | 1b2419ceb15b3c29b71c7d909ae143670d8a3a36 (patch) | |
tree | abccda8c921bb7c2fed544dcf2fa8932164c44f0 /pkg/adapter | |
parent | 488117cb99705f6766ee82b78063951f87099b5b (diff) | |
download | podman-1b2419ceb15b3c29b71c7d909ae143670d8a3a36.tar.gz podman-1b2419ceb15b3c29b71c7d909ae143670d8a3a36.tar.bz2 podman-1b2419ceb15b3c29b71c7d909ae143670d8a3a36.zip |
Refactor container cleanup to use latest functions
Signed-off-by: Jhon Honce <jhonce@redhat.com>
Diffstat (limited to 'pkg/adapter')
-rw-r--r-- | pkg/adapter/containers.go | 42 | ||||
-rw-r--r-- | pkg/adapter/containers_remote.go | 5 |
2 files changed, 47 insertions, 0 deletions
diff --git a/pkg/adapter/containers.go b/pkg/adapter/containers.go index fb85e54ba..9ec897a60 100644 --- a/pkg/adapter/containers.go +++ b/pkg/adapter/containers.go @@ -834,3 +834,45 @@ func (r *LocalRuntime) Prune(ctx context.Context, maxWorkers int, force bool) ([ } return pool.Run() } + +// CleanupContainers any leftovers bits of stopped containers +func (r *LocalRuntime) CleanupContainers(ctx context.Context, cli *cliconfig.CleanupValues) ([]string, map[string]error, error) { + var ( + ok = []string{} + failures = map[string]error{} + ) + + ctrs, err := shortcuts.GetContainersByContext(cli.All, cli.Latest, cli.InputArgs, r.Runtime) + if err != nil { + return ok, failures, err + } + + for _, ctr := range ctrs { + if cli.Remove { + err = removeContainer(ctx, ctr, r) + } else { + err = cleanupContainer(ctx, ctr, r) + } + + if err == nil { + ok = append(ok, ctr.ID()) + } else { + failures[ctr.ID()] = err + } + } + return ok, failures, nil +} + +func removeContainer(ctx context.Context, ctr *libpod.Container, runtime *LocalRuntime) error { + if err := runtime.RemoveContainer(ctx, ctr, false, true); err != nil { + return errors.Wrapf(err, "failed to cleanup and remove container %v", ctr.ID()) + } + return nil +} + +func cleanupContainer(ctx context.Context, ctr *libpod.Container, runtime *LocalRuntime) error { + if err := ctr.Cleanup(ctx); err != nil { + return errors.Wrapf(err, "failed to cleanup container %v", ctr.ID()) + } + return nil +} diff --git a/pkg/adapter/containers_remote.go b/pkg/adapter/containers_remote.go index 93875dd8a..bcd29be38 100644 --- a/pkg/adapter/containers_remote.go +++ b/pkg/adapter/containers_remote.go @@ -880,3 +880,8 @@ func (r *LocalRuntime) Prune(ctx context.Context, maxWorkers int, force bool) ([ } return ok, failures, nil } + +// Cleanup any leftovers bits of stopped containers +func (r *LocalRuntime) CleanupContainers(ctx context.Context, cli *cliconfig.CleanupValues) ([]string, map[string]error, error) { + return nil, nil, errors.New("container cleanup not supported for remote clients") +} |