summaryrefslogtreecommitdiff
path: root/cmd/podman/system_prune.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman/system_prune.go')
-rw-r--r--cmd/podman/system_prune.go134
1 files changed, 0 insertions, 134 deletions
diff --git a/cmd/podman/system_prune.go b/cmd/podman/system_prune.go
deleted file mode 100644
index 21b7aa711..000000000
--- a/cmd/podman/system_prune.go
+++ /dev/null
@@ -1,134 +0,0 @@
-package main
-
-import (
- "bufio"
- "fmt"
- "os"
- "strings"
-
- "github.com/containers/libpod/cmd/podman/cliconfig"
- "github.com/containers/libpod/cmd/podman/shared"
- "github.com/containers/libpod/pkg/adapter"
- "github.com/pkg/errors"
- "github.com/sirupsen/logrus"
- "github.com/spf13/cobra"
-)
-
-var (
- pruneSystemCommand cliconfig.SystemPruneValues
- pruneSystemDescription = `
- podman system prune
-
- Remove unused data
-`
- _pruneSystemCommand = &cobra.Command{
- Use: "prune",
- Args: noSubArgs,
- Short: "Remove unused data",
- Long: pruneSystemDescription,
- RunE: func(cmd *cobra.Command, args []string) error {
- pruneSystemCommand.InputArgs = args
- pruneSystemCommand.GlobalFlags = MainGlobalOpts
- pruneSystemCommand.Remote = remoteclient
- return pruneSystemCmd(&pruneSystemCommand)
- },
- }
-)
-
-func init() {
- pruneSystemCommand.Command = _pruneSystemCommand
- pruneSystemCommand.SetHelpTemplate(HelpTemplate())
- pruneSystemCommand.SetUsageTemplate(UsageTemplate())
- flags := pruneSystemCommand.Flags()
- flags.BoolVarP(&pruneSystemCommand.All, "all", "a", false, "Remove all unused data")
- flags.BoolVarP(&pruneSystemCommand.Force, "force", "f", false, "Do not prompt for confirmation")
- flags.BoolVar(&pruneSystemCommand.Volume, "volumes", false, "Prune volumes")
-
-}
-
-func pruneSystemCmd(c *cliconfig.SystemPruneValues) error {
-
- // Prompt for confirmation if --force is not set
- if !c.Force {
- reader := bufio.NewReader(os.Stdin)
- volumeString := ""
- if c.Volume {
- volumeString = `
- - all volumes not used by at least one container`
- }
- fmt.Printf(`
-WARNING! This will remove:
- - all stopped containers%s
- - all stopped pods
- - all dangling images
- - all build cache
-Are you sure you want to continue? [y/N] `, volumeString)
- answer, err := reader.ReadString('\n')
- if err != nil {
- return errors.Wrapf(err, "error reading input")
- }
- if strings.ToLower(answer)[0] != 'y' {
- return nil
- }
- }
-
- runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
- if err != nil {
- return errors.Wrapf(err, "could not get runtime")
- }
- defer runtime.DeferredShutdown(false)
-
- // We must clean out pods first because if they may have infra containers
- fmt.Println("Deleted Pods")
- pruneValues := cliconfig.PodPruneValues{
- PodmanCommand: c.PodmanCommand,
- }
- ctx := getContext()
- ok, failures, lasterr := runtime.PrunePods(ctx, &pruneValues)
-
- if err := printCmdResults(ok, failures); err != nil {
- return err
- }
-
- rmWorkers := shared.Parallelize("rm")
- fmt.Println("Deleted Containers")
- ok, failures, err = runtime.Prune(ctx, rmWorkers, []string{})
- if err != nil {
- if lasterr != nil {
- logrus.Errorf("%q", err)
- }
- lasterr = err
- }
- if err := printCmdResults(ok, failures); err != nil {
- return err
- }
-
- if c.Bool("volumes") {
- fmt.Println("Deleted Volumes")
- err := volumePrune(runtime, getContext())
- if err != nil {
- if lasterr != nil {
- logrus.Errorf("%q", lasterr)
- }
- lasterr = err
- }
- }
-
- // Call prune; if any cids are returned, print them and then
- // return err in case an error also came up
- // TODO: support for filters in system prune
- pruneCids, err := runtime.PruneImages(ctx, c.All, []string{})
- if len(pruneCids) > 0 {
- fmt.Println("Deleted Images")
- for _, cid := range pruneCids {
- fmt.Println(cid)
- }
- }
- if err != nil {
- if lasterr != nil {
- logrus.Errorf("%q", lasterr)
- }
- lasterr = err
- }
- return lasterr
-}