diff options
author | Matthew Heon <matthew.heon@pm.me> | 2020-06-24 14:10:29 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2020-06-24 15:12:56 -0400 |
commit | d78e83f47d487c1680ae0e2a1db42ef9d70caf30 (patch) | |
tree | c113c1f5a50a75b14ae3ed68bdf59d0ea04bc22c /pkg | |
parent | 4ee66598c1201a7d191c03c2d2f067f847aaddf5 (diff) | |
download | podman-d78e83f47d487c1680ae0e2a1db42ef9d70caf30.tar.gz podman-d78e83f47d487c1680ae0e2a1db42ef9d70caf30.tar.bz2 podman-d78e83f47d487c1680ae0e2a1db42ef9d70caf30.zip |
Add support for dangling filter to volumes
The dangling filter determine whether a volume is dangling - IE,
it has no containers attached using it. Unlike our other filters,
this one is a boolean - must be true or false, not arbitrary
values.
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/domain/filters/volumes.go | 23 | ||||
-rw-r--r-- | pkg/domain/infra/abi/system.go | 2 |
2 files changed, 24 insertions, 1 deletions
diff --git a/pkg/domain/filters/volumes.go b/pkg/domain/filters/volumes.go index f97c3f570..b1b5e6319 100644 --- a/pkg/domain/filters/volumes.go +++ b/pkg/domain/filters/volumes.go @@ -61,6 +61,29 @@ func GenerateVolumeFilters(filters map[string][]string) ([]libpod.VolumeFilter, } return false }) + case "dangling": + danglingVal := val + invert := false + switch strings.ToLower(danglingVal) { + case "true", "1": + // Do nothing + case "false", "0": + // Dangling=false requires that we + // invert the result of IsDangling. + invert = true + default: + return nil, errors.Errorf("%q is not a valid value for the \"dangling\" filter - must be true or false", danglingVal) + } + vf = append(vf, func(v *libpod.Volume) bool { + dangling, err := v.IsDangling() + if err != nil { + return false + } + if invert { + return !dangling + } + return dangling + }) default: return nil, errors.Errorf("%q is in an invalid volume filter", filter) } diff --git a/pkg/domain/infra/abi/system.go b/pkg/domain/infra/abi/system.go index 90002326e..0511289ab 100644 --- a/pkg/domain/infra/abi/system.go +++ b/pkg/domain/infra/abi/system.go @@ -330,7 +330,7 @@ func (ic *ContainerEngine) SystemDf(ctx context.Context, options entities.System if err != nil { return nil, err } - inUse, err := v.VolumesInUse() + inUse, err := v.VolumeInUse() if err != nil { return nil, err } |