1package emr
2
3//Licensed under the Apache License, Version 2.0 (the "License");
4//you may not use this file except in compliance with the License.
5//You may obtain a copy of the License at
6//
7//http://www.apache.org/licenses/LICENSE-2.0
8//
9//Unless required by applicable law or agreed to in writing, software
10//distributed under the License is distributed on an "AS IS" BASIS,
11//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12//See the License for the specific language governing permissions and
13//limitations under the License.
14//
15// Code generated by Alibaba Cloud SDK Code Generator.
16// Changes may cause incorrect behavior and will be lost if the code is regenerated.
17
18import (
19	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
20	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
21)
22
23// CreateScalingTaskGroup invokes the emr.CreateScalingTaskGroup API synchronously
24// api document: https://help.aliyun.com/api/emr/createscalingtaskgroup.html
25func (client *Client) CreateScalingTaskGroup(request *CreateScalingTaskGroupRequest) (response *CreateScalingTaskGroupResponse, err error) {
26	response = CreateCreateScalingTaskGroupResponse()
27	err = client.DoAction(request, response)
28	return
29}
30
31// CreateScalingTaskGroupWithChan invokes the emr.CreateScalingTaskGroup API asynchronously
32// api document: https://help.aliyun.com/api/emr/createscalingtaskgroup.html
33// asynchronous document: https://help.aliyun.com/document_detail/66220.html
34func (client *Client) CreateScalingTaskGroupWithChan(request *CreateScalingTaskGroupRequest) (<-chan *CreateScalingTaskGroupResponse, <-chan error) {
35	responseChan := make(chan *CreateScalingTaskGroupResponse, 1)
36	errChan := make(chan error, 1)
37	err := client.AddAsyncTask(func() {
38		defer close(responseChan)
39		defer close(errChan)
40		response, err := client.CreateScalingTaskGroup(request)
41		if err != nil {
42			errChan <- err
43		} else {
44			responseChan <- response
45		}
46	})
47	if err != nil {
48		errChan <- err
49		close(responseChan)
50		close(errChan)
51	}
52	return responseChan, errChan
53}
54
55// CreateScalingTaskGroupWithCallback invokes the emr.CreateScalingTaskGroup API asynchronously
56// api document: https://help.aliyun.com/api/emr/createscalingtaskgroup.html
57// asynchronous document: https://help.aliyun.com/document_detail/66220.html
58func (client *Client) CreateScalingTaskGroupWithCallback(request *CreateScalingTaskGroupRequest, callback func(response *CreateScalingTaskGroupResponse, err error)) <-chan int {
59	result := make(chan int, 1)
60	err := client.AddAsyncTask(func() {
61		var response *CreateScalingTaskGroupResponse
62		var err error
63		defer close(result)
64		response, err = client.CreateScalingTaskGroup(request)
65		callback(response, err)
66		result <- 1
67	})
68	if err != nil {
69		defer close(result)
70		callback(nil, err)
71		result <- 0
72	}
73	return result
74}
75
76// CreateScalingTaskGroupRequest is the request struct for api CreateScalingTaskGroup
77type CreateScalingTaskGroupRequest struct {
78	*requests.RpcRequest
79	ResourceOwnerId    requests.Integer                         `position:"Query" name:"ResourceOwnerId"`
80	DataDiskCategory   string                                   `position:"Query" name:"DataDiskCategory"`
81	ClusterId          string                                   `position:"Query" name:"ClusterId"`
82	MinSize            requests.Integer                         `position:"Query" name:"MinSize"`
83	SpotStrategy       string                                   `position:"Query" name:"SpotStrategy"`
84	DataDiskSize       requests.Integer                         `position:"Query" name:"DataDiskSize"`
85	SpotPriceLimits    *[]CreateScalingTaskGroupSpotPriceLimits `position:"Query" name:"SpotPriceLimits"  type:"Repeated"`
86	ScalingRule        *[]CreateScalingTaskGroupScalingRule     `position:"Query" name:"ScalingRule"  type:"Repeated"`
87	ActiveRuleCategory string                                   `position:"Query" name:"ActiveRuleCategory"`
88	MaxSize            requests.Integer                         `position:"Query" name:"MaxSize"`
89	DataDiskCount      requests.Integer                         `position:"Query" name:"DataDiskCount"`
90	DefaultCooldown    requests.Integer                         `position:"Query" name:"DefaultCooldown"`
91	PayType            string                                   `position:"Query" name:"PayType"`
92	InstanceTypeList   *[]string                                `position:"Query" name:"InstanceTypeList"  type:"Repeated"`
93}
94
95// CreateScalingTaskGroupSpotPriceLimits is a repeated param struct in CreateScalingTaskGroupRequest
96type CreateScalingTaskGroupSpotPriceLimits struct {
97	InstanceType string `name:"InstanceType"`
98	PriceLimit   string `name:"PriceLimit"`
99}
100
101// CreateScalingTaskGroupScalingRule is a repeated param struct in CreateScalingTaskGroupRequest
102type CreateScalingTaskGroupScalingRule struct {
103	LaunchTime           string    `name:"LaunchTime"`
104	RuleCategory         string    `name:"RuleCategory"`
105	AdjustmentValue      string    `name:"AdjustmentValue"`
106	SchedulerTrigger     *[]string `name:"SchedulerTrigger" type:"Repeated"`
107	AdjustmentType       string    `name:"AdjustmentType"`
108	Cooldown             string    `name:"Cooldown"`
109	RuleName             string    `name:"RuleName"`
110	LaunchExpirationTime string    `name:"LaunchExpirationTime"`
111	RecurrenceValue      string    `name:"RecurrenceValue"`
112	RecurrenceEndTime    string    `name:"RecurrenceEndTime"`
113	CloudWatchTrigger    *[]string `name:"CloudWatchTrigger" type:"Repeated"`
114	RecurrenceType       string    `name:"RecurrenceType"`
115}
116
117// CreateScalingTaskGroupResponse is the response struct for api CreateScalingTaskGroup
118type CreateScalingTaskGroupResponse struct {
119	*responses.BaseResponse
120	RequestId   string `json:"RequestId" xml:"RequestId"`
121	HostGroupId string `json:"HostGroupId" xml:"HostGroupId"`
122}
123
124// CreateCreateScalingTaskGroupRequest creates a request to invoke CreateScalingTaskGroup API
125func CreateCreateScalingTaskGroupRequest() (request *CreateScalingTaskGroupRequest) {
126	request = &CreateScalingTaskGroupRequest{
127		RpcRequest: &requests.RpcRequest{},
128	}
129	request.InitWithApiInfo("Emr", "2016-04-08", "CreateScalingTaskGroup", "emr", "openAPI")
130	return
131}
132
133// CreateCreateScalingTaskGroupResponse creates a response to parse from CreateScalingTaskGroup response
134func CreateCreateScalingTaskGroupResponse() (response *CreateScalingTaskGroupResponse) {
135	response = &CreateScalingTaskGroupResponse{
136		BaseResponse: &responses.BaseResponse{},
137	}
138	return
139}
140