github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/apigw/v2/tr_policy/Create.go (about) 1 package throttling_policy 2 3 import ( 4 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/build" 6 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 7 ) 8 9 type CreateOpts struct { 10 GatewayID string `json:"-"` 11 Name string `json:"name" required:"true"` 12 AppCallLimits *int `json:"app_call_limits,omitempty"` 13 ApiCallLimits *int `json:"api_call_limits" required:"true"` 14 TimeInterval *int `json:"time_interval" required:"true"` 15 TimeUnit string `json:"time_unit" required:"true"` 16 Description string `json:"remark,omitempty"` 17 Type *int `json:"type,omitempty"` 18 IpCallLimits *int `json:"ip_call_limits,omitempty"` 19 UserCallLimits *int `json:"user_call_limits,omitempty"` 20 EnableAdaptiveControl string `json:"enable_adaptive_control,omitempty"` 21 } 22 23 func Create(client *golangsdk.ServiceClient, opts CreateOpts) (*ThrottlingResp, error) { 24 b, err := build.RequestBody(opts, "") 25 if err != nil { 26 return nil, err 27 } 28 29 raw, err := client.Post(client.ServiceURL("apigw", "instances", opts.GatewayID, "throttles"), b, nil, &golangsdk.RequestOpts{ 30 OkCodes: []int{201}, 31 }) 32 if err != nil { 33 return nil, err 34 } 35 36 var res ThrottlingResp 37 38 err = extract.Into(raw.Body, &res) 39 return &res, err 40 } 41 42 type ThrottlingResp struct { 43 AppCallLimits int `json:"app_call_limits"` 44 Name string `json:"name"` 45 TimeUnit string `json:"time_unit"` 46 Description string `json:"remark"` 47 ApiCallLimits int `json:"api_call_limits"` 48 Type int `json:"type"` 49 EnableAdaptiveControl string `json:"enable_adaptive_control"` 50 UserCallLimits int `json:"user_call_limits"` 51 TimeInterval int `json:"time_interval"` 52 IpCallLimits int `json:"ip_call_limits"` 53 ID string `json:"id"` 54 BindNum int `json:"bind_num"` 55 IsIncluSpecialThrottle int `json:"is_inclu_special_throttle"` 56 CreateTime string `json:"create_time"` 57 }