github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/evs/v1/snapshots/create.go (about) 1 package snapshots 2 3 import ( 4 "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 6 ) 7 8 type CreateOpts struct { 9 VolumeID string `json:"volume_id" required:"true"` 10 Description string `json:"display_description,omitempty"` 11 Force bool `json:"force,omitempty"` 12 Metadata map[string]interface{} `json:"metadata,omitempty"` 13 Name string `json:"display_name,omitempty"` 14 } 15 16 func Create(client *golangsdk.ServiceClient, opts CreateOpts) (*Snapshot, error) { 17 b, err := golangsdk.BuildRequestBody(opts, "snapshot") 18 if err != nil { 19 return nil, err 20 } 21 22 raw, err := client.Post(client.ServiceURL("snapshots"), b, nil, &golangsdk.RequestOpts{ 23 OkCodes: []int{200, 201}, 24 }) 25 if err != nil { 26 return nil, err 27 } 28 29 var res Snapshot 30 err = extract.IntoStructPtr(raw.Body, &res, "snapshot") 31 return &res, err 32 }