list snapshots
diff --git a/openstack/blockstorage/v1/snapshots/requests.go b/openstack/blockstorage/v1/snapshots/requests.go
index 1fc3e27..92008c5 100644
--- a/openstack/blockstorage/v1/snapshots/requests.go
+++ b/openstack/blockstorage/v1/snapshots/requests.go
@@ -24,6 +24,27 @@
return ss, err
}
+func List(c *blockstorage.Client, opts ListOpts) ([]Snapshot, error) {
+ var ss []Snapshot
+ var url string
+ h, err := c.GetHeaders()
+ if err != nil {
+ return ss, err
+ }
+ if full := opts.Full; full {
+ url = c.GetSnapshotsURL()
+ } else {
+ url = c.GetSnapshotURL("detail")
+ }
+ _, err = perigee.Request("GET", url, perigee.Options{
+ Results: &struct {
+ Snapshot *[]Snapshot `json:"snapshots"`
+ }{&ss},
+ MoreHeaders: h,
+ })
+ return ss, err
+}
+
func Get(c *blockstorage.Client, opts GetOpts) (Snapshot, error) {
var ss Snapshot
h, err := c.GetHeaders()
diff --git a/openstack/blockstorage/v1/snapshots/snapshots.go b/openstack/blockstorage/v1/snapshots/snapshots.go
index bd5510a..836ba82 100644
--- a/openstack/blockstorage/v1/snapshots/snapshots.go
+++ b/openstack/blockstorage/v1/snapshots/snapshots.go
@@ -12,5 +12,8 @@
}
type CreateOpts map[string]interface{}
+type ListOpts struct {
+ Full bool
+}
type GetOpts map[string]string
type DeleteOpts map[string]string