blob: a19cc9dee57a172d18d32681dc15e7bc9992e087 [file] [log] [blame]
Ildar Svetlov8edb1e82018-03-27 17:32:09 +04001package schedulerstats
2
3import (
4 "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
9// List request.
10type ListOptsBuilder interface {
11 ToStoragePoolsListQuery() (string, error)
12}
13
14// ListOpts controls the view of data returned (e.g globally or per project)
15// via tenant_id and the verbosity via detail.
16type ListOpts struct {
17 // ID of the tenant to look up storage pools for.
18 TenantID string `q:"tenant_id"`
19
20 // Whether to list extended details.
21 Detail bool `q:"detail"`
22}
23
24// ToStoragePoolsListQuery formats a ListOpts into a query string.
25func (opts ListOpts) ToStoragePoolsListQuery() (string, error) {
26 q, err := gophercloud.BuildQueryString(opts)
27 return q.String(), err
28}
29
30// List makes a request against the API to list storage pool information.
31func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager {
32 url := storagePoolsListURL(client)
33 if opts != nil {
34 query, err := opts.ToStoragePoolsListQuery()
35 if err != nil {
36 return pagination.Pager{Err: err}
37 }
38 url += query
39 }
40 return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
41 return StoragePoolPage{pagination.SinglePageBase(r)}
42 })
43}