diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-06-26 02:36:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-26 02:36:06 +0200 |
commit | c9078936dd1bf5bdb59066eb1bdd179ac58f98e1 (patch) | |
tree | a8d769074e3ba43e100341c974639166c46ca5eb /cmd/podman/common_libpod.go | |
parent | fbf5e80337c6399aa54c8ea1bc316eddb369ab0b (diff) | |
parent | dd81a44ccfa34585ef62319835c8bb421db9e334 (diff) | |
download | podman-c9078936dd1bf5bdb59066eb1bdd179ac58f98e1.tar.gz podman-c9078936dd1bf5bdb59066eb1bdd179ac58f98e1.tar.bz2 podman-c9078936dd1bf5bdb59066eb1bdd179ac58f98e1.zip |
Merge pull request #3419 from baude/removelibpodfrommainphase1
remove libpod from main
Diffstat (limited to 'cmd/podman/common_libpod.go')
-rw-r--r-- | cmd/podman/common_libpod.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/cmd/podman/common_libpod.go b/cmd/podman/common_libpod.go new file mode 100644 index 000000000..45b2687cb --- /dev/null +++ b/cmd/podman/common_libpod.go @@ -0,0 +1,64 @@ +//build !remoteclient + +package main + +import ( + "fmt" + "os" + + "github.com/containers/libpod/cmd/podman/cliconfig" + "github.com/containers/libpod/libpod" + "github.com/pkg/errors" +) + +// getAllOrLatestContainers tries to return the correct list of containers +// depending if --all, --latest or <container-id> is used. +// It requires the Context (c) and the Runtime (runtime). As different +// commands are using different container state for the --all option +// the desired state has to be specified in filterState. If no filter +// is desired a -1 can be used to get all containers. For a better +// error message, if the filter fails, a corresponding verb can be +// specified which will then appear in the error message. +func getAllOrLatestContainers(c *cliconfig.PodmanCommand, runtime *libpod.Runtime, filterState libpod.ContainerStatus, verb string) ([]*libpod.Container, error) { + var containers []*libpod.Container + var lastError error + var err error + if c.Bool("all") { + if filterState != -1 { + var filterFuncs []libpod.ContainerFilter + filterFuncs = append(filterFuncs, func(c *libpod.Container) bool { + state, _ := c.State() + return state == filterState + }) + containers, err = runtime.GetContainers(filterFuncs...) + } else { + containers, err = runtime.GetContainers() + } + if err != nil { + return nil, errors.Wrapf(err, "unable to get %s containers", verb) + } + } else if c.Bool("latest") { + lastCtr, err := runtime.GetLatestContainer() + if err != nil { + return nil, errors.Wrapf(err, "unable to get latest container") + } + containers = append(containers, lastCtr) + } else { + args := c.InputArgs + for _, i := range args { + container, err := runtime.LookupContainer(i) + if err != nil { + if lastError != nil { + fmt.Fprintln(os.Stderr, lastError) + } + lastError = errors.Wrapf(err, "unable to find container %s", i) + } + if container != nil { + // This is here to make sure this does not return [<nil>] but only nil + containers = append(containers, container) + } + } + } + + return containers, lastError +} |