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 }