mirror of
https://github.com/moby/moby.git
synced 2026-01-11 02:31:44 +00:00
43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
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
|
|
}
|