github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/api/client/lib/volume.go (about) 1 package lib 2 3 import ( 4 "encoding/json" 5 "net/http" 6 "net/url" 7 8 "github.com/docker/docker/api/types" 9 "github.com/docker/docker/api/types/filters" 10 ) 11 12 // VolumeList returns the volumes configured in the docker host. 13 func (cli *Client) VolumeList(filter filters.Args) (types.VolumesListResponse, error) { 14 var volumes types.VolumesListResponse 15 query := url.Values{} 16 17 if filter.Len() > 0 { 18 filterJSON, err := filters.ToParam(filter) 19 if err != nil { 20 return volumes, err 21 } 22 query.Set("filters", filterJSON) 23 } 24 resp, err := cli.get("/volumes", query, nil) 25 if err != nil { 26 return volumes, err 27 } 28 defer ensureReaderClosed(resp) 29 30 err = json.NewDecoder(resp.body).Decode(&volumes) 31 return volumes, err 32 } 33 34 // VolumeInspect returns the information about a specific volume in the docker host. 35 func (cli *Client) VolumeInspect(volumeID string) (types.Volume, error) { 36 var volume types.Volume 37 resp, err := cli.get("/volumes/"+volumeID, nil, nil) 38 if err != nil { 39 if resp.statusCode == http.StatusNotFound { 40 return volume, volumeNotFoundError{volumeID} 41 } 42 return volume, err 43 } 44 defer ensureReaderClosed(resp) 45 err = json.NewDecoder(resp.body).Decode(&volume) 46 return volume, err 47 } 48 49 // VolumeCreate creates a volume in the docker host. 50 func (cli *Client) VolumeCreate(options types.VolumeCreateRequest) (types.Volume, error) { 51 var volume types.Volume 52 resp, err := cli.post("/volumes/create", nil, options, nil) 53 if err != nil { 54 return volume, err 55 } 56 defer ensureReaderClosed(resp) 57 err = json.NewDecoder(resp.body).Decode(&volume) 58 return volume, err 59 } 60 61 // VolumeRemove removes a volume from the docker host. 62 func (cli *Client) VolumeRemove(volumeID string) error { 63 resp, err := cli.delete("/volumes/"+volumeID, nil, nil) 64 ensureReaderClosed(resp) 65 return err 66 }