blob: 5dcbca0b2262cea52d83bc3cd435eb33fe45e2b5 [file] [log] [blame]
Jon Perrittee6074f2014-04-30 18:42:32 -05001package volumes
2
3import (
4 "github.com/racker/perigee"
5 blockstorage "github.com/rackspace/gophercloud/openstack/blockstorage/v1"
6)
7
8func Create(c *blockstorage.Client, opts CreateOpts) (Volume, error) {
9 var v Volume
10 h, err := c.GetHeaders()
11 if err != nil {
12 return v, err
13 }
Jon Perritt3baca062014-04-30 23:33:04 -050014 url := c.GetVolumesURL()
Jon Perrittee6074f2014-04-30 18:42:32 -050015 _, err = perigee.Request("POST", url, perigee.Options{
Jon Perritte77b9b22014-05-01 13:11:12 -050016 Results: &struct {
17 Volume *Volume `json:"volume"`
18 }{&v},
Jon Perrittee6074f2014-04-30 18:42:32 -050019 ReqBody: map[string]interface{}{
20 "volume": opts,
21 },
22 MoreHeaders: h,
23 })
24 return v, err
25}
Jon Perritte77b9b22014-05-01 13:11:12 -050026
Jon Perritt70dd47d2014-05-01 13:51:53 -050027func Get(c *blockstorage.Client, opts GetOpts) (Volume, error) {
28 var v Volume
29 h, err := c.GetHeaders()
30 if err != nil {
31 return v, err
32 }
33 url := c.GetVolumeURL(opts["id"])
34 _, err = perigee.Request("GET", url, perigee.Options{
35 Results: &struct {
36 Volume *Volume `json:"volume"`
37 }{&v},
38 MoreHeaders: h,
39 })
40 return v, err
41}
42
Jon Perritte77b9b22014-05-01 13:11:12 -050043func Delete(c *blockstorage.Client, opts DeleteOpts) error {
44 h, err := c.GetHeaders()
45 if err != nil {
46 return err
47 }
48 url := c.GetVolumeURL(opts["id"])
49 _, err = perigee.Request("DELETE", url, perigee.Options{
50 MoreHeaders: h,
51 })
52 return err
53}