qingcloud-sdk 0.4.1 → 2.0.0.pre.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
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,61 @@
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 UserDataService
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/userdata/upload_userdata_attachment.html
30
+ def upload_user_data_attachment(attachment_content: '', attachment_name: '')
31
+ input = {
32
+ config: config,
33
+ properties: properties,
34
+ api_name: 'UploadUserDataAttachment',
35
+ request_method: 'POST',
36
+ request_params: {
37
+ 'attachment_content' => attachment_content,
38
+ 'attachment_name' => attachment_name,
39
+ },
40
+ }
41
+
42
+ upload_user_data_attachment_input_validate input
43
+
44
+ request = Request.new input
45
+ request.send
46
+ end
47
+
48
+ private
49
+
50
+ def upload_user_data_attachment_input_validate(input)
51
+ input.deep_stringify_keys!
52
+
53
+ unless !input['request_params']['attachment_content'].nil? && !input['request_params']['attachment_content'].to_s.empty?
54
+ raise ParameterRequiredError.new('attachment_content', 'UploadUserDataAttachmentInput')
55
+ end
56
+ end
57
+
58
+ public
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,296 @@
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 VolumeService
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/volume/attach_volumes.html
30
+ def attach_volumes(instance: '', volumes: [])
31
+ input = {
32
+ config: config,
33
+ properties: properties,
34
+ api_name: 'AttachVolumes',
35
+ request_method: 'GET',
36
+ request_params: {
37
+ 'instance' => instance,
38
+ 'volumes' => volumes,
39
+ },
40
+ }
41
+
42
+ attach_volumes_input_validate input
43
+
44
+ request = Request.new input
45
+ request.send
46
+ end
47
+
48
+ private
49
+
50
+ def attach_volumes_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', 'AttachVolumesInput')
55
+ end
56
+
57
+ unless !input['request_params']['volumes'].nil? && !input['request_params']['volumes'].to_s.empty?
58
+ raise ParameterRequiredError.new('volumes', 'AttachVolumesInput')
59
+ end
60
+ end
61
+
62
+ public
63
+
64
+ # Documentation URL: https://docs.qingcloud.com/api/volume/create_volumes.html
65
+ def create_volumes(count: nil, size: nil, volume_name: '', volume_type: nil)
66
+ input = {
67
+ config: config,
68
+ properties: properties,
69
+ api_name: 'CreateVolumes',
70
+ request_method: 'GET',
71
+ request_params: {
72
+ 'count' => count,
73
+ 'size' => size,
74
+ 'volume_name' => volume_name,
75
+ 'volume_type' => volume_type, # volume_type's available values: 0, 1, 2, 3
76
+ },
77
+ }
78
+
79
+ create_volumes_input_validate input
80
+
81
+ request = Request.new input
82
+ request.send
83
+ end
84
+
85
+ private
86
+
87
+ def create_volumes_input_validate(input)
88
+ input.deep_stringify_keys!
89
+
90
+ unless !input['request_params']['size'].nil? && !input['request_params']['size'].to_s.empty?
91
+ raise ParameterRequiredError.new('size', 'CreateVolumesInput')
92
+ end
93
+
94
+ if input['request_params']['volume_type'] && !input['request_params']['volume_type'].to_s.empty?
95
+ volume_type_valid_values = %w(0 1 2 3)
96
+ unless volume_type_valid_values.include? input['request_params']['volume_type'].to_s
97
+ raise ParameterValueNotAllowedError.new(
98
+ 'volume_type',
99
+ input['request_params']['volume_type'],
100
+ volume_type_valid_values,
101
+ )
102
+ end
103
+ end
104
+ end
105
+
106
+ public
107
+
108
+ # Documentation URL: https://docs.qingcloud.com/api/volume/delete_volumes.html
109
+ def delete_volumes(volumes: [])
110
+ input = {
111
+ config: config,
112
+ properties: properties,
113
+ api_name: 'DeleteVolumes',
114
+ request_method: 'GET',
115
+ request_params: {
116
+ 'volumes' => volumes,
117
+ },
118
+ }
119
+
120
+ delete_volumes_input_validate input
121
+
122
+ request = Request.new input
123
+ request.send
124
+ end
125
+
126
+ private
127
+
128
+ def delete_volumes_input_validate(input)
129
+ input.deep_stringify_keys!
130
+
131
+ unless !input['request_params']['volumes'].nil? && !input['request_params']['volumes'].to_s.empty?
132
+ raise ParameterRequiredError.new('volumes', 'DeleteVolumesInput')
133
+ end
134
+ end
135
+
136
+ public
137
+
138
+ # Documentation URL: https://docs.qingcloud.com/api/volume/describe_volumes.html
139
+ def describe_volumes(limit: nil, offset: nil, search_word: '', status: [], tags: [], verbose: nil, volume_type: nil, volumes: [])
140
+ input = {
141
+ config: config,
142
+ properties: properties,
143
+ api_name: 'DescribeVolumes',
144
+ request_method: 'GET',
145
+ request_params: {
146
+ 'limit' => limit,
147
+ 'offset' => offset,
148
+ 'search_word' => search_word,
149
+ 'status' => status,
150
+ 'tags' => tags,
151
+ 'verbose' => verbose, # verbose's available values: 0, 1
152
+ 'volume_type' => volume_type, # volume_type's available values: 0, 1, 2, 3
153
+ 'volumes' => volumes,
154
+ },
155
+ }
156
+
157
+ describe_volumes_input_validate input
158
+
159
+ request = Request.new input
160
+ request.send
161
+ end
162
+
163
+ private
164
+
165
+ def describe_volumes_input_validate(input)
166
+ input.deep_stringify_keys!
167
+
168
+ if input['request_params']['verbose'] && !input['request_params']['verbose'].to_s.empty?
169
+ verbose_valid_values = %w(0 1)
170
+ unless verbose_valid_values.include? input['request_params']['verbose'].to_s
171
+ raise ParameterValueNotAllowedError.new(
172
+ 'verbose',
173
+ input['request_params']['verbose'],
174
+ verbose_valid_values,
175
+ )
176
+ end
177
+ end
178
+
179
+ if input['request_params']['volume_type'] && !input['request_params']['volume_type'].to_s.empty?
180
+ volume_type_valid_values = %w(0 1 2 3)
181
+ unless volume_type_valid_values.include? input['request_params']['volume_type'].to_s
182
+ raise ParameterValueNotAllowedError.new(
183
+ 'volume_type',
184
+ input['request_params']['volume_type'],
185
+ volume_type_valid_values,
186
+ )
187
+ end
188
+ end
189
+ end
190
+
191
+ public
192
+
193
+ # Documentation URL: https://docs.qingcloud.com/api/volume/detach_volumes.html
194
+ def detach_volumes(instance: '', volumes: [])
195
+ input = {
196
+ config: config,
197
+ properties: properties,
198
+ api_name: 'DetachVolumes',
199
+ request_method: 'GET',
200
+ request_params: {
201
+ 'instance' => instance,
202
+ 'volumes' => volumes,
203
+ },
204
+ }
205
+
206
+ detach_volumes_input_validate input
207
+
208
+ request = Request.new input
209
+ request.send
210
+ end
211
+
212
+ private
213
+
214
+ def detach_volumes_input_validate(input)
215
+ input.deep_stringify_keys!
216
+
217
+ unless !input['request_params']['instance'].nil? && !input['request_params']['instance'].to_s.empty?
218
+ raise ParameterRequiredError.new('instance', 'DetachVolumesInput')
219
+ end
220
+
221
+ unless !input['request_params']['volumes'].nil? && !input['request_params']['volumes'].to_s.empty?
222
+ raise ParameterRequiredError.new('volumes', 'DetachVolumesInput')
223
+ end
224
+ end
225
+
226
+ public
227
+
228
+ # Documentation URL: https://docs.qingcloud.com/api/volume/modify_volume_attributes.html
229
+ def modify_volume_attributes(description: '', volume: '', volume_name: '')
230
+ input = {
231
+ config: config,
232
+ properties: properties,
233
+ api_name: 'ModifyVolumeAttributes',
234
+ request_method: 'GET',
235
+ request_params: {
236
+ 'description' => description,
237
+ 'volume' => volume,
238
+ 'volume_name' => volume_name,
239
+ },
240
+ }
241
+
242
+ modify_volume_attributes_input_validate input
243
+
244
+ request = Request.new input
245
+ request.send
246
+ end
247
+
248
+ private
249
+
250
+ def modify_volume_attributes_input_validate(input)
251
+ input.deep_stringify_keys!
252
+
253
+ unless !input['request_params']['volume'].nil? && !input['request_params']['volume'].to_s.empty?
254
+ raise ParameterRequiredError.new('volume', 'ModifyVolumeAttributesInput')
255
+ end
256
+ end
257
+
258
+ public
259
+
260
+ # Documentation URL: https://docs.qingcloud.com/api/volume/resize_volumes.html
261
+ def resize_volumes(size: nil, volumes: [])
262
+ input = {
263
+ config: config,
264
+ properties: properties,
265
+ api_name: 'ResizeVolumes',
266
+ request_method: 'GET',
267
+ request_params: {
268
+ 'size' => size,
269
+ 'volumes' => volumes,
270
+ },
271
+ }
272
+
273
+ resize_volumes_input_validate input
274
+
275
+ request = Request.new input
276
+ request.send
277
+ end
278
+
279
+ private
280
+
281
+ def resize_volumes_input_validate(input)
282
+ input.deep_stringify_keys!
283
+
284
+ unless !input['request_params']['size'].nil? && !input['request_params']['size'].to_s.empty?
285
+ raise ParameterRequiredError.new('size', 'ResizeVolumesInput')
286
+ end
287
+
288
+ unless !input['request_params']['volumes'].nil? && !input['request_params']['volumes'].to_s.empty?
289
+ raise ParameterRequiredError.new('volumes', 'ResizeVolumesInput')
290
+ end
291
+ end
292
+
293
+ public
294
+ end
295
+ end
296
+ end
@@ -0,0 +1,295 @@
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 VxNetService
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/vxnet/create_vxnets.html
30
+ def create_vxnets(count: nil, vxnet_name: '', vxnet_type: nil)
31
+ input = {
32
+ config: config,
33
+ properties: properties,
34
+ api_name: 'CreateVxnets',
35
+ request_method: 'GET',
36
+ request_params: {
37
+ 'count' => count,
38
+ 'vxnet_name' => vxnet_name,
39
+ 'vxnet_type' => vxnet_type, # vxnet_type's available values: 0, 1
40
+ },
41
+ }
42
+
43
+ create_vxnets_input_validate input
44
+
45
+ request = Request.new input
46
+ request.send
47
+ end
48
+
49
+ private
50
+
51
+ def create_vxnets_input_validate(input)
52
+ input.deep_stringify_keys!
53
+
54
+ unless !input['request_params']['vxnet_type'].nil? && !input['request_params']['vxnet_type'].to_s.empty?
55
+ raise ParameterRequiredError.new('vxnet_type', 'CreateVxnetsInput')
56
+ end
57
+
58
+ if input['request_params']['vxnet_type'] && !input['request_params']['vxnet_type'].to_s.empty?
59
+ vxnet_type_valid_values = %w(0 1)
60
+ unless vxnet_type_valid_values.include? input['request_params']['vxnet_type'].to_s
61
+ raise ParameterValueNotAllowedError.new(
62
+ 'vxnet_type',
63
+ input['request_params']['vxnet_type'],
64
+ vxnet_type_valid_values,
65
+ )
66
+ end
67
+ end
68
+ end
69
+
70
+ public
71
+
72
+ # Documentation URL: https://docs.qingcloud.com/api/vxnet/delete_vxnets.html
73
+ def delete_vxnets(vxnets: [])
74
+ input = {
75
+ config: config,
76
+ properties: properties,
77
+ api_name: 'DeleteVxnets',
78
+ request_method: 'GET',
79
+ request_params: {
80
+ 'vxnets' => vxnets,
81
+ },
82
+ }
83
+
84
+ delete_vxnets_input_validate input
85
+
86
+ request = Request.new input
87
+ request.send
88
+ end
89
+
90
+ private
91
+
92
+ def delete_vxnets_input_validate(input)
93
+ input.deep_stringify_keys!
94
+
95
+ unless !input['request_params']['vxnets'].nil? && !input['request_params']['vxnets'].to_s.empty?
96
+ raise ParameterRequiredError.new('vxnets', 'DeleteVxnetsInput')
97
+ end
98
+ end
99
+
100
+ public
101
+
102
+ # Documentation URL: https://docs.qingcloud.com/api/vxnet/describe_vxnet_instances.html
103
+ def describe_vxnet_instances(image: '', instance_type: '', instances: [], limit: nil, offset: nil, status: '', vxnet: '')
104
+ input = {
105
+ config: config,
106
+ properties: properties,
107
+ api_name: 'DescribeVxnetInstances',
108
+ request_method: 'GET',
109
+ request_params: {
110
+ 'image' => image,
111
+ 'instance_type' => instance_type,
112
+ 'instances' => instances,
113
+ 'limit' => limit,
114
+ 'offset' => offset,
115
+ 'status' => status,
116
+ 'vxnet' => vxnet,
117
+ },
118
+ }
119
+
120
+ describe_vxnet_instances_input_validate input
121
+
122
+ request = Request.new input
123
+ request.send
124
+ end
125
+
126
+ private
127
+
128
+ def describe_vxnet_instances_input_validate(input)
129
+ input.deep_stringify_keys!
130
+
131
+ unless !input['request_params']['vxnet'].nil? && !input['request_params']['vxnet'].to_s.empty?
132
+ raise ParameterRequiredError.new('vxnet', 'DescribeVxnetInstancesInput')
133
+ end
134
+ end
135
+
136
+ public
137
+
138
+ # Documentation URL: https://docs.qingcloud.com/api/vxnet/describe_vxnets.html
139
+ def describe_vxnets(limit: nil, offset: nil, search_word: '', tags: [], verbose: nil, vxnet_type: nil, vxnets: [])
140
+ input = {
141
+ config: config,
142
+ properties: properties,
143
+ api_name: 'DescribeVxnets',
144
+ request_method: 'GET',
145
+ request_params: {
146
+ 'limit' => limit,
147
+ 'offset' => offset,
148
+ 'search_word' => search_word,
149
+ 'tags' => tags,
150
+ 'verbose' => verbose, # verbose's available values: 0, 1
151
+ 'vxnet_type' => vxnet_type, # vxnet_type's available values: 0, 1
152
+ 'vxnets' => vxnets,
153
+ },
154
+ }
155
+
156
+ describe_vxnets_input_validate input
157
+
158
+ request = Request.new input
159
+ request.send
160
+ end
161
+
162
+ private
163
+
164
+ def describe_vxnets_input_validate(input)
165
+ input.deep_stringify_keys!
166
+
167
+ if input['request_params']['verbose'] && !input['request_params']['verbose'].to_s.empty?
168
+ verbose_valid_values = %w(0 1)
169
+ unless verbose_valid_values.include? input['request_params']['verbose'].to_s
170
+ raise ParameterValueNotAllowedError.new(
171
+ 'verbose',
172
+ input['request_params']['verbose'],
173
+ verbose_valid_values,
174
+ )
175
+ end
176
+ end
177
+
178
+ if input['request_params']['vxnet_type'] && !input['request_params']['vxnet_type'].to_s.empty?
179
+ vxnet_type_valid_values = %w(0 1)
180
+ unless vxnet_type_valid_values.include? input['request_params']['vxnet_type'].to_s
181
+ raise ParameterValueNotAllowedError.new(
182
+ 'vxnet_type',
183
+ input['request_params']['vxnet_type'],
184
+ vxnet_type_valid_values,
185
+ )
186
+ end
187
+ end
188
+ end
189
+
190
+ public
191
+
192
+ # Documentation URL: https://docs.qingcloud.com/api/vxnet/join_vxnet.html
193
+ def join_vxnet(instances: [], vxnet: '')
194
+ input = {
195
+ config: config,
196
+ properties: properties,
197
+ api_name: 'JoinVxnet',
198
+ request_method: 'GET',
199
+ request_params: {
200
+ 'instances' => instances,
201
+ 'vxnet' => vxnet,
202
+ },
203
+ }
204
+
205
+ join_vxnet_input_validate input
206
+
207
+ request = Request.new input
208
+ request.send
209
+ end
210
+
211
+ private
212
+
213
+ def join_vxnet_input_validate(input)
214
+ input.deep_stringify_keys!
215
+
216
+ unless !input['request_params']['instances'].nil? && !input['request_params']['instances'].to_s.empty?
217
+ raise ParameterRequiredError.new('instances', 'JoinVxnetInput')
218
+ end
219
+
220
+ unless !input['request_params']['vxnet'].nil? && !input['request_params']['vxnet'].to_s.empty?
221
+ raise ParameterRequiredError.new('vxnet', 'JoinVxnetInput')
222
+ end
223
+ end
224
+
225
+ public
226
+
227
+ # Documentation URL: https://docs.qingcloud.com/api/vxnet/leave_vxnet.html
228
+ def leave_vxnet(instances: [], vxnet: '')
229
+ input = {
230
+ config: config,
231
+ properties: properties,
232
+ api_name: 'LeaveVxnet',
233
+ request_method: 'GET',
234
+ request_params: {
235
+ 'instances' => instances,
236
+ 'vxnet' => vxnet,
237
+ },
238
+ }
239
+
240
+ leave_vxnet_input_validate input
241
+
242
+ request = Request.new input
243
+ request.send
244
+ end
245
+
246
+ private
247
+
248
+ def leave_vxnet_input_validate(input)
249
+ input.deep_stringify_keys!
250
+
251
+ unless !input['request_params']['instances'].nil? && !input['request_params']['instances'].to_s.empty?
252
+ raise ParameterRequiredError.new('instances', 'LeaveVxnetInput')
253
+ end
254
+
255
+ unless !input['request_params']['vxnet'].nil? && !input['request_params']['vxnet'].to_s.empty?
256
+ raise ParameterRequiredError.new('vxnet', 'LeaveVxnetInput')
257
+ end
258
+ end
259
+
260
+ public
261
+
262
+ # Documentation URL: https://docs.qingcloud.com/api/vxnet/modify_vxnet_attributes.html
263
+ def modify_vxnet_attributes(description: '', vxnet: '', vxnet_name: '')
264
+ input = {
265
+ config: config,
266
+ properties: properties,
267
+ api_name: 'ModifyVxnetAttributes',
268
+ request_method: 'GET',
269
+ request_params: {
270
+ 'description' => description,
271
+ 'vxnet' => vxnet,
272
+ 'vxnet_name' => vxnet_name,
273
+ },
274
+ }
275
+
276
+ modify_vxnet_attributes_input_validate input
277
+
278
+ request = Request.new input
279
+ request.send
280
+ end
281
+
282
+ private
283
+
284
+ def modify_vxnet_attributes_input_validate(input)
285
+ input.deep_stringify_keys!
286
+
287
+ unless !input['request_params']['vxnet'].nil? && !input['request_params']['vxnet'].to_s.empty?
288
+ raise ParameterRequiredError.new('vxnet', 'ModifyVxnetAttributesInput')
289
+ end
290
+ end
291
+
292
+ public
293
+ end
294
+ end
295
+ end