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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +201 -21
  3. data/README.md +141 -61
  4. data/bin/console +3 -3
  5. data/lib/qingcloud/sdk.rb +16 -14
  6. data/lib/qingcloud/sdk/general/config.rb +70 -0
  7. data/lib/qingcloud/sdk/general/contract.rb +28 -17
  8. data/lib/qingcloud/sdk/general/default/config.yaml +13 -0
  9. data/lib/qingcloud/sdk/general/error.rb +41 -32
  10. data/lib/qingcloud/sdk/general/logger.rb +54 -0
  11. data/lib/qingcloud/sdk/request/preprocessor.rb +81 -0
  12. data/lib/qingcloud/sdk/request/request.rb +80 -0
  13. data/lib/qingcloud/sdk/request/signer.rb +53 -0
  14. data/lib/qingcloud/sdk/service/cache.rb +1005 -0
  15. data/lib/qingcloud/sdk/service/dns_alias.rb +150 -0
  16. data/lib/qingcloud/sdk/service/eip.rb +389 -0
  17. data/lib/qingcloud/sdk/service/image.rb +304 -0
  18. data/lib/qingcloud/sdk/service/instance.rb +585 -0
  19. data/lib/qingcloud/sdk/service/job.rb +71 -0
  20. data/lib/qingcloud/sdk/service/key_pair.rb +257 -0
  21. data/lib/qingcloud/sdk/service/load_balancer.rb +1119 -0
  22. data/lib/qingcloud/sdk/service/mongo.rb +566 -0
  23. data/lib/qingcloud/sdk/service/qingcloud.rb +185 -0
  24. data/lib/qingcloud/sdk/service/rdb.rb +751 -0
  25. data/lib/qingcloud/sdk/service/router.rb +778 -0
  26. data/lib/qingcloud/sdk/service/security_group.rb +645 -0
  27. data/lib/qingcloud/sdk/service/shared_storage.rb +666 -0
  28. data/lib/qingcloud/sdk/service/snapshot.rb +283 -0
  29. data/lib/qingcloud/sdk/service/tag.rb +227 -0
  30. data/lib/qingcloud/sdk/service/user_data.rb +61 -0
  31. data/lib/qingcloud/sdk/service/volume.rb +296 -0
  32. data/lib/qingcloud/sdk/service/vxnet.rb +295 -0
  33. data/lib/qingcloud/sdk/version.rb +19 -5
  34. metadata +98 -29
  35. data/.gitignore +0 -13
  36. data/.rspec +0 -2
  37. data/.travis.yml +0 -3
  38. data/Rakefile +0 -6
  39. data/lib/qingcloud/sdk/iaas/connector.rb +0 -99
  40. data/lib/qingcloud/sdk/iaas/foundation.rb +0 -73
  41. data/lib/qingcloud/sdk/iaas/service.rb +0 -1274
  42. data/lib/qingcloud/sdk/template/config.json +0 -4
  43. data/lib/qingcloud/sdk/utility/file_manager.rb +0 -43
  44. data/lib/qingcloud/sdk/utility/json_parser.rb +0 -41
  45. data/lib/qingcloud/sdk/utility/logger.rb +0 -19
  46. data/qingcloud-sdk.gemspec +0 -31
