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  }