forked from coop-cloud/abra
52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/docker/docker/api/types/filters"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func GetVolumes(ctx context.Context, server string, appName string) ([]*types.Volume, error) {
|
|
|
|
cl, err := NewClientWithContext(server)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
fs := filters.NewArgs()
|
|
fs.Add("name", appName)
|
|
|
|
volumeListOKBody, err := cl.VolumeList(ctx, fs)
|
|
volumeList := volumeListOKBody.Volumes
|
|
if err != nil {
|
|
logrus.Fatal(err)
|
|
}
|
|
|
|
return volumeList, nil
|
|
}
|
|
|
|
func GetVolumeNames(volumes []*types.Volume) []string {
|
|
var volumeNames []string
|
|
for _, vol := range volumes {
|
|
volumeNames = append(volumeNames, vol.Name)
|
|
}
|
|
return volumeNames
|
|
}
|
|
|
|
func RemoveVolumes(ctx context.Context, server string, volumeNames []string, force bool) error {
|
|
cl, err := NewClientWithContext(server)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for _, volName := range volumeNames {
|
|
err := cl.VolumeRemove(ctx, volName, force)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
|
|
}
|