@@ -0,0 +1,566 @@
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 MongoService
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/mongo/add_mongo_instances.html
30
+ def add_mongo_instances(mongo: '', node_count: nil, private_ips: [])
31
+ input = {
32
+ config: config,
33
+ properties: properties,
34
+ api_name: 'AddMongoInstances',
35
+ request_method: 'GET',
36
+ request_params: {
37
+ 'mongo' => mongo,
38
+ 'node_count' => node_count,
39
+ 'private_ips' => private_ips,
40
+ },
41
+ }
42
+
43
+ add_mongo_instances_input_validate input
44
+
45
+ request = Request.new input
46
+ request.send
47
+ end
48
+
49
+ private
50
+
51
+ def add_mongo_instances_input_validate(input)
52
+ input.deep_stringify_keys!
53
+
54
+ input['request_params']['private_ips'].map do |x|
55
+ end
56
+ end
57
+
58
+ public
59
+
60
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/change_mongo_vxnet.html
61
+ def change_mongo_vxnet(mongo: '', private_ips: [], vxnet: '')
62
+ input = {
63
+ config: config,
64
+ properties: properties,
65
+ api_name: 'ChangeMongoVxnet',
66
+ request_method: 'GET',
67
+ request_params: {
68
+ 'mongo' => mongo,
69
+ 'private_ips' => private_ips,
70
+ 'vxnet' => vxnet,
71
+ },
72
+ }
73
+
74
+ change_mongo_vxnet_input_validate input
75
+
76
+ request = Request.new input
77
+ request.send
78
+ end
79
+
80
+ private
81
+
82
+ def change_mongo_vxnet_input_validate(input)
83
+ input.deep_stringify_keys!
84
+
85
+ unless !input['request_params']['mongo'].nil? && !input['request_params']['mongo'].to_s.empty?
86
+ raise ParameterRequiredError.new('mongo', 'ChangeMongoVxnetInput')
87
+ end
88
+
89
+ input['request_params']['private_ips'].map do |x|
90
+ end
91
+
92
+ unless !input['request_params']['vxnet'].nil? && !input['request_params']['vxnet'].to_s.empty?
93
+ raise ParameterRequiredError.new('vxnet', 'ChangeMongoVxnetInput')
94
+ end
95
+ end
96
+
97
+ public
98
+
99
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/create_mongo.html
100
+ def create_mongo(auto_backup_time: nil, description: '', mongo_name: '', mongo_password: '', mongo_type: nil, mongo_username: '', mongo_version: nil, private_ips: [], resource_class: nil, storage_size: nil, vxnet: '')
101
+ input = {
102
+ config: config,
103
+ properties: properties,
104
+ api_name: 'CreateMongo',
105
+ request_method: 'GET',
106
+ request_params: {
107
+ 'auto_backup_time' => auto_backup_time,
108
+ 'description' => description,
109
+ 'mongo_name' => mongo_name,
110
+ 'mongo_password' => mongo_password,
111
+ 'mongo_type' => mongo_type,
112
+ 'mongo_username' => mongo_username,
113
+ 'mongo_version' => mongo_version,
114
+ 'private_ips' => private_ips,
115
+ 'resource_class' => resource_class,
116
+ 'storage_size' => storage_size,
117
+ 'vxnet' => vxnet,
118
+ },
119
+ }
120
+
121
+ create_mongo_input_validate input
122
+
123
+ request = Request.new input
124
+ request.send
125
+ end
126
+
127
+ private
128
+
129
+ def create_mongo_input_validate(input)
130
+ input.deep_stringify_keys!
131
+
132
+ unless !input['request_params']['mongo_type'].nil? && !input['request_params']['mongo_type'].to_s.empty?
133
+ raise ParameterRequiredError.new('mongo_type', 'CreateMongoInput')
134
+ end
135
+
136
+ input['request_params']['private_ips'].map do |x|
137
+ end
138
+
139
+ unless !input['request_params']['storage_size'].nil? && !input['request_params']['storage_size'].to_s.empty?
140
+ raise ParameterRequiredError.new('storage_size', 'CreateMongoInput')
141
+ end
142
+
143
+ unless !input['request_params']['vxnet'].nil? && !input['request_params']['vxnet'].to_s.empty?
144
+ raise ParameterRequiredError.new('vxnet', 'CreateMongoInput')
145
+ end
146
+ end
147
+
148
+ public
149
+
150
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/create_mongo_from_snapshot.html
151
+ def create_mongo_from_snapshot(auto_backup_time: nil, mongo_name: '', mongo_type: nil, mongo_version: nil, resource_class: nil, snapshot: '', storage_size: nil, vxnet: '')
152
+ input = {
153
+ config: config,
154
+ properties: properties,
155
+ api_name: 'CreateMongoFromSnapshot',
156
+ request_method: 'GET',
157
+ request_params: {
158
+ 'auto_backup_time' => auto_backup_time,
159
+ 'mongo_name' => mongo_name,
160
+ 'mongo_type' => mongo_type,
161
+ 'mongo_version' => mongo_version,
162
+ 'resource_class' => resource_class,
163
+ 'snapshot' => snapshot,
164
+ 'storage_size' => storage_size,
165
+ 'vxnet' => vxnet,
166
+ },
167
+ }
168
+
169
+ create_mongo_from_snapshot_input_validate input
170
+
171
+ request = Request.new input
172
+ request.send
173
+ end
174
+
175
+ private
176
+
177
+ def create_mongo_from_snapshot_input_validate(input)
178
+ input.deep_stringify_keys!
179
+ end
180
+
181
+ public
182
+
183
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/delete_mongos.html
184
+ def delete_mongos(mongos: [])
185
+ input = {
186
+ config: config,
187
+ properties: properties,
188
+ api_name: 'DeleteMongos',
189
+ request_method: 'GET',
190
+ request_params: {
191
+ 'mongos' => mongos,
192
+ },
193
+ }
194
+
195
+ delete_mongos_input_validate input
196
+
197
+ request = Request.new input
198
+ request.send
199
+ end
200
+
201
+ private
202
+
203
+ def delete_mongos_input_validate(input)
204
+ input.deep_stringify_keys!
205
+
206
+ unless !input['request_params']['mongos'].nil? && !input['request_params']['mongos'].to_s.empty?
207
+ raise ParameterRequiredError.new('mongos', 'DeleteMongosInput')
208
+ end
209
+ end
210
+
211
+ public
212
+
213
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/describe_mongo_nodes.html
214
+ def describe_mongo_nodes(limit: nil, mongo: '', offset: nil, status: [])
215
+ input = {
216
+ config: config,
217
+ properties: properties,
218
+ api_name: 'DescribeMongoNodes',
219
+ request_method: 'GET',
220
+ request_params: {
221
+ 'limit' => limit,
222
+ 'mongo' => mongo,
223
+ 'offset' => offset,
224
+ 'status' => status,
225
+ },
226
+ }
227
+
228
+ describe_mongo_nodes_input_validate input
229
+
230
+ request = Request.new input
231
+ request.send
232
+ end
233
+
234
+ private
235
+
236
+ def describe_mongo_nodes_input_validate(input)
237
+ input.deep_stringify_keys!
238
+
239
+ unless !input['request_params']['mongo'].nil? && !input['request_params']['mongo'].to_s.empty?
240
+ raise ParameterRequiredError.new('mongo', 'DescribeMongoNodesInput')
241
+ end
242
+ end
243
+
244
+ public
245
+
246
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/describe_mongo_parameters.html
247
+ def describe_mongo_parameters(limit: nil, mongo: '', offset: nil)
248
+ input = {
249
+ config: config,
250
+ properties: properties,
251
+ api_name: 'DescribeMongoParameters',
252
+ request_method: 'GET',
253
+ request_params: {
254
+ 'limit' => limit,
255
+ 'mongo' => mongo,
256
+ 'offset' => offset,
257
+ },
258
+ }
259
+
260
+ describe_mongo_parameters_input_validate input
261
+
262
+ request = Request.new input
263
+ request.send
264
+ end
265
+
266
+ private
267
+
268
+ def describe_mongo_parameters_input_validate(input)
269
+ input.deep_stringify_keys!
270
+
271
+ unless !input['request_params']['mongo'].nil? && !input['request_params']['mongo'].to_s.empty?
272
+ raise ParameterRequiredError.new('mongo', 'DescribeMongoParametersInput')
273
+ end
274
+ end
275
+
276
+ public
277
+
278
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/describe_mongos.html
279
+ def describe_mongos(limit: nil, mongo_name: '', mongos: [], offset: nil, status: [], tags: [], verbose: nil)
280
+ input = {
281
+ config: config,
282
+ properties: properties,
283
+ api_name: 'DescribeMongos',
284
+ request_method: 'GET',
285
+ request_params: {
286
+ 'limit' => limit,
287
+ 'mongo_name' => mongo_name,
288
+ 'mongos' => mongos,
289
+ 'offset' => offset,
290
+ 'status' => status,
291
+ 'tags' => tags,
292
+ 'verbose' => verbose,
293
+ },
294
+ }
295
+
296
+ describe_mongos_input_validate input
297
+
298
+ request = Request.new input
299
+ request.send
300
+ end
301
+
302
+ private
303
+
304
+ def describe_mongos_input_validate(input)
305
+ input.deep_stringify_keys!
306
+ end
307
+
308
+ public
309
+
310
+ # Documentation URL: https://docs.qingcloud.com/api/monitor/get_mongo_monitor.html
311
+ def get_mongo_monitor(end_time: '', meters: [], resource: '', start_time: '', step: '')
312
+ input = {
313
+ config: config,
314
+ properties: properties,
315
+ api_name: 'GetMongoMonitor',
316
+ request_method: 'GET',
317
+ request_params: {
318
+ 'end_time' => end_time,
319
+ 'meters' => meters,
320
+ 'resource' => resource,
321
+ 'start_time' => start_time,
322
+ 'step' => step, # step's available values: 5m, 15m, 2h, 1d
323
+ },
324
+ }
325
+
326
+ get_mongo_monitor_input_validate input
327
+
328
+ request = Request.new input
329
+ request.send
330
+ end
331
+
332
+ private
333
+
334
+ def get_mongo_monitor_input_validate(input)
335
+ input.deep_stringify_keys!
336
+
337
+ unless !input['request_params']['end_time'].nil? && !input['request_params']['end_time'].to_s.empty?
338
+ raise ParameterRequiredError.new('end_time', 'GetMongoMonitorInput')
339
+ end
340
+
341
+ unless !input['request_params']['meters'].nil? && !input['request_params']['meters'].to_s.empty?
342
+ raise ParameterRequiredError.new('meters', 'GetMongoMonitorInput')
343
+ end
344
+
345
+ unless !input['request_params']['resource'].nil? && !input['request_params']['resource'].to_s.empty?
346
+ raise ParameterRequiredError.new('resource', 'GetMongoMonitorInput')
347
+ end
348
+
349
+ unless !input['request_params']['start_time'].nil? && !input['request_params']['start_time'].to_s.empty?
350
+ raise ParameterRequiredError.new('start_time', 'GetMongoMonitorInput')
351
+ end
352
+
353
+ unless !input['request_params']['step'].nil? && !input['request_params']['step'].to_s.empty?
354
+ raise ParameterRequiredError.new('step', 'GetMongoMonitorInput')
355
+ end
356
+
357
+ if input['request_params']['step'] && !input['request_params']['step'].to_s.empty?
358
+ step_valid_values = %w(5m 15m 2h 1d)
359
+ unless step_valid_values.include? input['request_params']['step'].to_s
360
+ raise ParameterValueNotAllowedError.new(
361
+ 'step',
362
+ input['request_params']['step'],
363
+ step_valid_values,
364
+ )
365
+ end
366
+ end
367
+ end
368
+
369
+ public
370
+
371
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/modify_mongo_attributes.html
372
+ def modify_mongo_attributes(auto_backup_time: nil, description: '', mongo: '', mongo_name: '')
373
+ input = {
374
+ config: config,
375
+ properties: properties,
376
+ api_name: 'ModifyMongoAttributes',
377
+ request_method: 'GET',
378
+ request_params: {
379
+ 'auto_backup_time' => auto_backup_time,
380
+ 'description' => description,
381
+ 'mongo' => mongo,
382
+ 'mongo_name' => mongo_name,
383
+ },
384
+ }
385
+
386
+ modify_mongo_attributes_input_validate input
387
+
388
+ request = Request.new input
389
+ request.send
390
+ end
391
+
392
+ private
393
+
394
+ def modify_mongo_attributes_input_validate(input)
395
+ input.deep_stringify_keys!
396
+
397
+ unless !input['request_params']['mongo'].nil? && !input['request_params']['mongo'].to_s.empty?
398
+ raise ParameterRequiredError.new('mongo', 'ModifyMongoAttributesInput')
399
+ end
400
+ end
401
+
402
+ public
403
+
404
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/modify_mongo_instances.html
405
+ def modify_mongo_instances(mongo: '', private_ips: [])
406
+ input = {
407
+ config: config,
408
+ properties: properties,
409
+ api_name: 'ModifyMongoInstances',
410
+ request_method: 'GET',
411
+ request_params: {
412
+ 'mongo' => mongo,
413
+ 'private_ips' => private_ips,
414
+ },
415
+ }
416
+
417
+ modify_mongo_instances_input_validate input
418
+
419
+ request = Request.new input
420
+ request.send
421
+ end
422
+
423
+ private
424
+
425
+ def modify_mongo_instances_input_validate(input)
426
+ input.deep_stringify_keys!
427
+
428
+ unless !input['request_params']['mongo'].nil? && !input['request_params']['mongo'].to_s.empty?
429
+ raise ParameterRequiredError.new('mongo', 'ModifyMongoInstancesInput')
430
+ end
431
+
432
+ input['request_params']['private_ips'].map do |x|
433
+ end
434
+ end
435
+
436
+ public
437
+
438
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/remove_mongo_instances.html
439
+ def remove_mongo_instances(mongo: '', mongo_instances: [])
440
+ input = {
441
+ config: config,
442
+ properties: properties,
443
+ api_name: 'RemoveMongoInstances',
444
+ request_method: 'GET',
445
+ request_params: {
446
+ 'mongo' => mongo,
447
+ 'mongo_instances' => mongo_instances,
448
+ },
449
+ }
450
+
451
+ remove_mongo_instances_input_validate input
452
+
453
+ request = Request.new input
454
+ request.send
455
+ end
456
+
457
+ private
458
+
459
+ def remove_mongo_instances_input_validate(input)
460
+ input.deep_stringify_keys!
461
+
462
+ unless !input['request_params']['mongo'].nil? && !input['request_params']['mongo'].to_s.empty?
463
+ raise ParameterRequiredError.new('mongo', 'RemoveMongoInstancesInput')
464
+ end
465
+
466
+ unless !input['request_params']['mongo_instances'].nil? && !input['request_params']['mongo_instances'].to_s.empty?
467
+ raise ParameterRequiredError.new('mongo_instances', 'RemoveMongoInstancesInput')
468
+ end
469
+ end
470
+
471
+ public
472
+
473
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/resize_mongos.html
474
+ def resize_mongos(mongo_type: nil, mongos: [], storage_size: nil)
475
+ input = {
476
+ config: config,
477
+ properties: properties,
478
+ api_name: 'ResizeMongos',
479
+ request_method: 'GET',
480
+ request_params: {
481
+ 'mongo_type' => mongo_type,
482
+ 'mongos' => mongos,
483
+ 'storage_size' => storage_size,
484
+ },
485
+ }
486
+
487
+ resize_mongos_input_validate input
488
+
489
+ request = Request.new input
490
+ request.send
491
+ end
492
+
493
+ private
494
+
495
+ def resize_mongos_input_validate(input)
496
+ input.deep_stringify_keys!
497
+
498
+ unless !input['request_params']['mongos'].nil? && !input['request_params']['mongos'].to_s.empty?
499
+ raise ParameterRequiredError.new('mongos', 'ResizeMongosInput')
500
+ end
501
+ end
502
+
503
+ public
504
+
505
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/start_mongos.html
506
+ def start_mongos(mongos: '')
507
+ input = {
508
+ config: config,
509
+ properties: properties,
510
+ api_name: 'StartMongos',
511
+ request_method: 'GET',
512
+ request_params: {
513
+ 'mongos' => mongos,
514
+ },
515
+ }
516
+
517
+ start_mongos_input_validate input
518
+
519
+ request = Request.new input
520
+ request.send
521
+ end
522
+
523
+ private
524
+
525
+ def start_mongos_input_validate(input)
526
+ input.deep_stringify_keys!
527
+
528
+ unless !input['request_params']['mongos'].nil? && !input['request_params']['mongos'].to_s.empty?
529
+ raise ParameterRequiredError.new('mongos', 'StartMongosInput')
530
+ end
531
+ end
532
+
533
+ public
534
+
535
+ # Documentation URL: https://docs.qingcloud.com/api/mongo/stop_mongos.html
536
+ def stop_mongos(mongos: [])
537
+ input = {
538
+ config: config,
539
+ properties: properties,
540
+ api_name: 'StopMongos',
541
+ request_method: 'GET',
542
+ request_params: {
543
+ 'mongos' => mongos,
544
+ },
545
+ }
546
+
547
+ stop_mongos_input_validate input
548
+
549
+ request = Request.new input
550
+ request.send
551
+ end
552
+
553
+ private
554
+
555
+ def stop_mongos_input_validate(input)
556
+ input.deep_stringify_keys!
557
+
558
+ unless !input['request_params']['mongos'].nil? && !input['request_params']['mongos'].to_s.empty?
559
+ raise ParameterRequiredError.new('mongos', 'StopMongosInput')
560
+ end
561
+ end
562
+
563
+ public
564
+ end
565
+ end
566
+ end