qingcloud-sdk 0.4.1 → 2.0.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +201 -21
- data/README.md +141 -61
- data/bin/console +3 -3
- data/lib/qingcloud/sdk.rb +16 -14
- data/lib/qingcloud/sdk/general/config.rb +70 -0
- data/lib/qingcloud/sdk/general/contract.rb +28 -17
- data/lib/qingcloud/sdk/general/default/config.yaml +13 -0
- data/lib/qingcloud/sdk/general/error.rb +41 -32
- data/lib/qingcloud/sdk/general/logger.rb +54 -0
- data/lib/qingcloud/sdk/request/preprocessor.rb +81 -0
- data/lib/qingcloud/sdk/request/request.rb +80 -0
- data/lib/qingcloud/sdk/request/signer.rb +53 -0
- data/lib/qingcloud/sdk/service/cache.rb +1005 -0
- data/lib/qingcloud/sdk/service/dns_alias.rb +150 -0
- data/lib/qingcloud/sdk/service/eip.rb +389 -0
- data/lib/qingcloud/sdk/service/image.rb +304 -0
- data/lib/qingcloud/sdk/service/instance.rb +585 -0
- data/lib/qingcloud/sdk/service/job.rb +71 -0
- data/lib/qingcloud/sdk/service/key_pair.rb +257 -0
- data/lib/qingcloud/sdk/service/load_balancer.rb +1119 -0
- data/lib/qingcloud/sdk/service/mongo.rb +566 -0
- data/lib/qingcloud/sdk/service/qingcloud.rb +185 -0
- data/lib/qingcloud/sdk/service/rdb.rb +751 -0
- data/lib/qingcloud/sdk/service/router.rb +778 -0
- data/lib/qingcloud/sdk/service/security_group.rb +645 -0
- data/lib/qingcloud/sdk/service/shared_storage.rb +666 -0
- data/lib/qingcloud/sdk/service/snapshot.rb +283 -0
- data/lib/qingcloud/sdk/service/tag.rb +227 -0
- data/lib/qingcloud/sdk/service/user_data.rb +61 -0
- data/lib/qingcloud/sdk/service/volume.rb +296 -0
- data/lib/qingcloud/sdk/service/vxnet.rb +295 -0
- data/lib/qingcloud/sdk/version.rb +19 -5
- metadata +98 -29
- data/.gitignore +0 -13
- data/.rspec +0 -2
- data/.travis.yml +0 -3
- data/Rakefile +0 -6
- data/lib/qingcloud/sdk/iaas/connector.rb +0 -99
- data/lib/qingcloud/sdk/iaas/foundation.rb +0 -73
- data/lib/qingcloud/sdk/iaas/service.rb +0 -1274
- data/lib/qingcloud/sdk/template/config.json +0 -4
- data/lib/qingcloud/sdk/utility/file_manager.rb +0 -43
- data/lib/qingcloud/sdk/utility/json_parser.rb +0 -41
- data/lib/qingcloud/sdk/utility/logger.rb +0 -19
- data/qingcloud-sdk.gemspec +0 -31
@@ -0,0 +1,304 @@
|
|
1
|
+
# +-------------------------------------------------------------------------
|
2
|
+
# | Copyright (C) 2016 Yunify, Inc.
|
3
|
+
# +-------------------------------------------------------------------------
|
4
|
+
# | Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# | you may not use this work except in compliance with the License.
|
6
|
+
# | You may obtain a copy of the License in the LICENSE file, or at:
|
7
|
+
# |
|
8
|
+
# | http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
# |
|
10
|
+
# | Unless required by applicable law or agreed to in writing, software
|
11
|
+
# | distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# | See the License for the specific language governing permissions and
|
14
|
+
# | limitations under the License.
|
15
|
+
# +-------------------------------------------------------------------------
|
16
|
+
|
17
|
+
require 'active_support/core_ext/hash/keys'
|
18
|
+
|
19
|
+
module QingCloud
|
20
|
+
module SDK
|
21
|
+
class ImageService
|
22
|
+
attr_accessor :config, :properties
|
23
|
+
|
24
|
+
def initialize(config, properties)
|
25
|
+
self.config = config
|
26
|
+
self.properties = properties.deep_symbolize_keys
|
27
|
+
end
|
28
|
+
|
29
|
+
# Documentation URL: https://docs.qingcloud.com/api/image/capture_instance.html
|
30
|
+
def capture_instance(image_name: '', instance: '')
|
31
|
+
input = {
|
32
|
+
config: config,
|
33
|
+
properties: properties,
|
34
|
+
api_name: 'CaptureInstance',
|
35
|
+
request_method: 'GET',
|
36
|
+
request_params: {
|
37
|
+
'image_name' => image_name,
|
38
|
+
'instance' => instance,
|
39
|
+
},
|
40
|
+
}
|
41
|
+
|
42
|
+
capture_instance_input_validate input
|
43
|
+
|
44
|
+
request = Request.new input
|
45
|
+
request.send
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def capture_instance_input_validate(input)
|
51
|
+
input.deep_stringify_keys!
|
52
|
+
|
53
|
+
unless !input['request_params']['instance'].nil? && !input['request_params']['instance'].to_s.empty?
|
54
|
+
raise ParameterRequiredError.new('instance', 'CaptureInstanceInput')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
public
|
59
|
+
|
60
|
+
# Documentation URL: https://docs.qingcloud.com/api/image/delete_images.html
|
61
|
+
def delete_images(images: [])
|
62
|
+
input = {
|
63
|
+
config: config,
|
64
|
+
properties: properties,
|
65
|
+
api_name: 'DeleteImages',
|
66
|
+
request_method: 'GET',
|
67
|
+
request_params: {
|
68
|
+
'images' => images,
|
69
|
+
},
|
70
|
+
}
|
71
|
+
|
72
|
+
delete_images_input_validate input
|
73
|
+
|
74
|
+
request = Request.new input
|
75
|
+
request.send
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
def delete_images_input_validate(input)
|
81
|
+
input.deep_stringify_keys!
|
82
|
+
|
83
|
+
unless !input['request_params']['images'].nil? && !input['request_params']['images'].to_s.empty?
|
84
|
+
raise ParameterRequiredError.new('images', 'DeleteImagesInput')
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
public
|
89
|
+
|
90
|
+
# Documentation URL: https://docs.qingcloud.com/api/image/describe-image-users.html
|
91
|
+
def describe_image_users(image_id: '', limit: nil, offset: nil)
|
92
|
+
input = {
|
93
|
+
config: config,
|
94
|
+
properties: properties,
|
95
|
+
api_name: 'DescribeImageUsers',
|
96
|
+
request_method: 'GET',
|
97
|
+
request_params: {
|
98
|
+
'image_id' => image_id,
|
99
|
+
'limit' => limit,
|
100
|
+
'offset' => offset,
|
101
|
+
},
|
102
|
+
}
|
103
|
+
|
104
|
+
describe_image_users_input_validate input
|
105
|
+
|
106
|
+
request = Request.new input
|
107
|
+
request.send
|
108
|
+
end
|
109
|
+
|
110
|
+
private
|
111
|
+
|
112
|
+
def describe_image_users_input_validate(input)
|
113
|
+
input.deep_stringify_keys!
|
114
|
+
|
115
|
+
unless !input['request_params']['image_id'].nil? && !input['request_params']['image_id'].to_s.empty?
|
116
|
+
raise ParameterRequiredError.new('image_id', 'DescribeImageUsersInput')
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
public
|
121
|
+
|
122
|
+
# Documentation URL: https://docs.qingcloud.com/api/image/describe_images.html
|
123
|
+
def describe_images(images: [], limit: nil, offset: nil, os_family: '', processor_type: '', provider: '', search_word: '', status: [], verbose: nil, visibility: '')
|
124
|
+
input = {
|
125
|
+
config: config,
|
126
|
+
properties: properties,
|
127
|
+
api_name: 'DescribeImages',
|
128
|
+
request_method: 'GET',
|
129
|
+
request_params: {
|
130
|
+
'images' => images,
|
131
|
+
'limit' => limit,
|
132
|
+
'offset' => offset,
|
133
|
+
'os_family' => os_family,
|
134
|
+
'processor_type' => processor_type, # processor_type's available values: 64bit, 32bit
|
135
|
+
'provider' => provider, # provider's available values: system, self
|
136
|
+
'search_word' => search_word,
|
137
|
+
'status' => status,
|
138
|
+
'verbose' => verbose, # verbose's available values: 0
|
139
|
+
'visibility' => visibility, # visibility's available values: public, private
|
140
|
+
},
|
141
|
+
}
|
142
|
+
|
143
|
+
describe_images_input_validate input
|
144
|
+
|
145
|
+
request = Request.new input
|
146
|
+
request.send
|
147
|
+
end
|
148
|
+
|
149
|
+
private
|
150
|
+
|
151
|
+
def describe_images_input_validate(input)
|
152
|
+
input.deep_stringify_keys!
|
153
|
+
|
154
|
+
if input['request_params']['processor_type'] && !input['request_params']['processor_type'].to_s.empty?
|
155
|
+
processor_type_valid_values = %w(64bit 32bit)
|
156
|
+
unless processor_type_valid_values.include? input['request_params']['processor_type'].to_s
|
157
|
+
raise ParameterValueNotAllowedError.new(
|
158
|
+
'processor_type',
|
159
|
+
input['request_params']['processor_type'],
|
160
|
+
processor_type_valid_values,
|
161
|
+
)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
if input['request_params']['provider'] && !input['request_params']['provider'].to_s.empty?
|
166
|
+
provider_valid_values = %w(system self)
|
167
|
+
unless provider_valid_values.include? input['request_params']['provider'].to_s
|
168
|
+
raise ParameterValueNotAllowedError.new(
|
169
|
+
'provider',
|
170
|
+
input['request_params']['provider'],
|
171
|
+
provider_valid_values,
|
172
|
+
)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
if input['request_params']['verbose'] && !input['request_params']['verbose'].to_s.empty?
|
177
|
+
verbose_valid_values = ['0']
|
178
|
+
unless verbose_valid_values.include? input['request_params']['verbose'].to_s
|
179
|
+
raise ParameterValueNotAllowedError.new(
|
180
|
+
'verbose',
|
181
|
+
input['request_params']['verbose'],
|
182
|
+
verbose_valid_values,
|
183
|
+
)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
if input['request_params']['visibility'] && !input['request_params']['visibility'].to_s.empty?
|
188
|
+
visibility_valid_values = %w(public private)
|
189
|
+
unless visibility_valid_values.include? input['request_params']['visibility'].to_s
|
190
|
+
raise ParameterValueNotAllowedError.new(
|
191
|
+
'visibility',
|
192
|
+
input['request_params']['visibility'],
|
193
|
+
visibility_valid_values,
|
194
|
+
)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
public
|
200
|
+
|
201
|
+
# Documentation URL: https://docs.qingcloud.com/api/image/grant-image-to-users.html
|
202
|
+
def grant_image_to_users(image: '', users: [])
|
203
|
+
input = {
|
204
|
+
config: config,
|
205
|
+
properties: properties,
|
206
|
+
api_name: 'GrantImageToUsers',
|
207
|
+
request_method: 'GET',
|
208
|
+
request_params: {
|
209
|
+
'image' => image,
|
210
|
+
'users' => users,
|
211
|
+
},
|
212
|
+
}
|
213
|
+
|
214
|
+
grant_image_to_users_input_validate input
|
215
|
+
|
216
|
+
request = Request.new input
|
217
|
+
request.send
|
218
|
+
end
|
219
|
+
|
220
|
+
private
|
221
|
+
|
222
|
+
def grant_image_to_users_input_validate(input)
|
223
|
+
input.deep_stringify_keys!
|
224
|
+
|
225
|
+
unless !input['request_params']['image'].nil? && !input['request_params']['image'].to_s.empty?
|
226
|
+
raise ParameterRequiredError.new('image', 'GrantImageToUsersInput')
|
227
|
+
end
|
228
|
+
|
229
|
+
unless !input['request_params']['users'].nil? && !input['request_params']['users'].to_s.empty?
|
230
|
+
raise ParameterRequiredError.new('users', 'GrantImageToUsersInput')
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
public
|
235
|
+
|
236
|
+
# Documentation URL: https://docs.qingcloud.com/api/image/modify_image_attributes.html
|
237
|
+
def modify_image_attributes(description: '', image: '', image_name: '')
|
238
|
+
input = {
|
239
|
+
config: config,
|
240
|
+
properties: properties,
|
241
|
+
api_name: 'ModifyImageAttributes',
|
242
|
+
request_method: 'GET',
|
243
|
+
request_params: {
|
244
|
+
'description' => description,
|
245
|
+
'image' => image,
|
246
|
+
'image_name' => image_name,
|
247
|
+
},
|
248
|
+
}
|
249
|
+
|
250
|
+
modify_image_attributes_input_validate input
|
251
|
+
|
252
|
+
request = Request.new input
|
253
|
+
request.send
|
254
|
+
end
|
255
|
+
|
256
|
+
private
|
257
|
+
|
258
|
+
def modify_image_attributes_input_validate(input)
|
259
|
+
input.deep_stringify_keys!
|
260
|
+
|
261
|
+
unless !input['request_params']['image'].nil? && !input['request_params']['image'].to_s.empty?
|
262
|
+
raise ParameterRequiredError.new('image', 'ModifyImageAttributesInput')
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
public
|
267
|
+
|
268
|
+
# Documentation URL: https://docs.qingcloud.com/api/image/revoke-image-from-users.html
|
269
|
+
def revoke_image_from_users(image: '', users: [])
|
270
|
+
input = {
|
271
|
+
config: config,
|
272
|
+
properties: properties,
|
273
|
+
api_name: 'RevokeImageFromUsers',
|
274
|
+
request_method: 'GET',
|
275
|
+
request_params: {
|
276
|
+
'image' => image,
|
277
|
+
'users' => users,
|
278
|
+
},
|
279
|
+
}
|
280
|
+
|
281
|
+
revoke_image_from_users_input_validate input
|
282
|
+
|
283
|
+
request = Request.new input
|
284
|
+
request.send
|
285
|
+
end
|
286
|
+
|
287
|
+
private
|
288
|
+
|
289
|
+
def revoke_image_from_users_input_validate(input)
|
290
|
+
input.deep_stringify_keys!
|
291
|
+
|
292
|
+
unless !input['request_params']['image'].nil? && !input['request_params']['image'].to_s.empty?
|
293
|
+
raise ParameterRequiredError.new('image', 'RevokeImageFromUsersInput')
|
294
|
+
end
|
295
|
+
|
296
|
+
unless !input['request_params']['users'].nil? && !input['request_params']['users'].to_s.empty?
|
297
|
+
raise ParameterRequiredError.new('users', 'RevokeImageFromUsersInput')
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
public
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
@@ -0,0 +1,585 @@
|
|
1
|
+
# +-------------------------------------------------------------------------
|
2
|
+
# | Copyright (C) 2016 Yunify, Inc.
|
3
|
+
# +-------------------------------------------------------------------------
|
4
|
+
# | Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# | you may not use this work except in compliance with the License.
|
6
|
+
# | You may obtain a copy of the License in the LICENSE file, or at:
|
7
|
+
# |
|
8
|
+
# | http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
# |
|
10
|
+
# | Unless required by applicable law or agreed to in writing, software
|
11
|
+
# | distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# | See the License for the specific language governing permissions and
|
14
|
+
# | limitations under the License.
|
15
|
+
# +-------------------------------------------------------------------------
|
16
|
+
|
17
|
+
require 'active_support/core_ext/hash/keys'
|
18
|
+
|
19
|
+
module QingCloud
|
20
|
+
module SDK
|
21
|
+
class InstanceService
|
22
|
+
attr_accessor :config, :properties
|
23
|
+
|
24
|
+
def initialize(config, properties)
|
25
|
+
self.config = config
|
26
|
+
self.properties = properties.deep_symbolize_keys
|
27
|
+
end
|
28
|
+
|
29
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/describe_instance_types.html
|
30
|
+
def describe_instance_types(instance_types: [])
|
31
|
+
input = {
|
32
|
+
config: config,
|
33
|
+
properties: properties,
|
34
|
+
api_name: 'DescribeInstanceTypes',
|
35
|
+
request_method: 'GET',
|
36
|
+
request_params: {
|
37
|
+
'instance_types' => instance_types,
|
38
|
+
},
|
39
|
+
}
|
40
|
+
|
41
|
+
describe_instance_types_input_validate input
|
42
|
+
|
43
|
+
request = Request.new input
|
44
|
+
request.send
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def describe_instance_types_input_validate(input)
|
50
|
+
input.deep_stringify_keys!
|
51
|
+
end
|
52
|
+
|
53
|
+
public
|
54
|
+
|
55
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/describe_instances.html
|
56
|
+
def describe_instances(image_id: [], instance_class: nil, instance_type: [], instances: [], limit: nil, offset: nil, search_word: '', status: [], tags: [], verbose: nil)
|
57
|
+
input = {
|
58
|
+
config: config,
|
59
|
+
properties: properties,
|
60
|
+
api_name: 'DescribeInstances',
|
61
|
+
request_method: 'GET',
|
62
|
+
request_params: {
|
63
|
+
'image_id' => image_id,
|
64
|
+
'instance_class' => instance_class, # instance_class's available values: 0, 1
|
65
|
+
'instance_type' => instance_type,
|
66
|
+
'instances' => instances,
|
67
|
+
'limit' => limit,
|
68
|
+
'offset' => offset,
|
69
|
+
'search_word' => search_word,
|
70
|
+
'status' => status,
|
71
|
+
'tags' => tags,
|
72
|
+
'verbose' => verbose, # verbose's available values: 0, 1
|
73
|
+
},
|
74
|
+
}
|
75
|
+
|
76
|
+
describe_instances_input_validate input
|
77
|
+
|
78
|
+
request = Request.new input
|
79
|
+
request.send
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
def describe_instances_input_validate(input)
|
85
|
+
input.deep_stringify_keys!
|
86
|
+
|
87
|
+
if input['request_params']['instance_class'] && !input['request_params']['instance_class'].to_s.empty?
|
88
|
+
instance_class_valid_values = %w(0 1)
|
89
|
+
unless instance_class_valid_values.include? input['request_params']['instance_class'].to_s
|
90
|
+
raise ParameterValueNotAllowedError.new(
|
91
|
+
'instance_class',
|
92
|
+
input['request_params']['instance_class'],
|
93
|
+
instance_class_valid_values,
|
94
|
+
)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
if input['request_params']['verbose'] && !input['request_params']['verbose'].to_s.empty?
|
99
|
+
verbose_valid_values = %w(0 1)
|
100
|
+
unless verbose_valid_values.include? input['request_params']['verbose'].to_s
|
101
|
+
raise ParameterValueNotAllowedError.new(
|
102
|
+
'verbose',
|
103
|
+
input['request_params']['verbose'],
|
104
|
+
verbose_valid_values,
|
105
|
+
)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
public
|
111
|
+
|
112
|
+
# Documentation URL: https://docs.qingcloud.com/api/monitor/get_monitor.html
|
113
|
+
def get_instance_monitor(end_time: '', meters: [], resource: '', start_time: '', step: '')
|
114
|
+
input = {
|
115
|
+
config: config,
|
116
|
+
properties: properties,
|
117
|
+
api_name: 'GetMonitor',
|
118
|
+
request_method: 'GET',
|
119
|
+
request_params: {
|
120
|
+
'end_time' => end_time,
|
121
|
+
'meters' => meters,
|
122
|
+
'resource' => resource,
|
123
|
+
'start_time' => start_time,
|
124
|
+
'step' => step, # step's available values: 5m, 15m, 2h, 1d
|
125
|
+
},
|
126
|
+
}
|
127
|
+
|
128
|
+
get_instance_monitor_input_validate input
|
129
|
+
|
130
|
+
request = Request.new input
|
131
|
+
request.send
|
132
|
+
end
|
133
|
+
|
134
|
+
private
|
135
|
+
|
136
|
+
def get_instance_monitor_input_validate(input)
|
137
|
+
input.deep_stringify_keys!
|
138
|
+
|
139
|
+
unless !input['request_params']['end_time'].nil? && !input['request_params']['end_time'].to_s.empty?
|
140
|
+
raise ParameterRequiredError.new('end_time', 'GetInstanceMonitorInput')
|
141
|
+
end
|
142
|
+
|
143
|
+
unless !input['request_params']['meters'].nil? && !input['request_params']['meters'].to_s.empty?
|
144
|
+
raise ParameterRequiredError.new('meters', 'GetInstanceMonitorInput')
|
145
|
+
end
|
146
|
+
|
147
|
+
unless !input['request_params']['resource'].nil? && !input['request_params']['resource'].to_s.empty?
|
148
|
+
raise ParameterRequiredError.new('resource', 'GetInstanceMonitorInput')
|
149
|
+
end
|
150
|
+
|
151
|
+
unless !input['request_params']['start_time'].nil? && !input['request_params']['start_time'].to_s.empty?
|
152
|
+
raise ParameterRequiredError.new('start_time', 'GetInstanceMonitorInput')
|
153
|
+
end
|
154
|
+
|
155
|
+
unless !input['request_params']['step'].nil? && !input['request_params']['step'].to_s.empty?
|
156
|
+
raise ParameterRequiredError.new('step', 'GetInstanceMonitorInput')
|
157
|
+
end
|
158
|
+
|
159
|
+
if input['request_params']['step'] && !input['request_params']['step'].to_s.empty?
|
160
|
+
step_valid_values = %w(5m 15m 2h 1d)
|
161
|
+
unless step_valid_values.include? input['request_params']['step'].to_s
|
162
|
+
raise ParameterValueNotAllowedError.new(
|
163
|
+
'step',
|
164
|
+
input['request_params']['step'],
|
165
|
+
step_valid_values,
|
166
|
+
)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
public
|
172
|
+
|
173
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/modify_instance_attributes.html
|
174
|
+
def modify_instance_attributes(description: '', instance: '', instance_name: '')
|
175
|
+
input = {
|
176
|
+
config: config,
|
177
|
+
properties: properties,
|
178
|
+
api_name: 'ModifyInstanceAttributes',
|
179
|
+
request_method: 'GET',
|
180
|
+
request_params: {
|
181
|
+
'description' => description,
|
182
|
+
'instance' => instance,
|
183
|
+
'instance_name' => instance_name,
|
184
|
+
},
|
185
|
+
}
|
186
|
+
|
187
|
+
modify_instance_attributes_input_validate input
|
188
|
+
|
189
|
+
request = Request.new input
|
190
|
+
request.send
|
191
|
+
end
|
192
|
+
|
193
|
+
private
|
194
|
+
|
195
|
+
def modify_instance_attributes_input_validate(input)
|
196
|
+
input.deep_stringify_keys!
|
197
|
+
|
198
|
+
unless !input['request_params']['instance'].nil? && !input['request_params']['instance'].to_s.empty?
|
199
|
+
raise ParameterRequiredError.new('instance', 'ModifyInstanceAttributesInput')
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
public
|
204
|
+
|
205
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/reset_instances.html
|
206
|
+
def reset_instances(instances: [], login_keypair: '', login_mode: '', login_passwd: '', need_newsid: nil)
|
207
|
+
input = {
|
208
|
+
config: config,
|
209
|
+
properties: properties,
|
210
|
+
api_name: 'ResetInstances',
|
211
|
+
request_method: 'GET',
|
212
|
+
request_params: {
|
213
|
+
'instances' => instances,
|
214
|
+
'login_keypair' => login_keypair,
|
215
|
+
'login_mode' => login_mode, # login_mode's available values: keypair, passwd
|
216
|
+
'login_passwd' => login_passwd,
|
217
|
+
'need_newsid' => need_newsid, # need_newsid's available values: 0, 1
|
218
|
+
},
|
219
|
+
}
|
220
|
+
|
221
|
+
reset_instances_input_validate input
|
222
|
+
|
223
|
+
request = Request.new input
|
224
|
+
request.send
|
225
|
+
end
|
226
|
+
|
227
|
+
private
|
228
|
+
|
229
|
+
def reset_instances_input_validate(input)
|
230
|
+
input.deep_stringify_keys!
|
231
|
+
|
232
|
+
unless !input['request_params']['instances'].nil? && !input['request_params']['instances'].to_s.empty?
|
233
|
+
raise ParameterRequiredError.new('instances', 'ResetInstancesInput')
|
234
|
+
end
|
235
|
+
|
236
|
+
unless !input['request_params']['login_mode'].nil? && !input['request_params']['login_mode'].to_s.empty?
|
237
|
+
raise ParameterRequiredError.new('login_mode', 'ResetInstancesInput')
|
238
|
+
end
|
239
|
+
|
240
|
+
if input['request_params']['login_mode'] && !input['request_params']['login_mode'].to_s.empty?
|
241
|
+
login_mode_valid_values = %w(keypair passwd)
|
242
|
+
unless login_mode_valid_values.include? input['request_params']['login_mode'].to_s
|
243
|
+
raise ParameterValueNotAllowedError.new(
|
244
|
+
'login_mode',
|
245
|
+
input['request_params']['login_mode'],
|
246
|
+
login_mode_valid_values,
|
247
|
+
)
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
if input['request_params']['need_newsid'] && !input['request_params']['need_newsid'].to_s.empty?
|
252
|
+
need_newsid_valid_values = %w(0 1)
|
253
|
+
unless need_newsid_valid_values.include? input['request_params']['need_newsid'].to_s
|
254
|
+
raise ParameterValueNotAllowedError.new(
|
255
|
+
'need_newsid',
|
256
|
+
input['request_params']['need_newsid'],
|
257
|
+
need_newsid_valid_values,
|
258
|
+
)
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
public
|
264
|
+
|
265
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/resize_instances.html
|
266
|
+
def resize_instances(cpu: nil, instance_type: '', instances: [], memory: nil)
|
267
|
+
input = {
|
268
|
+
config: config,
|
269
|
+
properties: properties,
|
270
|
+
api_name: 'ResizeInstances',
|
271
|
+
request_method: 'GET',
|
272
|
+
request_params: {
|
273
|
+
'cpu' => cpu, # cpu's available values: 1, 2, 4, 8, 16
|
274
|
+
'instance_type' => instance_type,
|
275
|
+
'instances' => instances,
|
276
|
+
'memory' => memory, # memory's available values: 1024, 2048, 4096, 6144, 8192, 12288, 16384, 24576, 32768
|
277
|
+
},
|
278
|
+
}
|
279
|
+
|
280
|
+
resize_instances_input_validate input
|
281
|
+
|
282
|
+
request = Request.new input
|
283
|
+
request.send
|
284
|
+
end
|
285
|
+
|
286
|
+
private
|
287
|
+
|
288
|
+
def resize_instances_input_validate(input)
|
289
|
+
input.deep_stringify_keys!
|
290
|
+
|
291
|
+
if input['request_params']['cpu'] && !input['request_params']['cpu'].to_s.empty?
|
292
|
+
cpu_valid_values = %w(1 2 4 8 16)
|
293
|
+
unless cpu_valid_values.include? input['request_params']['cpu'].to_s
|
294
|
+
raise ParameterValueNotAllowedError.new(
|
295
|
+
'cpu',
|
296
|
+
input['request_params']['cpu'],
|
297
|
+
cpu_valid_values,
|
298
|
+
)
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
unless !input['request_params']['instances'].nil? && !input['request_params']['instances'].to_s.empty?
|
303
|
+
raise ParameterRequiredError.new('instances', 'ResizeInstancesInput')
|
304
|
+
end
|
305
|
+
|
306
|
+
if input['request_params']['memory'] && !input['request_params']['memory'].to_s.empty?
|
307
|
+
memory_valid_values = %w(1024 2048 4096 6144 8192 12288 16384 24576 32768)
|
308
|
+
unless memory_valid_values.include? input['request_params']['memory'].to_s
|
309
|
+
raise ParameterValueNotAllowedError.new(
|
310
|
+
'memory',
|
311
|
+
input['request_params']['memory'],
|
312
|
+
memory_valid_values,
|
313
|
+
)
|
314
|
+
end
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
public
|
319
|
+
|
320
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/restart_instances.html
|
321
|
+
def restart_instances(instances: [])
|
322
|
+
input = {
|
323
|
+
config: config,
|
324
|
+
properties: properties,
|
325
|
+
api_name: 'RestartInstances',
|
326
|
+
request_method: 'GET',
|
327
|
+
request_params: {
|
328
|
+
'instances' => instances,
|
329
|
+
},
|
330
|
+
}
|
331
|
+
|
332
|
+
restart_instances_input_validate input
|
333
|
+
|
334
|
+
request = Request.new input
|
335
|
+
request.send
|
336
|
+
end
|
337
|
+
|
338
|
+
private
|
339
|
+
|
340
|
+
def restart_instances_input_validate(input)
|
341
|
+
input.deep_stringify_keys!
|
342
|
+
|
343
|
+
unless !input['request_params']['instances'].nil? && !input['request_params']['instances'].to_s.empty?
|
344
|
+
raise ParameterRequiredError.new('instances', 'RestartInstancesInput')
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
public
|
349
|
+
|
350
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/run_instances.html
|
351
|
+
def run_instances(billing_id: '', count: nil, cpu: nil, hostname: '', image_id: '', instance_class: nil, instance_name: '', instance_type: '', login_keypair: '', login_mode: '', login_passwd: '', memory: nil, need_newsid: nil, need_userdata: nil, security_group: '', ui_type: '', userdata_file: '', userdata_path: '', userdata_type: '', userdata_value: '', volumes: [], vxnets: [])
|
352
|
+
input = {
|
353
|
+
config: config,
|
354
|
+
properties: properties,
|
355
|
+
api_name: 'RunInstances',
|
356
|
+
request_method: 'GET',
|
357
|
+
request_params: {
|
358
|
+
'billing_id' => billing_id,
|
359
|
+
'count' => count,
|
360
|
+
'cpu' => cpu, # cpu's available values: 1, 2, 4, 8, 16
|
361
|
+
'hostname' => hostname,
|
362
|
+
'image_id' => image_id,
|
363
|
+
'instance_class' => instance_class, # instance_class's available values: 0, 1
|
364
|
+
'instance_name' => instance_name,
|
365
|
+
'instance_type' => instance_type,
|
366
|
+
'login_keypair' => login_keypair,
|
367
|
+
'login_mode' => login_mode, # login_mode's available values: keypair, passwd
|
368
|
+
'login_passwd' => login_passwd,
|
369
|
+
'memory' => memory, # memory's available values: 1024, 2048, 4096, 6144, 8192, 12288, 16384, 24576, 32768
|
370
|
+
'need_newsid' => need_newsid, # need_newsid's available values: 0, 1
|
371
|
+
'need_userdata' => need_userdata, # need_userdata's available values: 0, 1
|
372
|
+
'security_group' => security_group,
|
373
|
+
'ui_type' => ui_type,
|
374
|
+
'userdata_file' => userdata_file,
|
375
|
+
'userdata_path' => userdata_path,
|
376
|
+
'userdata_type' => userdata_type, # userdata_type's available values: plain, exec, tar
|
377
|
+
'userdata_value' => userdata_value,
|
378
|
+
'volumes' => volumes,
|
379
|
+
'vxnets' => vxnets,
|
380
|
+
},
|
381
|
+
}
|
382
|
+
|
383
|
+
run_instances_input_validate input
|
384
|
+
|
385
|
+
request = Request.new input
|
386
|
+
request.send
|
387
|
+
end
|
388
|
+
|
389
|
+
private
|
390
|
+
|
391
|
+
def run_instances_input_validate(input)
|
392
|
+
input.deep_stringify_keys!
|
393
|
+
|
394
|
+
if input['request_params']['cpu'] && !input['request_params']['cpu'].to_s.empty?
|
395
|
+
cpu_valid_values = %w(1 2 4 8 16)
|
396
|
+
unless cpu_valid_values.include? input['request_params']['cpu'].to_s
|
397
|
+
raise ParameterValueNotAllowedError.new(
|
398
|
+
'cpu',
|
399
|
+
input['request_params']['cpu'],
|
400
|
+
cpu_valid_values,
|
401
|
+
)
|
402
|
+
end
|
403
|
+
end
|
404
|
+
|
405
|
+
unless !input['request_params']['image_id'].nil? && !input['request_params']['image_id'].to_s.empty?
|
406
|
+
raise ParameterRequiredError.new('image_id', 'RunInstancesInput')
|
407
|
+
end
|
408
|
+
|
409
|
+
if input['request_params']['instance_class'] && !input['request_params']['instance_class'].to_s.empty?
|
410
|
+
instance_class_valid_values = %w(0 1)
|
411
|
+
unless instance_class_valid_values.include? input['request_params']['instance_class'].to_s
|
412
|
+
raise ParameterValueNotAllowedError.new(
|
413
|
+
'instance_class',
|
414
|
+
input['request_params']['instance_class'],
|
415
|
+
instance_class_valid_values,
|
416
|
+
)
|
417
|
+
end
|
418
|
+
end
|
419
|
+
|
420
|
+
unless !input['request_params']['login_mode'].nil? && !input['request_params']['login_mode'].to_s.empty?
|
421
|
+
raise ParameterRequiredError.new('login_mode', 'RunInstancesInput')
|
422
|
+
end
|
423
|
+
|
424
|
+
if input['request_params']['login_mode'] && !input['request_params']['login_mode'].to_s.empty?
|
425
|
+
login_mode_valid_values = %w(keypair passwd)
|
426
|
+
unless login_mode_valid_values.include? input['request_params']['login_mode'].to_s
|
427
|
+
raise ParameterValueNotAllowedError.new(
|
428
|
+
'login_mode',
|
429
|
+
input['request_params']['login_mode'],
|
430
|
+
login_mode_valid_values,
|
431
|
+
)
|
432
|
+
end
|
433
|
+
end
|
434
|
+
|
435
|
+
if input['request_params']['memory'] && !input['request_params']['memory'].to_s.empty?
|
436
|
+
memory_valid_values = %w(1024 2048 4096 6144 8192 12288 16384 24576 32768)
|
437
|
+
unless memory_valid_values.include? input['request_params']['memory'].to_s
|
438
|
+
raise ParameterValueNotAllowedError.new(
|
439
|
+
'memory',
|
440
|
+
input['request_params']['memory'],
|
441
|
+
memory_valid_values,
|
442
|
+
)
|
443
|
+
end
|
444
|
+
end
|
445
|
+
|
446
|
+
if input['request_params']['need_newsid'] && !input['request_params']['need_newsid'].to_s.empty?
|
447
|
+
need_newsid_valid_values = %w(0 1)
|
448
|
+
unless need_newsid_valid_values.include? input['request_params']['need_newsid'].to_s
|
449
|
+
raise ParameterValueNotAllowedError.new(
|
450
|
+
'need_newsid',
|
451
|
+
input['request_params']['need_newsid'],
|
452
|
+
need_newsid_valid_values,
|
453
|
+
)
|
454
|
+
end
|
455
|
+
end
|
456
|
+
|
457
|
+
if input['request_params']['need_userdata'] && !input['request_params']['need_userdata'].to_s.empty?
|
458
|
+
need_userdata_valid_values = %w(0 1)
|
459
|
+
unless need_userdata_valid_values.include? input['request_params']['need_userdata'].to_s
|
460
|
+
raise ParameterValueNotAllowedError.new(
|
461
|
+
'need_userdata',
|
462
|
+
input['request_params']['need_userdata'],
|
463
|
+
need_userdata_valid_values,
|
464
|
+
)
|
465
|
+
end
|
466
|
+
end
|
467
|
+
|
468
|
+
if input['request_params']['userdata_type'] && !input['request_params']['userdata_type'].to_s.empty?
|
469
|
+
userdata_type_valid_values = %w(plain exec tar)
|
470
|
+
unless userdata_type_valid_values.include? input['request_params']['userdata_type'].to_s
|
471
|
+
raise ParameterValueNotAllowedError.new(
|
472
|
+
'userdata_type',
|
473
|
+
input['request_params']['userdata_type'],
|
474
|
+
userdata_type_valid_values,
|
475
|
+
)
|
476
|
+
end
|
477
|
+
end
|
478
|
+
end
|
479
|
+
|
480
|
+
public
|
481
|
+
|
482
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/start_instances.html
|
483
|
+
def start_instances(instances: [])
|
484
|
+
input = {
|
485
|
+
config: config,
|
486
|
+
properties: properties,
|
487
|
+
api_name: 'StartInstances',
|
488
|
+
request_method: 'GET',
|
489
|
+
request_params: {
|
490
|
+
'instances' => instances,
|
491
|
+
},
|
492
|
+
}
|
493
|
+
|
494
|
+
start_instances_input_validate input
|
495
|
+
|
496
|
+
request = Request.new input
|
497
|
+
request.send
|
498
|
+
end
|
499
|
+
|
500
|
+
private
|
501
|
+
|
502
|
+
def start_instances_input_validate(input)
|
503
|
+
input.deep_stringify_keys!
|
504
|
+
|
505
|
+
unless !input['request_params']['instances'].nil? && !input['request_params']['instances'].to_s.empty?
|
506
|
+
raise ParameterRequiredError.new('instances', 'StartInstancesInput')
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
510
|
+
public
|
511
|
+
|
512
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/stop_instances.html
|
513
|
+
def stop_instances(force: nil, instances: [])
|
514
|
+
input = {
|
515
|
+
config: config,
|
516
|
+
properties: properties,
|
517
|
+
api_name: 'StopInstances',
|
518
|
+
request_method: 'GET',
|
519
|
+
request_params: {
|
520
|
+
'force' => force, # force's available values: 0, 1
|
521
|
+
'instances' => instances,
|
522
|
+
},
|
523
|
+
}
|
524
|
+
|
525
|
+
stop_instances_input_validate input
|
526
|
+
|
527
|
+
request = Request.new input
|
528
|
+
request.send
|
529
|
+
end
|
530
|
+
|
531
|
+
private
|
532
|
+
|
533
|
+
def stop_instances_input_validate(input)
|
534
|
+
input.deep_stringify_keys!
|
535
|
+
|
536
|
+
if input['request_params']['force'] && !input['request_params']['force'].to_s.empty?
|
537
|
+
force_valid_values = %w(0 1)
|
538
|
+
unless force_valid_values.include? input['request_params']['force'].to_s
|
539
|
+
raise ParameterValueNotAllowedError.new(
|
540
|
+
'force',
|
541
|
+
input['request_params']['force'],
|
542
|
+
force_valid_values,
|
543
|
+
)
|
544
|
+
end
|
545
|
+
end
|
546
|
+
|
547
|
+
unless !input['request_params']['instances'].nil? && !input['request_params']['instances'].to_s.empty?
|
548
|
+
raise ParameterRequiredError.new('instances', 'StopInstancesInput')
|
549
|
+
end
|
550
|
+
end
|
551
|
+
|
552
|
+
public
|
553
|
+
|
554
|
+
# Documentation URL: https://docs.qingcloud.com/api/instance/terminate_instances.html
|
555
|
+
def terminate_instances(instances: [])
|
556
|
+
input = {
|
557
|
+
config: config,
|
558
|
+
properties: properties,
|
559
|
+
api_name: 'TerminateInstances',
|
560
|
+
request_method: 'GET',
|
561
|
+
request_params: {
|
562
|
+
'instances' => instances,
|
563
|
+
},
|
564
|
+
}
|
565
|
+
|
566
|
+
terminate_instances_input_validate input
|
567
|
+
|
568
|
+
request = Request.new input
|
569
|
+
request.send
|
570
|
+
end
|
571
|
+
|
572
|
+
private
|
573
|
+
|
574
|
+
def terminate_instances_input_validate(input)
|
575
|
+
input.deep_stringify_keys!
|
576
|
+
|
577
|
+
unless !input['request_params']['instances'].nil? && !input['request_params']['instances'].to_s.empty?
|
578
|
+
raise ParameterRequiredError.new('instances', 'TerminateInstancesInput')
|
579
|
+
end
|
580
|
+
end
|
581
|
+
|
582
|
+
public
|
583
|
+
end
|
584
|
+
end
|
585
|
+
end
|