diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-04-10 14:11:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-10 14:11:30 +0200 |
commit | 2a8db9d17c5dd762366fe7c90304e76337e5d668 (patch) | |
tree | 68c8f58631d70cdfff949d3a171581b236525a8e /pkg/domain/infra/abi/containers.go | |
parent | 838b5e1e387f6f6bdae06f053684832f77ca8796 (diff) | |
parent | 7d0e0a7129e18ca7295cf4b0fbec22d0df78d3dd (diff) | |
download | podman-2a8db9d17c5dd762366fe7c90304e76337e5d668.tar.gz podman-2a8db9d17c5dd762366fe7c90304e76337e5d668.tar.bz2 podman-2a8db9d17c5dd762366fe7c90304e76337e5d668.zip |
Merge pull request #5782 from baude/v2containercleanup
v2podman container cleanup
Diffstat (limited to 'pkg/domain/infra/abi/containers.go')
-rw-r--r-- | pkg/domain/infra/abi/containers.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/pkg/domain/infra/abi/containers.go b/pkg/domain/infra/abi/containers.go index 1aabb2a6b..7f8ec210b 100644 --- a/pkg/domain/infra/abi/containers.go +++ b/pkg/domain/infra/abi/containers.go @@ -757,3 +757,40 @@ func (ic *ContainerEngine) ContainerLogs(ctx context.Context, containers []strin return nil } + +func (ic *ContainerEngine) ContainerCleanup(ctx context.Context, namesOrIds []string, options entities.ContainerCleanupOptions) ([]*entities.ContainerCleanupReport, error) { + var reports []*entities.ContainerCleanupReport + ctrs, err := getContainersByContext(options.All, options.Latest, namesOrIds, ic.Libpod) + if err != nil { + return nil, err + } + for _, ctr := range ctrs { + var err error + report := entities.ContainerCleanupReport{Id: ctr.ID()} + if options.Remove { + err = ic.Libpod.RemoveContainer(ctx, ctr, false, true) + if err != nil { + report.RmErr = errors.Wrapf(err, "failed to cleanup and remove container %v", ctr.ID()) + } + } else { + err := ctr.Cleanup(ctx) + if err != nil { + report.CleanErr = errors.Wrapf(err, "failed to cleanup container %v", ctr.ID()) + } + } + + if options.RemoveImage { + _, imageName := ctr.Image() + ctrImage, err := ic.Libpod.ImageRuntime().NewFromLocal(imageName) + if err != nil { + report.RmiErr = err + reports = append(reports, &report) + continue + } + _, err = ic.Libpod.RemoveImage(ctx, ctrImage, false) + report.RmiErr = err + } + reports = append(reports, &report) + } + return reports, nil +} |