mirror of
https://github.com/containers/podman.git
synced 2025-06-20 17:13:43 +08:00
Add support for volume ls --filter label=key=value
Supposed to be able to search for labels with a given value. Previously it meant searching for label key and label value: --filter label=key --filter label=value Add some documentation and integration tests for it as well. Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
This commit is contained in:
@ -73,11 +73,11 @@ func list(cmd *cobra.Command, args []string) error {
|
|||||||
lsOpts.Filter = make(map[string][]string)
|
lsOpts.Filter = make(map[string][]string)
|
||||||
}
|
}
|
||||||
for _, f := range cliOpts.Filter {
|
for _, f := range cliOpts.Filter {
|
||||||
filterSplit := strings.Split(f, "=")
|
filterSplit := strings.SplitN(f, "=", 2)
|
||||||
if len(filterSplit) < 2 {
|
if len(filterSplit) < 2 {
|
||||||
return errors.Errorf("filter input must be in the form of filter=value: %s is invalid", f)
|
return errors.Errorf("filter input must be in the form of filter=value: %s is invalid", f)
|
||||||
}
|
}
|
||||||
lsOpts.Filter[filterSplit[0]] = append(lsOpts.Filter[filterSplit[0]], filterSplit[1:]...)
|
lsOpts.Filter[filterSplit[0]] = append(lsOpts.Filter[filterSplit[0]], filterSplit[1])
|
||||||
}
|
}
|
||||||
responses, err := registry.ContainerEngine().VolumeList(context.Background(), lsOpts)
|
responses, err := registry.ContainerEngine().VolumeList(context.Background(), lsOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -40,6 +40,8 @@ $ podman volume ls --format json
|
|||||||
$ podman volume ls --format "{{.Driver}} {{.Scope}}"
|
$ podman volume ls --format "{{.Driver}} {{.Scope}}"
|
||||||
|
|
||||||
$ podman volume ls --filter name=foo,label=blue
|
$ podman volume ls --filter name=foo,label=blue
|
||||||
|
|
||||||
|
$ podman volume ls --filter label=key=value
|
||||||
```
|
```
|
||||||
|
|
||||||
## SEE ALSO
|
## SEE ALSO
|
||||||
|
@ -83,6 +83,22 @@ var _ = Describe("Podman volume ls", func() {
|
|||||||
Expect(session.ExitCode()).To(Equal(0))
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
Expect(len(session.OutputToStringArray())).To(Equal(2))
|
Expect(len(session.OutputToStringArray())).To(Equal(2))
|
||||||
Expect(session.OutputToStringArray()[1]).To(ContainSubstring(volName))
|
Expect(session.OutputToStringArray()[1]).To(ContainSubstring(volName))
|
||||||
|
|
||||||
|
session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=foo"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
Expect(len(session.OutputToStringArray())).To(Equal(0))
|
||||||
|
|
||||||
|
session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=bar"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
Expect(len(session.OutputToStringArray())).To(Equal(2))
|
||||||
|
Expect(session.OutputToStringArray()[1]).To(ContainSubstring(volName))
|
||||||
|
|
||||||
|
session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=baz"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
Expect(len(session.OutputToStringArray())).To(Equal(0))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("podman volume ls with --filter dangling", func() {
|
It("podman volume ls with --filter dangling", func() {
|
||||||
@ -132,5 +148,11 @@ var _ = Describe("Podman volume ls", func() {
|
|||||||
Expect(session.OutputToStringArray()[1]).To(ContainSubstring(volName))
|
Expect(session.OutputToStringArray()[1]).To(ContainSubstring(volName))
|
||||||
Expect(session.OutputToStringArray()[2]).To(ContainSubstring(anotherVol))
|
Expect(session.OutputToStringArray()[2]).To(ContainSubstring(anotherVol))
|
||||||
|
|
||||||
|
session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=bar", "--filter", "label=foo2=bar2"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
Expect(len(session.OutputToStringArray())).To(Equal(3))
|
||||||
|
Expect(session.OutputToStringArray()[1]).To(ContainSubstring(volName))
|
||||||
|
Expect(session.OutputToStringArray()[2]).To(ContainSubstring(anotherVol))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user