| package client |
| |
| import ( |
| "context" |
| "encoding/json" |
| |
| "github.com/moby/moby/api/types/volume" |
| ) |
| |
| // VolumeCreateOptions specifies the options to create a volume. |
| type VolumeCreateOptions struct { |
| Name string |
| Driver string |
| DriverOpts map[string]string |
| Labels map[string]string |
| ClusterVolumeSpec *volume.ClusterVolumeSpec |
| } |
| |
| // VolumeCreateResult is the result of a volume creation. |
| type VolumeCreateResult struct { |
| Volume volume.Volume |
| } |
| |
| // VolumeCreate creates a volume in the docker host. |
| func (cli *Client) VolumeCreate(ctx context.Context, options VolumeCreateOptions) (VolumeCreateResult, error) { |
| createRequest := volume.CreateRequest{ |
| Name: options.Name, |
| Driver: options.Driver, |
| DriverOpts: options.DriverOpts, |
| Labels: options.Labels, |
| ClusterVolumeSpec: options.ClusterVolumeSpec, |
| } |
| resp, err := cli.post(ctx, "/volumes/create", nil, createRequest, nil) |
| defer ensureReaderClosed(resp) |
| if err != nil { |
| return VolumeCreateResult{}, err |
| } |
| |
| var v volume.Volume |
| err = json.NewDecoder(resp.Body).Decode(&v) |
| return VolumeCreateResult{Volume: v}, err |
| } |