File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -7,6 +7,12 @@ import (
77 "github.com/gophercloud/gophercloud/v2/pagination"
88)
99
10+ // ListOptsBuilder allows extensions to add additional parameters to the
11+ // List request.
12+ type ListOptsBuilder interface {
13+ ToTenantListQuery () (string , error )
14+ }
15+
1016// ListOpts filters the Tenants that are returned by the List call.
1117type ListOpts struct {
1218 // Marker is the ID of the last Tenant on the previous page.
@@ -16,15 +22,21 @@ type ListOpts struct {
1622 Limit int `q:"limit"`
1723}
1824
25+ // ToTenantListQuery formats a ListOpts into a query string.
26+ func (opts ListOpts ) ToTenantListQuery () (string , error ) {
27+ q , err := gophercloud .BuildQueryString (opts )
28+ return q .String (), err
29+ }
30+
1931// List enumerates the Tenants to which the current token has access.
20- func List (client * gophercloud.ServiceClient , opts * ListOpts ) pagination.Pager {
32+ func List (client * gophercloud.ServiceClient , opts ListOptsBuilder ) pagination.Pager {
2133 url := listURL (client )
2234 if opts != nil {
23- q , err := gophercloud . BuildQueryString ( opts )
35+ query , err := opts . ToTenantListQuery ( )
2436 if err != nil {
2537 return pagination.Pager {Err : err }
2638 }
27- url += q . String ()
39+ url += query
2840 }
2941 return pagination .NewPager (client , url , func (r pagination.PageResult ) pagination.Page {
3042 return TenantPage {pagination.LinkedPageBase {PageResult : r }}
Original file line number Diff line number Diff line change @@ -55,12 +55,15 @@ func (opts ListOpts) ToRouterListQuery() (string, error) {
5555// Default policy settings return only those routers that are owned by the
5656// tenant who submits the request, unless an admin user submits the request.
5757func List (c * gophercloud.ServiceClient , opts ListOptsBuilder ) pagination.Pager {
58- q , err := opts .ToRouterListQuery ()
59- if err != nil {
60- return pagination.Pager {Err : err }
58+ url := rootURL (c )
59+ if opts != nil {
60+ query , err := opts .ToRouterListQuery ()
61+ if err != nil {
62+ return pagination.Pager {Err : err }
63+ }
64+ url += query
6165 }
62- u := rootURL (c ) + q
63- return pagination .NewPager (c , u , func (r pagination.PageResult ) pagination.Page {
66+ return pagination .NewPager (c , url , func (r pagination.PageResult ) pagination.Page {
6467 return RouterPage {pagination.LinkedPageBase {PageResult : r }}
6568 })
6669}
Original file line number Diff line number Diff line change @@ -51,12 +51,15 @@ func (opts ListOpts) ToSecGroupListQuery() (string, error) {
5151// security group rules. It accepts a ListOpts struct, which allows you to filter
5252// and sort the returned collection for greater efficiency.
5353func List (c * gophercloud.ServiceClient , opts ListOptsBuilder ) pagination.Pager {
54- q , err := opts .ToSecGroupListQuery ()
55- if err != nil {
56- return pagination.Pager {Err : err }
54+ url := rootURL (c )
55+ if opts != nil {
56+ query , err := opts .ToSecGroupListQuery ()
57+ if err != nil {
58+ return pagination.Pager {Err : err }
59+ }
60+ url += query
5761 }
58- u := rootURL (c ) + q
59- return pagination .NewPager (c , u , func (r pagination.PageResult ) pagination.Page {
62+ return pagination .NewPager (c , url , func (r pagination.PageResult ) pagination.Page {
6063 return SecGroupRulePage {pagination.LinkedPageBase {PageResult : r }}
6164 })
6265}
You can’t perform that action at this time.
0 commit comments