1package ehpc
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// ApplyNodes invokes the ehpc.ApplyNodes API synchronously
24func (client *Client) ApplyNodes(request *ApplyNodesRequest) (response *ApplyNodesResponse, err error) {
25	response = CreateApplyNodesResponse()
26	err = client.DoAction(request, response)
27	return
28}
29
30// ApplyNodesWithChan invokes the ehpc.ApplyNodes API asynchronously
31func (client *Client) ApplyNodesWithChan(request *ApplyNodesRequest) (<-chan *ApplyNodesResponse, <-chan error) {
32	responseChan := make(chan *ApplyNodesResponse, 1)
33	errChan := make(chan error, 1)
34	err := client.AddAsyncTask(func() {
35		defer close(responseChan)
36		defer close(errChan)
37		response, err := client.ApplyNodes(request)
38		if err != nil {
39			errChan <- err
40		} else {
41			responseChan <- response
42		}
43	})
44	if err != nil {
45		errChan <- err
46		close(responseChan)
47		close(errChan)
48	}
49	return responseChan, errChan
50}
51
52// ApplyNodesWithCallback invokes the ehpc.ApplyNodes API asynchronously
53func (client *Client) ApplyNodesWithCallback(request *ApplyNodesRequest, callback func(response *ApplyNodesResponse, err error)) <-chan int {
54	result := make(chan int, 1)
55	err := client.AddAsyncTask(func() {
56		var response *ApplyNodesResponse
57		var err error
58		defer close(result)
59		response, err = client.ApplyNodes(request)
60		callback(response, err)
61		result <- 1
62	})
63	if err != nil {
64		defer close(result)
65		callback(nil, err)
66		result <- 0
67	}
68	return result
69}
70
71// ApplyNodesRequest is the request struct for api ApplyNodes
72type ApplyNodesRequest struct {
73	*requests.RpcRequest
74	ImageId                       string                         `position:"Query" name:"ImageId"`
75	Memory                        requests.Integer               `position:"Query" name:"Memory"`
76	SystemDiskLevel               string                         `position:"Query" name:"SystemDiskLevel"`
77	AllocatePublicAddress         requests.Boolean               `position:"Query" name:"AllocatePublicAddress"`
78	InternetMaxBandWidthOut       requests.Integer               `position:"Query" name:"InternetMaxBandWidthOut"`
79	ResourceAmountType            string                         `position:"Query" name:"ResourceAmountType"`
80	StrictResourceProvision       requests.Boolean               `position:"Query" name:"StrictResourceProvision"`
81	SystemDiskType                string                         `position:"Query" name:"SystemDiskType"`
82	Cores                         requests.Integer               `position:"Query" name:"Cores"`
83	SystemDiskSize                requests.Integer               `position:"Query" name:"SystemDiskSize"`
84	ZoneInfos                     *[]ApplyNodesZoneInfos         `position:"Query" name:"ZoneInfos"  type:"Repeated"`
85	HostNamePrefix                string                         `position:"Query" name:"HostNamePrefix"`
86	ComputeSpotPriceLimit         requests.Float                 `position:"Query" name:"ComputeSpotPriceLimit"`
87	ClusterId                     string                         `position:"Query" name:"ClusterId"`
88	ComputeSpotStrategy           string                         `position:"Query" name:"ComputeSpotStrategy"`
89	HostNameSuffix                string                         `position:"Query" name:"HostNameSuffix"`
90	PriorityStrategy              string                         `position:"Query" name:"PriorityStrategy"`
91	InstanceFamilyLevel           string                         `position:"Query" name:"InstanceFamilyLevel"`
92	InternetChargeType            string                         `position:"Query" name:"InternetChargeType"`
93	InstanceTypeModel             *[]ApplyNodesInstanceTypeModel `position:"Query" name:"InstanceTypeModel"  type:"Repeated"`
94	InternetMaxBandWidthIn        requests.Integer               `position:"Query" name:"InternetMaxBandWidthIn"`
95	TargetCapacity                requests.Integer               `position:"Query" name:"TargetCapacity"`
96	StrictSatisfiedTargetCapacity requests.Boolean               `position:"Query" name:"StrictSatisfiedTargetCapacity"`
97}
98
99// ApplyNodesZoneInfos is a repeated param struct in ApplyNodesRequest
100type ApplyNodesZoneInfos struct {
101	VSwitchId string `name:"VSwitchId"`
102	ZoneId    string `name:"ZoneId"`
103}
104
105// ApplyNodesInstanceTypeModel is a repeated param struct in ApplyNodesRequest
106type ApplyNodesInstanceTypeModel struct {
107	MaxPrice      string `name:"MaxPrice"`
108	TargetImageId string `name:"TargetImageId"`
109	InstanceType  string `name:"InstanceType"`
110}
111
112// ApplyNodesResponse is the response struct for api ApplyNodes
113type ApplyNodesResponse struct {
114	*responses.BaseResponse
115	RequestId       string                  `json:"RequestId" xml:"RequestId"`
116	Detail          string                  `json:"Detail" xml:"Detail"`
117	SatisfiedAmount int                     `json:"SatisfiedAmount" xml:"SatisfiedAmount"`
118	TaskId          string                  `json:"TaskId" xml:"TaskId"`
119	InstanceIds     InstanceIdsInApplyNodes `json:"InstanceIds" xml:"InstanceIds"`
120}
121
122// CreateApplyNodesRequest creates a request to invoke ApplyNodes API
123func CreateApplyNodesRequest() (request *ApplyNodesRequest) {
124	request = &ApplyNodesRequest{
125		RpcRequest: &requests.RpcRequest{},
126	}
127	request.InitWithApiInfo("EHPC", "2018-04-12", "ApplyNodes", "", "")
128	request.Method = requests.GET
129	return
130}
131
132// CreateApplyNodesResponse creates a response to parse from ApplyNodes response
133func CreateApplyNodesResponse() (response *ApplyNodesResponse) {
134	response = &ApplyNodesResponse{
135		BaseResponse: &responses.BaseResponse{},
136	}
137	return
138}
139