diff options
author | Jordan Christiansen <xordspar0@gmail.com> | 2020-09-23 14:58:33 -0500 |
---|---|---|
committer | Jordan Christiansen <xordspar0@gmail.com> | 2020-09-23 15:26:12 -0500 |
commit | 393fa4b92f2ba6f3b3e2e17d33ab0243eef1d063 (patch) | |
tree | bf6e45034d1b748cfcc8d35fb5b1da3c0845ce7c | |
parent | 81c543bbe3cd5130b5a2f163011d59d8b09f6877 (diff) | |
download | podman-393fa4b92f2ba6f3b3e2e17d33ab0243eef1d063.tar.gz podman-393fa4b92f2ba6f3b3e2e17d33ab0243eef1d063.tar.bz2 podman-393fa4b92f2ba6f3b3e2e17d33ab0243eef1d063.zip |
Allow filtering on pod label values
Before this change, filters of the form `podman pod ps --filter
label=app=myapp` were not working. The results would include all pods
that contained the app label with any value. Looking at the code, this
makes sense. It appears that the second = and everything after it were
getting truncated.
Even though there was already a passing test that tested `podman pod ps
--filter label=io.podman.test.label=value1`, the test failed with the
above example with a label `app=myapp`. The new code works in both
cases.
Signed-off-by: Jordan Christiansen <xordspar0@gmail.com>
-rw-r--r-- | cmd/podman/pods/ps.go | 2 | ||||
-rw-r--r-- | test/e2e/pod_ps_test.go | 8 |
2 files changed, 5 insertions, 5 deletions
diff --git a/cmd/podman/pods/ps.go b/cmd/podman/pods/ps.go index 97e528c7c..7b755cb22 100644 --- a/cmd/podman/pods/ps.go +++ b/cmd/podman/pods/ps.go @@ -73,7 +73,7 @@ func pods(cmd *cobra.Command, _ []string) error { if cmd.Flag("filter").Changed { psInput.Filters = make(map[string][]string) for _, f := range inputFilters { - split := strings.Split(f, "=") + split := strings.SplitN(f, "=", 2) if len(split) < 2 { return errors.Errorf("filter input must be in the form of filter=value: %s is invalid", f) } diff --git a/test/e2e/pod_ps_test.go b/test/e2e/pod_ps_test.go index d65bb33c7..17ed6a9c0 100644 --- a/test/e2e/pod_ps_test.go +++ b/test/e2e/pod_ps_test.go @@ -212,17 +212,17 @@ var _ = Describe("Podman ps", func() { Expect(ec).To(Equal(0)) _, ec, podid2 := podmanTest.CreatePodWithLabels("", map[string]string{ - "io.podman.test.label": "value1", - "io.podman.test.key": "irrelevant-value", + "app": "myapp", + "io.podman.test.key": "irrelevant-value", }) Expect(ec).To(Equal(0)) _, ec, podid3 := podmanTest.CreatePodWithLabels("", map[string]string{ - "io.podman.test.label": "value2", + "app": "test", }) Expect(ec).To(Equal(0)) - session := podmanTest.Podman([]string{"pod", "ps", "--no-trunc", "--filter", "label=io.podman.test.key", "--filter", "label=io.podman.test.label=value1"}) + session := podmanTest.Podman([]string{"pod", "ps", "--no-trunc", "--filter", "label=app", "--filter", "label=app=myapp"}) session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) Expect(session.OutputToString()).To(Not(ContainSubstring(podid1))) |