Remove BPA from Makefile
[icn.git] / cmd / bpa-operator / vendor / github.com / gophercloud / gophercloud / openstack / identity / v2 / tenants / requests.go
1 package tenants
2
3 import (
4         "github.com/gophercloud/gophercloud"
5         "github.com/gophercloud/gophercloud/pagination"
6 )
7
8 // ListOpts filters the Tenants that are returned by the List call.
9 type ListOpts struct {
10         // Marker is the ID of the last Tenant on the previous page.
11         Marker string `q:"marker"`
12
13         // Limit specifies the page size.
14         Limit int `q:"limit"`
15 }
16
17 // List enumerates the Tenants to which the current token has access.
18 func List(client *gophercloud.ServiceClient, opts *ListOpts) pagination.Pager {
19         url := listURL(client)
20         if opts != nil {
21                 q, err := gophercloud.BuildQueryString(opts)
22                 if err != nil {
23                         return pagination.Pager{Err: err}
24                 }
25                 url += q.String()
26         }
27         return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
28                 return TenantPage{pagination.LinkedPageBase{PageResult: r}}
29         })
30 }
31
32 // CreateOpts represents the options needed when creating new tenant.
33 type CreateOpts struct {
34         // Name is the name of the tenant.
35         Name string `json:"name" required:"true"`
36
37         // Description is the description of the tenant.
38         Description string `json:"description,omitempty"`
39
40         // Enabled sets the tenant status to enabled or disabled.
41         Enabled *bool `json:"enabled,omitempty"`
42 }
43
44 // CreateOptsBuilder enables extensions to add additional parameters to the
45 // Create request.
46 type CreateOptsBuilder interface {
47         ToTenantCreateMap() (map[string]interface{}, error)
48 }
49
50 // ToTenantCreateMap assembles a request body based on the contents of
51 // a CreateOpts.
52 func (opts CreateOpts) ToTenantCreateMap() (map[string]interface{}, error) {
53         return gophercloud.BuildRequestBody(opts, "tenant")
54 }
55
56 // Create is the operation responsible for creating new tenant.
57 func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) {
58         b, err := opts.ToTenantCreateMap()
59         if err != nil {
60                 r.Err = err
61                 return
62         }
63         _, r.Err = client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{
64                 OkCodes: []int{200, 201},
65         })
66         return
67 }
68
69 // Get requests details on a single tenant by ID.
70 func Get(client *gophercloud.ServiceClient, id string) (r GetResult) {
71         _, r.Err = client.Get(getURL(client, id), &r.Body, nil)
72         return
73 }
74
75 // UpdateOptsBuilder allows extensions to add additional parameters to the
76 // Update request.
77 type UpdateOptsBuilder interface {
78         ToTenantUpdateMap() (map[string]interface{}, error)
79 }
80
81 // UpdateOpts specifies the base attributes that may be updated on an existing
82 // tenant.
83 type UpdateOpts struct {
84         // Name is the name of the tenant.
85         Name string `json:"name,omitempty"`
86
87         // Description is the description of the tenant.
88         Description *string `json:"description,omitempty"`
89
90         // Enabled sets the tenant status to enabled or disabled.
91         Enabled *bool `json:"enabled,omitempty"`
92 }
93
94 // ToTenantUpdateMap formats an UpdateOpts structure into a request body.
95 func (opts UpdateOpts) ToTenantUpdateMap() (map[string]interface{}, error) {
96         return gophercloud.BuildRequestBody(opts, "tenant")
97 }
98
99 // Update is the operation responsible for updating exist tenants by their TenantID.
100 func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) {
101         b, err := opts.ToTenantUpdateMap()
102         if err != nil {
103                 r.Err = err
104                 return
105         }
106         _, r.Err = client.Put(updateURL(client, id), &b, &r.Body, &gophercloud.RequestOpts{
107                 OkCodes: []int{200},
108         })
109         return
110 }
111
112 // Delete is the operation responsible for permanently deleting a tenant.
113 func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) {
114         _, r.Err = client.Delete(deleteURL(client, id), nil)
115         return
116 }