github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/containerinfra/v1/quotas/requests.go (about)

     1  package quotas
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/vnpaycloud-console/gophercloud/v2"
     7  )
     8  
     9  // CreateOptsBuilder Builder.
    10  type CreateOptsBuilder interface {
    11  	ToQuotaCreateMap() (map[string]any, error)
    12  }
    13  
    14  // CreateOpts params
    15  type CreateOpts struct {
    16  	ProjectID string `json:"project_id"`
    17  	Resource  string `json:"resource"`
    18  	HardLimit int    `json:"hard_limit"`
    19  }
    20  
    21  // ToQuotaCreateMap constructs a request body from CreateOpts.
    22  func (opts CreateOpts) ToQuotaCreateMap() (map[string]any, error) {
    23  	return gophercloud.BuildRequestBody(opts, "")
    24  }
    25  
    26  // Create requests the creation of a new quota.
    27  func Create(ctx context.Context, client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) {
    28  	b, err := opts.ToQuotaCreateMap()
    29  	if err != nil {
    30  		r.Err = err
    31  		return
    32  	}
    33  	resp, err := client.Post(ctx, createURL(client), b, &r.Body, &gophercloud.RequestOpts{
    34  		OkCodes: []int{201},
    35  	})
    36  	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
    37  	return
    38  }