Skip to content

Commit cece9a4

Browse files
committed
Adjust List func to accept a Builder in tenants, routers and security groups packages
1 parent 48faa0f commit cece9a4

3 files changed

Lines changed: 31 additions & 13 deletions

File tree

openstack/identity/v2/tenants/requests.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff 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.
1117
type 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}}

openstack/networking/v2/extensions/layer3/routers/requests.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff 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.
5757
func 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
}

openstack/networking/v2/extensions/security/rules/requests.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff 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.
5353
func 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
}

0 commit comments

Comments
 (0)