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  }