github.com/gophercloud/gophercloud@v1.11.0/openstack/loadbalancer/v2/quotas/requests.go (about) 1 package quotas 2 3 import ( 4 "github.com/gophercloud/gophercloud" 5 ) 6 7 // Get returns load balancer Quotas for a project. 8 func Get(client *gophercloud.ServiceClient, projectID string) (r GetResult) { 9 resp, err := client.Get(getURL(client, projectID), &r.Body, nil) 10 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 11 return 12 } 13 14 // UpdateOptsBuilder allows extensions to add additional parameters to the 15 // Update request. 16 type UpdateOptsBuilder interface { 17 ToQuotaUpdateMap() (map[string]interface{}, error) 18 } 19 20 // UpdateOpts represents options used to update the load balancer Quotas. 21 type UpdateOpts struct { 22 // Loadbalancer represents the number of load balancers. A "-1" value means no limit. 23 Loadbalancer *int `json:"loadbalancer,omitempty"` 24 25 // Listener represents the number of listeners. A "-1" value means no limit. 26 Listener *int `json:"listener,omitempty"` 27 28 // Member represents the number of members. A "-1" value means no limit. 29 Member *int `json:"member,omitempty"` 30 31 // Poool represents the number of pools. A "-1" value means no limit. 32 Pool *int `json:"pool,omitempty"` 33 34 // HealthMonitor represents the number of healthmonitors. A "-1" value means no limit. 35 Healthmonitor *int `json:"healthmonitor,omitempty"` 36 37 // L7Policy represents the number of l7policies. A "-1" value means no limit. 38 L7Policy *int `json:"l7policy,omitempty"` 39 40 // L7Rule represents the number of l7rules. A "-1" value means no limit. 41 L7Rule *int `json:"l7rule,omitempty"` 42 } 43 44 // ToQuotaUpdateMap builds a request body from UpdateOpts. 45 func (opts UpdateOpts) ToQuotaUpdateMap() (map[string]interface{}, error) { 46 return gophercloud.BuildRequestBody(opts, "quota") 47 } 48 49 // Update accepts a UpdateOpts struct and updates an existing load balancer Quotas using the 50 // values provided. 51 func Update(c *gophercloud.ServiceClient, projectID string, opts UpdateOptsBuilder) (r UpdateResult) { 52 b, err := opts.ToQuotaUpdateMap() 53 if err != nil { 54 r.Err = err 55 return 56 } 57 resp, err := c.Put(updateURL(c, projectID), b, &r.Body, &gophercloud.RequestOpts{ 58 // allow 200 (neutron/lbaasv2) and 202 (octavia) 59 OkCodes: []int{200, 202}, 60 }) 61 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 62 return 63 }