diff options
author | baude <bbaude@redhat.com> | 2019-04-15 09:03:18 -0500 |
---|---|---|
committer | baude <bbaude@redhat.com> | 2019-04-18 13:42:27 -0500 |
commit | 55e630e7876557ebd2a44e81fa357aab9efbb793 (patch) | |
tree | cc8b6f224a6520e3c38bc41022abe40c6f1952a2 /cmd/podman | |
parent | bf5ffdafb40f32fac891a8cd5fc64cfd5b77674f (diff) | |
download | podman-55e630e7876557ebd2a44e81fa357aab9efbb793.tar.gz podman-55e630e7876557ebd2a44e81fa357aab9efbb793.tar.bz2 podman-55e630e7876557ebd2a44e81fa357aab9efbb793.zip |
podman-remote pause|unpause
Add the ability to pause and unpause containers with the remote client.
Also turned on the pause tests!
Signed-off-by: baude <bbaude@redhat.com>
Diffstat (limited to 'cmd/podman')
-rw-r--r-- | cmd/podman/commands.go | 4 | ||||
-rw-r--r-- | cmd/podman/container.go | 2 | ||||
-rw-r--r-- | cmd/podman/main.go | 2 | ||||
-rw-r--r-- | cmd/podman/pause.go | 54 | ||||
-rw-r--r-- | cmd/podman/ps.go | 6 | ||||
-rw-r--r-- | cmd/podman/unpause.go | 54 | ||||
-rw-r--r-- | cmd/podman/varlink/io.podman.varlink | 2 |
7 files changed, 32 insertions, 92 deletions
diff --git a/cmd/podman/commands.go b/cmd/podman/commands.go index 1a2da86cf..c36452cfe 100644 --- a/cmd/podman/commands.go +++ b/cmd/podman/commands.go @@ -17,14 +17,12 @@ func getMainCommands() []*cobra.Command { _loginCommand, _logoutCommand, _mountCommand, - _pauseCommand, _portCommand, _refreshCommand, _restartCommand, _searchCommand, _statsCommand, _topCommand, - _unpauseCommand, } if len(_varlinkCommand.Use) > 0 { @@ -49,7 +47,6 @@ func getContainerSubCommands() []*cobra.Command { _commitCommand, _execCommand, _mountCommand, - _pauseCommand, _portCommand, _pruneContainersCommand, _refreshCommand, @@ -60,7 +57,6 @@ func getContainerSubCommands() []*cobra.Command { _stopCommand, _topCommand, _umountCommand, - _unpauseCommand, } } diff --git a/cmd/podman/container.go b/cmd/podman/container.go index 1477d158f..7733c8eef 100644 --- a/cmd/podman/container.go +++ b/cmd/podman/container.go @@ -59,9 +59,11 @@ var ( _killCommand, _listSubCommand, _logsCommand, + _pauseCommand, _runCommand, _rmCommand, _startCommand, + _unpauseCommand, _waitCommand, } ) diff --git a/cmd/podman/main.go b/cmd/podman/main.go index 2748df5f5..15f4a5d71 100644 --- a/cmd/podman/main.go +++ b/cmd/podman/main.go @@ -45,6 +45,7 @@ var mainCommands = []*cobra.Command{ _killCommand, _loadCommand, _logsCommand, + _pauseCommand, podCommand.Command, &_psCommand, _pullCommand, @@ -56,6 +57,7 @@ var mainCommands = []*cobra.Command{ _stopCommand, _tagCommand, _umountCommand, + _unpauseCommand, _versionCommand, _waitCommand, imageCommand.Command, diff --git a/cmd/podman/pause.go b/cmd/podman/pause.go index 3e6d36571..ca137150a 100644 --- a/cmd/podman/pause.go +++ b/cmd/podman/pause.go @@ -4,11 +4,9 @@ import ( "os" "github.com/containers/libpod/cmd/podman/cliconfig" - "github.com/containers/libpod/cmd/podman/libpodruntime" - "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,15 +39,11 @@ func init() { } func pauseCmd(c *cliconfig.PauseValues) error { - var ( - pauseContainers []*libpod.Container - pauseFuncs []shared.ParallelWorkerInput - ) if os.Geteuid() != 0 { return errors.New("pause is not supported for rootless containers") } - runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) + runtime, err := adapter.GetRuntime(&c.PodmanCommand) if err != nil { return errors.Wrapf(err, "could not get runtime") } @@ -59,41 +53,19 @@ func pauseCmd(c *cliconfig.PauseValues) error { if len(args) < 1 && !c.All { return errors.Errorf("you must provide at least one container name or id") } - if c.All { - containers, err := getAllOrLatestContainers(&c.PodmanCommand, runtime, libpod.ContainerStateRunning, "running") - if err != nil { - return err - } - pauseContainers = append(pauseContainers, containers...) - } else { - for _, arg := range args { - ctr, err := runtime.LookupContainer(arg) - if err != nil { - return err + ok, failures, err := runtime.PauseContainers(getContext(), c) + if err != nil { + if errors.Cause(err) == libpod.ErrNoSuchCtr { + if len(c.InputArgs) > 1 { + exitCode = 125 + } else { + exitCode = 1 } - pauseContainers = append(pauseContainers, ctr) - } - } - - // Now assemble the slice of pauseFuncs - for _, ctr := range pauseContainers { - con := ctr - - f := func() error { - return con.Pause() } - pauseFuncs = append(pauseFuncs, shared.ParallelWorkerInput{ - ContainerID: con.ID(), - ParallelFunc: f, - }) + return err } - - maxWorkers := shared.Parallelize("pause") - if c.GlobalIsSet("max-workers") { - maxWorkers = c.GlobalFlags.MaxWorks + if len(failures) > 0 { + exitCode = 125 } - logrus.Debugf("Setting maximum workers to %d", maxWorkers) - - pauseErrors, errCount := shared.ParallelExecuteWorkerPool(maxWorkers, pauseFuncs) - return printParallelOutput(pauseErrors, errCount) + return printCmdResults(ok, failures) } diff --git a/cmd/podman/ps.go b/cmd/podman/ps.go index a9e46d6b9..df1ea2765 100644 --- a/cmd/podman/ps.go +++ b/cmd/podman/ps.go @@ -17,7 +17,6 @@ import ( "github.com/containers/libpod/pkg/adapter" "github.com/cri-o/ocicni/pkg/ocicni" "github.com/docker/go-units" - "github.com/opentracing/opentracing-go" "github.com/pkg/errors" "github.com/spf13/cobra" "k8s.io/apimachinery/pkg/fields" @@ -198,11 +197,6 @@ func init() { } func psCmd(c *cliconfig.PsValues) error { - if c.Bool("trace") { - span, _ := opentracing.StartSpanFromContext(Ctx, "psCmd") - defer span.Finish() - } - var watch bool if c.Watch > 0 { diff --git a/cmd/podman/unpause.go b/cmd/podman/unpause.go index 65e841b36..fa946bfd7 100644 --- a/cmd/podman/unpause.go +++ b/cmd/podman/unpause.go @@ -4,11 +4,9 @@ import ( "os" "github.com/containers/libpod/cmd/podman/cliconfig" - "github.com/containers/libpod/cmd/podman/libpodruntime" - "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" ) @@ -40,15 +38,11 @@ func init() { } func unpauseCmd(c *cliconfig.UnpauseValues) error { - var ( - unpauseContainers []*libpod.Container - unpauseFuncs []shared.ParallelWorkerInput - ) if os.Geteuid() != 0 { return errors.New("unpause is not supported for rootless containers") } - runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand) + runtime, err := adapter.GetRuntime(&c.PodmanCommand) if err != nil { return errors.Wrapf(err, "could not get runtime") } @@ -58,41 +52,19 @@ func unpauseCmd(c *cliconfig.UnpauseValues) error { if len(args) < 1 && !c.All { return errors.Errorf("you must provide at least one container name or id") } - if c.All { - cs, err := getAllOrLatestContainers(&c.PodmanCommand, runtime, libpod.ContainerStatePaused, "paused") - if err != nil { - return err - } - unpauseContainers = append(unpauseContainers, cs...) - } else { - for _, arg := range args { - ctr, err := runtime.LookupContainer(arg) - if err != nil { - return err + ok, failures, err := runtime.UnpauseContainers(getContext(), c) + if err != nil { + if errors.Cause(err) == libpod.ErrNoSuchCtr { + if len(c.InputArgs) > 1 { + exitCode = 125 + } else { + exitCode = 1 } - unpauseContainers = append(unpauseContainers, ctr) - } - } - - // Assemble the unpause funcs - for _, ctr := range unpauseContainers { - con := ctr - f := func() error { - return con.Unpause() } - - unpauseFuncs = append(unpauseFuncs, shared.ParallelWorkerInput{ - ContainerID: con.ID(), - ParallelFunc: f, - }) + return err } - - maxWorkers := shared.Parallelize("unpause") - if c.GlobalIsSet("max-workers") { - maxWorkers = c.GlobalFlags.MaxWorks + if len(failures) > 0 { + exitCode = 125 } - logrus.Debugf("Setting maximum workers to %d", maxWorkers) - - unpauseErrors, errCount := shared.ParallelExecuteWorkerPool(maxWorkers, unpauseFuncs) - return printParallelOutput(unpauseErrors, errCount) + return printCmdResults(ok, failures) } diff --git a/cmd/podman/varlink/io.podman.varlink b/cmd/podman/varlink/io.podman.varlink index 497f130bc..1fde72164 100644 --- a/cmd/podman/varlink/io.podman.varlink +++ b/cmd/podman/varlink/io.podman.varlink @@ -522,6 +522,8 @@ method ListContainers() -> (containers: []Container) method Ps(opts: PsOpts) -> (containers: []PsContainer) +method GetContainersByStatus(status: []string) -> (containerS: []Container) + # GetContainer returns information about a single container. If a container # with the given id doesn't exist, a [ContainerNotFound](#ContainerNotFound) # error will be returned. See also [ListContainers](ListContainers) and |