summaryrefslogtreecommitdiff
path: root/cmd/podman
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@gmail.com>2018-08-24 17:39:37 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2018-08-27 14:47:41 +0000
commit2bc6427302eb6bcbd613d7ee767080d278968490 (patch)
treef2cac916ff7557bc604d4ad7874a0933e042b56c /cmd/podman
parent663ee91eec01706008046c1df2c307716f9288db (diff)
downloadpodman-2bc6427302eb6bcbd613d7ee767080d278968490.tar.gz
podman-2bc6427302eb6bcbd613d7ee767080d278968490.tar.bz2
podman-2bc6427302eb6bcbd613d7ee767080d278968490.zip
Fix handling of multiple filters in podman ps
Docker expects multiple filters to be passed with multiple uses of the --filter flag (e.g. --filter=label=a=b --filter=label=c=d) and not a single comma-separated list of filters as we expected. Convert to the Docker format, and make some small cleanups to our handling of filters along the way. Signed-off-by: Matthew Heon <matthew.heon@gmail.com> Closes: #1345 Approved by: umohnani8
Diffstat (limited to 'cmd/podman')
-rw-r--r--cmd/podman/ps.go9
-rw-r--r--cmd/podman/shared/container.go1
2 files changed, 4 insertions, 6 deletions
diff --git a/cmd/podman/ps.go b/cmd/podman/ps.go
index 82309c2ef..0b59b24b7 100644
--- a/cmd/podman/ps.go
+++ b/cmd/podman/ps.go
@@ -134,7 +134,7 @@ var (
Name: "all, a",
Usage: "Show all the containers, default is only running containers",
},
- cli.StringFlag{
+ cli.StringSliceFlag{
Name: "filter, f",
Usage: "Filter output based on conditions given",
},
@@ -222,7 +222,6 @@ func psCmd(c *cli.Context) error {
opts := shared.PsOptions{
All: c.Bool("all"),
- Filter: c.String("filter"),
Format: format,
Last: c.Int("last"),
Latest: c.Bool("latest"),
@@ -246,8 +245,8 @@ func psCmd(c *cli.Context) error {
})
}
- if opts.Filter != "" {
- filters := strings.Split(opts.Filter, ",")
+ filters := c.StringSlice("filter")
+ if len(filters) > 0 {
for _, f := range filters {
filterSplit := strings.SplitN(f, "=", 2)
if len(filterSplit) < 2 {
@@ -317,7 +316,7 @@ func generateContainerFilterFuncs(filter, filterValue string, runtime *libpod.Ru
return strings.Contains(c.ID(), filterValue)
}, nil
case "label":
- var filterArray []string = strings.Split(filterValue, "=")
+ var filterArray []string = strings.SplitN(filterValue, "=", 2)
var filterKey string = filterArray[0]
if len(filterArray) > 1 {
filterValue = filterArray[1]
diff --git a/cmd/podman/shared/container.go b/cmd/podman/shared/container.go
index 7a5455046..f44d0f7c9 100644
--- a/cmd/podman/shared/container.go
+++ b/cmd/podman/shared/container.go
@@ -20,7 +20,6 @@ import (
// PsOptions describes the struct being formed for ps
type PsOptions struct {
All bool
- Filter string
Format string
Last int
Latest bool