summaryrefslogtreecommitdiff
path: root/cmd/podman
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman')
-rw-r--r--cmd/podman/cleanup.go39
-rw-r--r--cmd/podman/commands.go3
-rw-r--r--cmd/podman/common.go4
-rw-r--r--cmd/podman/container.go2
-rw-r--r--cmd/podman/containers_prune.go56
-rw-r--r--cmd/podman/shared/create.go1
-rw-r--r--cmd/podman/shared/intermediate.go1
-rw-r--r--cmd/podman/system.go1
-rw-r--r--cmd/podman/system_prune.go5
9 files changed, 35 insertions, 77 deletions
diff --git a/cmd/podman/cleanup.go b/cmd/podman/cleanup.go
index 9434c68ba..4ff744ae5 100644
--- a/cmd/podman/cleanup.go
+++ b/cmd/podman/cleanup.go
@@ -1,11 +1,8 @@
package main
import (
- "fmt"
- "os"
-
"github.com/containers/libpod/cmd/podman/cliconfig"
- "github.com/containers/libpod/cmd/podman/libpodruntime"
+ "github.com/containers/libpod/pkg/adapter"
"github.com/pkg/errors"
"github.com/spf13/cobra"
)
@@ -49,38 +46,16 @@ func init() {
}
func cleanupCmd(c *cliconfig.CleanupValues) error {
- runtime, err := libpodruntime.GetRuntime(getContext(), &c.PodmanCommand)
+ runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil {
return errors.Wrapf(err, "could not get runtime")
}
defer runtime.Shutdown(false)
- cleanupContainers, lastError := getAllOrLatestContainers(&c.PodmanCommand, runtime, -1, "all")
-
- ctx := getContext()
-
- for _, ctr := range cleanupContainers {
- hadError := false
- if c.Remove {
- if err := runtime.RemoveContainer(ctx, ctr, false, true); err != nil {
- if lastError != nil {
- fmt.Fprintln(os.Stderr, lastError)
- }
- lastError = errors.Wrapf(err, "failed to cleanup and remove container %v", ctr.ID())
- hadError = true
- }
- } else {
- if err := ctr.Cleanup(ctx); err != nil {
- if lastError != nil {
- fmt.Fprintln(os.Stderr, lastError)
- }
- lastError = errors.Wrapf(err, "failed to cleanup container %v", ctr.ID())
- hadError = true
- }
- }
- if !hadError {
- fmt.Println(ctr.ID())
- }
+ ok, failures, err := runtime.CleanupContainers(getContext(), c)
+ if err != nil {
+ return err
}
- return lastError
+
+ return printCmdResults(ok, failures)
}
diff --git a/cmd/podman/commands.go b/cmd/podman/commands.go
index 36c28696f..4b0641d82 100644
--- a/cmd/podman/commands.go
+++ b/cmd/podman/commands.go
@@ -46,12 +46,10 @@ func getContainerSubCommands() []*cobra.Command {
_execCommand,
_mountCommand,
_portCommand,
- _pruneContainersCommand,
_refreshCommand,
_restoreCommand,
_runlabelCommand,
_statsCommand,
- _stopCommand,
_umountCommand,
}
}
@@ -74,7 +72,6 @@ func getTrustSubCommands() []*cobra.Command {
// Commands that the local client implements
func getSystemSubCommands() []*cobra.Command {
return []*cobra.Command{
- _pruneSystemCommand,
_renumberCommand,
_dfSystemCommand,
_migrateCommand,
diff --git a/cmd/podman/common.go b/cmd/podman/common.go
index eac96d3ba..b02aa5990 100644
--- a/cmd/podman/common.go
+++ b/cmd/podman/common.go
@@ -313,6 +313,10 @@ func getCreateFlags(c *cliconfig.PodmanCommand) {
"hostname", "h", "",
"Set container hostname",
)
+ createFlags.Bool(
+ "http-proxy", true,
+ "Set proxy environment variables in container based on the host proxy vars",
+ )
createFlags.String(
"image-volume", cliconfig.DefaultImageVolume,
"Tells podman how to handle the builtin image volumes. The options are: 'bind', 'tmpfs', or 'ignore'",
diff --git a/cmd/podman/container.go b/cmd/podman/container.go
index 52152d50e..b3058bf12 100644
--- a/cmd/podman/container.go
+++ b/cmd/podman/container.go
@@ -61,9 +61,11 @@ var (
_logsCommand,
_pauseCommand,
_restartCommand,
+ _pruneContainersCommand,
_runCommand,
_rmCommand,
_startCommand,
+ _stopCommand,
_topCommand,
_unpauseCommand,
_waitCommand,
diff --git a/cmd/podman/containers_prune.go b/cmd/podman/containers_prune.go
index 8270669c9..b052bda36 100644
--- a/cmd/podman/containers_prune.go
+++ b/cmd/podman/containers_prune.go
@@ -1,14 +1,11 @@
package main
import (
- "context"
-
"github.com/containers/libpod/cmd/podman/cliconfig"
"github.com/containers/libpod/cmd/podman/shared"
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/pkg/adapter"
"github.com/pkg/errors"
- "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)
@@ -41,39 +38,6 @@ func init() {
flags.BoolVarP(&pruneContainersCommand.Force, "force", "f", false, "Force removal of a running container. The default is false")
}
-func pruneContainers(runtime *adapter.LocalRuntime, ctx context.Context, maxWorkers int, force, volumes bool) error {
- var deleteFuncs []shared.ParallelWorkerInput
-
- filter := func(c *libpod.Container) bool {
- state, err := c.State()
- if state == libpod.ContainerStateStopped || (state == libpod.ContainerStateExited && err == nil && c.PodID() == "") {
- return true
- }
- return false
- }
- delContainers, err := runtime.GetContainers(filter)
- if err != nil {
- return err
- }
- if len(delContainers) < 1 {
- return nil
- }
- for _, container := range delContainers {
- con := container
- f := func() error {
- return runtime.RemoveContainer(ctx, con, force, volumes)
- }
-
- deleteFuncs = append(deleteFuncs, shared.ParallelWorkerInput{
- ContainerID: con.ID(),
- ParallelFunc: f,
- })
- }
- // Run the parallel funcs
- deleteErrors, errCount := shared.ParallelExecuteWorkerPool(maxWorkers, deleteFuncs)
- return printParallelOutput(deleteErrors, errCount)
-}
-
func pruneContainersCmd(c *cliconfig.PruneContainersValues) error {
runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
if err != nil {
@@ -81,11 +45,23 @@ func pruneContainersCmd(c *cliconfig.PruneContainersValues) error {
}
defer runtime.Shutdown(false)
- maxWorkers := shared.Parallelize("rm")
+ maxWorkers := shared.DefaultPoolSize("prune")
if c.GlobalIsSet("max-workers") {
maxWorkers = c.GlobalFlags.MaxWorks
}
- logrus.Debugf("Setting maximum workers to %d", maxWorkers)
-
- return pruneContainers(runtime, getContext(), maxWorkers, c.Bool("force"), c.Bool("volumes"))
+ ok, failures, err := runtime.Prune(getContext(), maxWorkers, c.Force)
+ if err != nil {
+ if errors.Cause(err) == libpod.ErrNoSuchCtr {
+ if len(c.InputArgs) > 1 {
+ exitCode = 125
+ } else {
+ exitCode = 1
+ }
+ }
+ return err
+ }
+ if len(failures) > 0 {
+ exitCode = 125
+ }
+ return printCmdResults(ok, failures)
}
diff --git a/cmd/podman/shared/create.go b/cmd/podman/shared/create.go
index c521f9cb6..48476e177 100644
--- a/cmd/podman/shared/create.go
+++ b/cmd/podman/shared/create.go
@@ -624,6 +624,7 @@ func ParseCreateOpts(ctx context.Context, c *GenericCLIResults, runtime *libpod.
GroupAdd: c.StringSlice("group-add"),
Hostname: c.String("hostname"),
HostAdd: c.StringSlice("add-host"),
+ HTTPProxy: c.Bool("http-proxy"),
NoHosts: c.Bool("no-hosts"),
IDMappings: idmappings,
Image: imageName,
diff --git a/cmd/podman/shared/intermediate.go b/cmd/podman/shared/intermediate.go
index 9c494dec5..a38e4d47a 100644
--- a/cmd/podman/shared/intermediate.go
+++ b/cmd/podman/shared/intermediate.go
@@ -404,6 +404,7 @@ func NewIntermediateLayer(c *cliconfig.PodmanCommand, remote bool) GenericCLIRes
m["healthcheck-start-period"] = newCRString(c, "healthcheck-start-period")
m["healthcheck-timeout"] = newCRString(c, "healthcheck-timeout")
m["hostname"] = newCRString(c, "hostname")
+ m["http-proxy"] = newCRBool(c, "http-proxy")
m["image-volume"] = newCRString(c, "image-volume")
m["init"] = newCRBool(c, "init")
m["init-path"] = newCRString(c, "init-path")
diff --git a/cmd/podman/system.go b/cmd/podman/system.go
index 528a594de..80080bf44 100644
--- a/cmd/podman/system.go
+++ b/cmd/podman/system.go
@@ -20,6 +20,7 @@ var (
var systemCommands = []*cobra.Command{
_infoCommand,
+ _pruneSystemCommand,
}
func init() {
diff --git a/cmd/podman/system_prune.go b/cmd/podman/system_prune.go
index 8a648b603..d5b218cd8 100644
--- a/cmd/podman/system_prune.go
+++ b/cmd/podman/system_prune.go
@@ -81,14 +81,15 @@ Are you sure you want to continue? [y/N] `, volumeString)
rmWorkers := shared.Parallelize("rm")
ctx := getContext()
fmt.Println("Deleted Containers")
- lasterr := pruneContainers(runtime, ctx, rmWorkers, false, false)
+ ok, failures, lasterr := runtime.Prune(ctx, rmWorkers, false)
+ printCmdResults(ok, failures)
fmt.Println("Deleted Pods")
pruneValues := cliconfig.PodPruneValues{
PodmanCommand: c.PodmanCommand,
Force: c.Force,
}
- ok, failures, err := runtime.PrunePods(ctx, &pruneValues)
+ ok, failures, err = runtime.PrunePods(ctx, &pruneValues)
if err != nil {
if lasterr != nil {
logrus.Errorf("%q", lasterr)