From 69962682e990ddb9437291b98bd335e74c090fc8 Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Thu, 18 Apr 2019 10:34:27 -0700 Subject: Refactor of 'podman prune' to better support remote * Push iterations into the service not the client * Add e2e tests * Refactor to use new frameworks Signed-off-by: Jhon Honce --- cmd/podman/pods_prune.go | 64 +++++++++++------------------------------------- 1 file changed, 14 insertions(+), 50 deletions(-) (limited to 'cmd/podman/pods_prune.go') diff --git a/cmd/podman/pods_prune.go b/cmd/podman/pods_prune.go index 89401a98a..e6946f068 100644 --- a/cmd/podman/pods_prune.go +++ b/cmd/podman/pods_prune.go @@ -1,19 +1,15 @@ package main import ( - "context" - "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 ( - prunePodsCommand cliconfig.PrunePodsValues - prunePodsDescription = ` + podPruneCommand cliconfig.PodPruneValues + podPruneDescription = ` podman pod prune Removes all exited pods @@ -22,62 +18,30 @@ var ( Use: "prune", Args: noSubArgs, Short: "Remove all stopped pods", - Long: prunePodsDescription, + Long: podPruneDescription, RunE: func(cmd *cobra.Command, args []string) error { - prunePodsCommand.InputArgs = args - prunePodsCommand.GlobalFlags = MainGlobalOpts - return prunePodsCmd(&prunePodsCommand) + podPruneCommand.InputArgs = args + podPruneCommand.GlobalFlags = MainGlobalOpts + return podPruneCmd(&podPruneCommand) }, } ) func init() { - prunePodsCommand.Command = _prunePodsCommand - prunePodsCommand.SetHelpTemplate(HelpTemplate()) - prunePodsCommand.SetUsageTemplate(UsageTemplate()) - flags := prunePodsCommand.Flags() - flags.BoolVarP(&prunePodsCommand.Force, "force", "f", false, "Force removal of a running pods. The default is false") + podPruneCommand.Command = _prunePodsCommand + podPruneCommand.SetHelpTemplate(HelpTemplate()) + podPruneCommand.SetUsageTemplate(UsageTemplate()) + flags := podPruneCommand.Flags() + flags.BoolVarP(&podPruneCommand.Force, "force", "f", false, "Force removal of a running pods. The default is false") } -func prunePods(runtime *adapter.LocalRuntime, ctx context.Context, maxWorkers int, force bool) error { - var deleteFuncs []shared.ParallelWorkerInput - - states := []string{shared.PodStateStopped, shared.PodStateExited} - delPods, err := runtime.GetPodsByStatus(states) - if err != nil { - return err - } - if len(delPods) < 1 { - return nil - } - for _, pod := range delPods { - p := pod - f := func() error { - return runtime.RemovePod(ctx, p, force, force) - } - - deleteFuncs = append(deleteFuncs, shared.ParallelWorkerInput{ - ContainerID: p.ID(), - ParallelFunc: f, - }) - } - // Run the parallel funcs - deleteErrors, errCount := shared.ParallelExecuteWorkerPool(maxWorkers, deleteFuncs) - return printParallelOutput(deleteErrors, errCount) -} - -func prunePodsCmd(c *cliconfig.PrunePodsValues) error { +func podPruneCmd(c *cliconfig.PodPruneValues) error { runtime, err := adapter.GetRuntime(&c.PodmanCommand) if err != nil { return errors.Wrapf(err, "could not get runtime") } defer runtime.Shutdown(false) - maxWorkers := shared.Parallelize("rm") - if c.GlobalIsSet("max-workers") { - maxWorkers = c.GlobalFlags.MaxWorks - } - logrus.Debugf("Setting maximum workers to %d", maxWorkers) - - return prunePods(runtime, getContext(), maxWorkers, c.Bool("force")) + ok, failures, err := runtime.PrunePods(getContext(), c) + return printCmdResults(ok, failures) } -- cgit v1.2.3-54-g00ecf