48 lines
983 B
Go
48 lines
983 B
Go
package shared
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/containers/libpod/libpod"
|
|
)
|
|
|
|
// Remove given set of volumes
|
|
func SharedRemoveVolumes(ctx context.Context, runtime *libpod.Runtime, vols []string, all, force bool) ([]string, map[string]error, error) {
|
|
var (
|
|
toRemove []*libpod.Volume
|
|
success []string
|
|
failed map[string]error
|
|
)
|
|
|
|
failed = make(map[string]error)
|
|
|
|
if all {
|
|
vols, err := runtime.Volumes()
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
toRemove = vols
|
|
} else {
|
|
for _, v := range vols {
|
|
vol, err := runtime.LookupVolume(v)
|
|
if err != nil {
|
|
failed[v] = err
|
|
continue
|
|
}
|
|
toRemove = append(toRemove, vol)
|
|
}
|
|
}
|
|
|
|
// We could parallelize this, but I haven't heard anyone complain about
|
|
// performance here yet, so hold off.
|
|
for _, vol := range toRemove {
|
|
if err := runtime.RemoveVolume(ctx, vol, force); err != nil {
|
|
failed[vol.Name()] = err
|
|
continue
|
|
}
|
|
success = append(success, vol.Name())
|
|
}
|
|
|
|
return success, failed, nil
|
|
}
|