github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/evs/v1/volumes/create.go (about)

     1  package volumes
     2  
     3  import (
     4  	"github.com/opentelekomcloud/gophertelekomcloud"
     5  	"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
     6  )
     7  
     8  type CreateOpts struct {
     9  	Size             int               `json:"size" required:"true"`
    10  	AvailabilityZone string            `json:"availability_zone,omitempty"`
    11  	Description      string            `json:"display_description,omitempty"`
    12  	Metadata         map[string]string `json:"metadata,omitempty"`
    13  	Name             string            `json:"display_name,omitempty"`
    14  	SnapshotID       string            `json:"snapshot_id,omitempty"`
    15  	SourceVolID      string            `json:"source_volid,omitempty"`
    16  	ImageID          string            `json:"imageRef,omitempty"`
    17  	VolumeType       string            `json:"volume_type,omitempty"`
    18  }
    19  
    20  func Create(client *golangsdk.ServiceClient, opts CreateOpts) (*Volume, error) {
    21  	b, err := golangsdk.BuildRequestBody(opts, "volume")
    22  	if err != nil {
    23  		return nil, err
    24  	}
    25  
    26  	raw, err := client.Post(client.ServiceURL("volumes"), b, nil, &golangsdk.RequestOpts{
    27  		OkCodes: []int{200, 201},
    28  	})
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  
    33  	var res Volume
    34  	err = extract.IntoStructPtr(raw.Body, &res, "volume")
    35  	return &res, err
    36  }