blob: 666dfe0711a9aabfea949c4f76cd767be881edd6 [file] [log] [blame]
Krzysztof Szukiełojć7cf0b332017-05-18 08:46:42 +02001package snapshots
2
3import (
4 gophercloud "gerrit.mcp.mirantis.net/debian/gophercloud.git"
5 "gerrit.mcp.mirantis.net/debian/gophercloud.git/pagination"
6)
7
8// ListOptsBuilder allows extensions to add additional parameters to the List
9// request.
10type ListOptsBuilder interface {
11 ToVolumeListQuery() (string, error)
12}
13
Krzysztof Szukiełojć15c5e9e2017-05-19 10:32:32 +020014// ListOpts holds options for listing Snapshots. It is passed to the snapshot.List
15// function.
Krzysztof Szukiełojć7cf0b332017-05-18 08:46:42 +020016type ListOpts struct {
17 // admin-only option. Set it to true to see all tenant volumes.
18 AllTenants bool `q:"all_tenants"`
19}
20
21// ToVolumeListQuery formats a ListOpts into a query string.
22func (opts ListOpts) ToVolumeListQuery() (string, error) {
23 q, err := gophercloud.BuildQueryString(opts)
24 return q.String(), err
25}
26
27// List returns Volumes optionally limited by the conditions provided in ListOpts.
28func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager {
29 url := listURL(client)
30 if opts != nil {
31 query, err := opts.ToVolumeListQuery()
32 if err != nil {
33 return pagination.Pager{Err: err}
34 }
35 url += query
36 }
37
38 return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
39 return SnapshotPage{pagination.SinglePageBase(r)}
40 })
41}