Skip to content

Commit afbea92

Browse files
committed
Fix filtering in volume prune and ls
Signed-off-by: Šimon Brauner <sbrauner@redhat.com>
1 parent d16614f commit afbea92

4 files changed

Lines changed: 19 additions & 8 deletions

File tree

pkg/domain/filters/containers.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func GenerateContainerFilterFuncs(filter string, filterValues []string, r *libpo
3232
}, nil
3333
case "label!":
3434
return func(c *libpod.Container) bool {
35-
return !filters.MatchLabelFilters(filterValues, c.Labels())
35+
return filters.MatchNegatedLabelFilters(filterValues, c.Labels())
3636
}, nil
3737
case "name":
3838
// we only have to match one name
@@ -309,7 +309,7 @@ func GeneratePruneContainerFilterFuncs(filter string, filterValues []string, _ *
309309
}, nil
310310
case "label!":
311311
return func(c *libpod.Container) bool {
312-
return !filters.MatchLabelFilters(filterValues, c.Labels())
312+
return filters.MatchNegatedLabelFilters(filterValues, c.Labels())
313313
}, nil
314314
case "until":
315315
return prepareUntilFilterFunc(filterValues)
@@ -478,7 +478,11 @@ func GenerateExternalContainerFilterFuncs(filter string, filterValues []string,
478478
}, nil
479479
case "label":
480480
return func(listContainer *types.ListContainer) bool {
481-
return !filters.MatchLabelFilters(filterValues, listContainer.Labels)
481+
return filters.MatchLabelFilters(filterValues, listContainer.Labels)
482+
}, nil
483+
case "label!":
484+
return func(listContainer *types.ListContainer) bool {
485+
return filters.MatchNegatedLabelFilters(filterValues, listContainer.Labels)
482486
}, nil
483487
case "pod":
484488
var pods []*libpod.Pod

pkg/domain/filters/pods.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ func GeneratePodFilterFunc(filter string, filterValues []string, r *libpod.Runti
122122
case "label!":
123123
return func(p *libpod.Pod) bool {
124124
labels := p.Labels()
125-
return !filters.MatchLabelFilters(filterValues, labels)
125+
return filters.MatchNegatedLabelFilters(filterValues, labels)
126126
}, nil
127127
case "until":
128128
return func(p *libpod.Pod) bool {

pkg/domain/filters/volumes.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func GenerateVolumeFilters(filter string, filterValues []string, runtime *libpod
3535
}, nil
3636
case "label!":
3737
return func(v *libpod.Volume) bool {
38-
return !filters.MatchLabelFilters(filterValues, v.Labels())
38+
return filters.MatchNegatedLabelFilters(filterValues, v.Labels())
3939
}, nil
4040
case "opt":
4141
return func(v *libpod.Volume) bool {
@@ -101,7 +101,7 @@ func GeneratePruneVolumeFilters(filter string, filterValues []string, runtime *l
101101
}, nil
102102
case "label!":
103103
return func(v *libpod.Volume) bool {
104-
return !filters.MatchLabelFilters(filterValues, v.Labels())
104+
return filters.MatchNegatedLabelFilters(filterValues, v.Labels())
105105
}, nil
106106
case "until":
107107
return createUntilFilterVolumeFunction(filterValues)

test/e2e/volume_ls_test.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ var _ = Describe("Podman volume ls", func() {
189189

190190
vol1Name := session.OutputToString()
191191

192-
session = podmanTest.Podman([]string{"volume", "create", "--label", "b=c", "--label", "a=b", "vol2"})
192+
session = podmanTest.Podman([]string{"volume", "create", "--label", "a=b", "--label", "b=c", "--label", "d=e", "vol2"})
193193
session.WaitWithDefaultTimeout()
194194
Expect(session).Should(ExitCleanly())
195195

@@ -208,12 +208,19 @@ var _ = Describe("Podman volume ls", func() {
208208
Expect(session.OutputToStringArray()[0]).To(Equal(vol1Name))
209209
Expect(session.OutputToStringArray()[1]).To(Equal(vol2Name))
210210

211-
session = podmanTest.Podman([]string{"volume", "ls", "-q", "--filter", "label=c=d", "--filter", "label=b=c"})
211+
session = podmanTest.Podman([]string{"volume", "ls", "-q", "--filter", "label=b=c", "--filter", "label=c=d"})
212212
session.WaitWithDefaultTimeout()
213213
Expect(session).Should(ExitCleanly())
214214
Expect(session.OutputToStringArray()).To(HaveLen(1))
215215
Expect(session.OutputToStringArray()[0]).To(Equal(vol3Name))
216216

217+
// Filters with label! key
218+
session = podmanTest.Podman([]string{"volume", "ls", "-q", "--filter", "label!=c=d", "--filter", "label!=d=e"})
219+
session.WaitWithDefaultTimeout()
220+
Expect(session).Should(ExitCleanly())
221+
Expect(session.OutputToStringArray()).To(HaveLen(1))
222+
Expect(session.OutputToStringArray()[0]).To(Equal(vol1Name))
223+
217224
// Filters with different keys
218225
session = podmanTest.Podman([]string{"volume", "ls", "-q", "--filter", "label=b=c", "--filter", "name=vol1"})
219226
session.WaitWithDefaultTimeout()

0 commit comments

Comments
 (0)