github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/evs/v5/cloudvolumes/requests.go (about)

     1  package cloudvolumes
     2  
     3  import (
     4  	"github.com/chnsz/golangsdk"
     5  )
     6  
     7  type QoSModifyOpts struct {
     8  	IopsAndThroughputOpts IopsAndThroughputOpts `json:"qos_modify" required:"true"`
     9  }
    10  
    11  type IopsAndThroughputOpts struct {
    12  	Iops       int `json:"iops" required:"true"`
    13  	Throughput int `json:"throughput,omitempty"`
    14  }
    15  
    16  func (opts QoSModifyOpts) ToVolumeUpdateQoSMap() (map[string]interface{}, error) {
    17  	return golangsdk.BuildRequestBody(opts, "")
    18  }
    19  
    20  type UpdateQoSOptsBuilder interface {
    21  	ToVolumeUpdateQoSMap() (map[string]interface{}, error)
    22  }
    23  
    24  func ModifyQoS(client *golangsdk.ServiceClient, id string, opts UpdateQoSOptsBuilder) (r JobResult) {
    25  	b, err := opts.ToVolumeUpdateQoSMap()
    26  	if err != nil {
    27  		r.Err = err
    28  		return
    29  	}
    30  	_, r.Err = client.Put(qoSURL(client, id), b, &r.Body, nil)
    31  	return
    32  }