list snapshots
diff --git a/openstack/blockstorage/v1/client.go b/openstack/blockstorage/v1/client.go
index 52477ff..f8ed192 100644
--- a/openstack/blockstorage/v1/client.go
+++ b/openstack/blockstorage/v1/client.go
@@ -1,11 +1,11 @@
-package blockstorage
+package v1
import (
"fmt"
- "github.com/rackspace/gophercloud/openstack/identity"
+ identity "github.com/rackspace/gophercloud/openstack/identity/v2"
)
-// Client abstracts the connection information needed to make API requests for OpenStack compute endpoints.
+// Client abstracts the connection information needed to make API requests for OpenStack block storage endpoints.
type Client struct {
endpoint string
authority identity.AuthResults
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