aws-sdk-ec2 1.0.0.rc1

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 (36) hide show
  1. checksums.yaml +7 -0
  2. data/lib/aws-sdk-ec2.rb +70 -0
  3. data/lib/aws-sdk-ec2/classic_address.rb +227 -0
  4. data/lib/aws-sdk-ec2/client.rb +14254 -0
  5. data/lib/aws-sdk-ec2/client_api.rb +6182 -0
  6. data/lib/aws-sdk-ec2/customizations.rb +21 -0
  7. data/lib/aws-sdk-ec2/customizations/instance.rb +29 -0
  8. data/lib/aws-sdk-ec2/customizations/resource.rb +18 -0
  9. data/lib/aws-sdk-ec2/dhcp_options.rb +183 -0
  10. data/lib/aws-sdk-ec2/errors.rb +23 -0
  11. data/lib/aws-sdk-ec2/image.rb +462 -0
  12. data/lib/aws-sdk-ec2/instance.rb +1570 -0
  13. data/lib/aws-sdk-ec2/internet_gateway.rb +204 -0
  14. data/lib/aws-sdk-ec2/key_pair.rb +120 -0
  15. data/lib/aws-sdk-ec2/key_pair_info.rb +122 -0
  16. data/lib/aws-sdk-ec2/network_acl.rb +341 -0
  17. data/lib/aws-sdk-ec2/network_interface.rb +474 -0
  18. data/lib/aws-sdk-ec2/network_interface_association.rb +151 -0
  19. data/lib/aws-sdk-ec2/placement_group.rb +426 -0
  20. data/lib/aws-sdk-ec2/plugins/copy_encrypted_snapshot.rb +59 -0
  21. data/lib/aws-sdk-ec2/plugins/region_validation.rb +19 -0
  22. data/lib/aws-sdk-ec2/resource.rb +2684 -0
  23. data/lib/aws-sdk-ec2/route.rb +243 -0
  24. data/lib/aws-sdk-ec2/route_table.rb +277 -0
  25. data/lib/aws-sdk-ec2/route_table_association.rb +177 -0
  26. data/lib/aws-sdk-ec2/security_group.rb +530 -0
  27. data/lib/aws-sdk-ec2/snapshot.rb +478 -0
  28. data/lib/aws-sdk-ec2/subnet.rb +972 -0
  29. data/lib/aws-sdk-ec2/tag.rb +223 -0
  30. data/lib/aws-sdk-ec2/types.rb +20124 -0
  31. data/lib/aws-sdk-ec2/volume.rb +555 -0
  32. data/lib/aws-sdk-ec2/vpc.rb +1698 -0
  33. data/lib/aws-sdk-ec2/vpc_address.rb +219 -0
  34. data/lib/aws-sdk-ec2/vpc_peering_connection.rb +265 -0
  35. data/lib/aws-sdk-ec2/waiters.rb +1334 -0
  36. metadata +107 -0
@@ -0,0 +1,474 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ module Aws
9
+ module EC2
10
+ class NetworkInterface
11
+
12
+ extend Aws::Deprecations
13
+
14
+ # @overload def initialize(id, options = {})
15
+ # @param [String] id
16
+ # @option options [Client] :client
17
+ # @overload def initialize(options = {})
18
+ # @option options [required, String] :id
19
+ # @option options [Client] :client
20
+ def initialize(*args)
21
+ options = Hash === args.last ? args.pop.dup : {}
22
+ @id = extract_id(args, options)
23
+ @data = options.delete(:data)
24
+ @client = options.delete(:client) || Client.new(options)
25
+ end
26
+
27
+ # @!group Read-Only Attributes
28
+
29
+ # @return [String]
30
+ def id
31
+ @id
32
+ end
33
+ alias :network_interface_id :id
34
+
35
+ # The ID of the subnet.
36
+ # @return [String]
37
+ def subnet_id
38
+ data.subnet_id
39
+ end
40
+
41
+ # The ID of the VPC.
42
+ # @return [String]
43
+ def vpc_id
44
+ data.vpc_id
45
+ end
46
+
47
+ # The Availability Zone.
48
+ # @return [String]
49
+ def availability_zone
50
+ data.availability_zone
51
+ end
52
+
53
+ # A description.
54
+ # @return [String]
55
+ def description
56
+ data.description
57
+ end
58
+
59
+ # The AWS account ID of the owner of the network interface.
60
+ # @return [String]
61
+ def owner_id
62
+ data.owner_id
63
+ end
64
+
65
+ # The ID of the entity that launched the instance on your behalf (for
66
+ # example, AWS Management Console or Auto Scaling).
67
+ # @return [String]
68
+ def requester_id
69
+ data.requester_id
70
+ end
71
+
72
+ # Indicates whether the network interface is being managed by AWS.
73
+ # @return [Boolean]
74
+ def requester_managed
75
+ data.requester_managed
76
+ end
77
+
78
+ # The status of the network interface.
79
+ # @return [String]
80
+ def status
81
+ data.status
82
+ end
83
+
84
+ # The MAC address.
85
+ # @return [String]
86
+ def mac_address
87
+ data.mac_address
88
+ end
89
+
90
+ # The IP address of the network interface within the subnet.
91
+ # @return [String]
92
+ def private_ip_address
93
+ data.private_ip_address
94
+ end
95
+
96
+ # The private DNS name.
97
+ # @return [String]
98
+ def private_dns_name
99
+ data.private_dns_name
100
+ end
101
+
102
+ # Indicates whether traffic to or from the instance is validated.
103
+ # @return [Boolean]
104
+ def source_dest_check
105
+ data.source_dest_check
106
+ end
107
+
108
+ # Any security groups for the network interface.
109
+ # @return [Array<Types::GroupIdentifier>]
110
+ def groups
111
+ data.groups
112
+ end
113
+
114
+ # The network interface attachment.
115
+ # @return [Types::NetworkInterfaceAttachment]
116
+ def attachment
117
+ data.attachment
118
+ end
119
+
120
+ # Any tags assigned to the network interface.
121
+ # @return [Array<Types::Tag>]
122
+ def tag_set
123
+ data.tag_set
124
+ end
125
+
126
+ # The private IP addresses associated with the network interface.
127
+ # @return [Array<Types::NetworkInterfacePrivateIpAddress>]
128
+ def private_ip_addresses
129
+ data.private_ip_addresses
130
+ end
131
+
132
+ # The type of interface.
133
+ # @return [String]
134
+ def interface_type
135
+ data.interface_type
136
+ end
137
+
138
+ # @!endgroup
139
+
140
+ # @return [Client]
141
+ def client
142
+ @client
143
+ end
144
+
145
+ # Loads, or reloads {#data} for the current {NetworkInterface}.
146
+ # Returns `self` making it possible to chain methods.
147
+ #
148
+ # network_interface.reload.data
149
+ #
150
+ # @return [self]
151
+ def load
152
+ resp = @client.describe_network_interfaces(network_interface_ids: [@id])
153
+ @data = resp.networkinterfaces[0]
154
+ self
155
+ end
156
+ alias :reload :load
157
+
158
+ # @return [Types::NetworkInterface]
159
+ # Returns the data for this {NetworkInterface}. Calls
160
+ # {Client#describe_network_interfaces} if {#data_loaded?} is `false`.
161
+ def data
162
+ load unless @data
163
+ @data
164
+ end
165
+
166
+ # @return [Boolean]
167
+ # Returns `true` if this resource is loaded. Accessing attributes or
168
+ # {#data} on an unloaded resource will trigger a call to {#load}.
169
+ def data_loaded?
170
+ !!@data
171
+ end
172
+
173
+ # @!group Actions
174
+
175
+ # @example Request syntax with placeholder values
176
+ #
177
+ # network_interface.assign_private_ip_addresses({
178
+ # private_ip_addresses: ["String"],
179
+ # secondary_private_ip_address_count: 1,
180
+ # allow_reassignment: false,
181
+ # })
182
+ # @param [Hash] options ({})
183
+ # @option options [Array<String>] :private_ip_addresses
184
+ # One or more IP addresses to be assigned as a secondary private IP
185
+ # address to the network interface. You can't specify this parameter
186
+ # when also specifying a number of secondary IP addresses.
187
+ #
188
+ # If you don't specify an IP address, Amazon EC2 automatically selects
189
+ # an IP address within the subnet range.
190
+ # @option options [Integer] :secondary_private_ip_address_count
191
+ # The number of secondary IP addresses to assign to the network
192
+ # interface. You can't specify this parameter when also specifying
193
+ # private IP addresses.
194
+ # @option options [Boolean] :allow_reassignment
195
+ # Indicates whether to allow an IP address that is already assigned to
196
+ # another network interface or instance to be reassigned to the
197
+ # specified network interface.
198
+ # @return [EmptyStructure]
199
+ def assign_private_ip_addresses(options = {})
200
+ options = options.merge(network_interface_id: @id)
201
+ resp = @client.assign_private_ip_addresses(options)
202
+ resp.data
203
+ end
204
+
205
+ # @example Request syntax with placeholder values
206
+ #
207
+ # network_interface.attach({
208
+ # dry_run: false,
209
+ # instance_id: "String", # required
210
+ # device_index: 1, # required
211
+ # })
212
+ # @param [Hash] options ({})
213
+ # @option options [Boolean] :dry_run
214
+ # Checks whether you have the required permissions for the action,
215
+ # without actually making the request, and provides an error response.
216
+ # If you have the required permissions, the error response is
217
+ # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
218
+ # @option options [required, String] :instance_id
219
+ # The ID of the instance.
220
+ # @option options [required, Integer] :device_index
221
+ # The index of the device for the network interface attachment.
222
+ # @return [Types::AttachNetworkInterfaceResult]
223
+ def attach(options = {})
224
+ options = options.merge(network_interface_id: @id)
225
+ resp = @client.attach_network_interface(options)
226
+ resp.data
227
+ end
228
+
229
+ # @example Request syntax with placeholder values
230
+ #
231
+ # tag = network_interface.create_tags({
232
+ # dry_run: false,
233
+ # tags: [ # required
234
+ # {
235
+ # key: "String",
236
+ # value: "String",
237
+ # },
238
+ # ],
239
+ # })
240
+ # @param [Hash] options ({})
241
+ # @option options [Boolean] :dry_run
242
+ # Checks whether you have the required permissions for the action,
243
+ # without actually making the request, and provides an error response.
244
+ # If you have the required permissions, the error response is
245
+ # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
246
+ # @option options [required, Array<Types::Tag>] :tags
247
+ # One or more tags. The `value` parameter is required, but if you don't
248
+ # want the tag to have a value, specify the parameter with no value, and
249
+ # we set the value to an empty string.
250
+ # @return [Tag::Collection]
251
+ def create_tags(options = {})
252
+ batch = []
253
+ options = Aws::Util.deep_merge(options, resources: [@id])
254
+ resp = @client.create_tags(options)
255
+ options[:tags].each do |t|
256
+ batch << Tag.new(
257
+ resource_id: @id,
258
+ key: t[:key],
259
+ value: t[:value],
260
+ client: @client
261
+ )
262
+ end
263
+ Tag::Collection.new([batch], size: batch.size)
264
+ end
265
+
266
+ # @example Request syntax with placeholder values
267
+ #
268
+ # network_interface.delete({
269
+ # dry_run: false,
270
+ # })
271
+ # @param [Hash] options ({})
272
+ # @option options [Boolean] :dry_run
273
+ # Checks whether you have the required permissions for the action,
274
+ # without actually making the request, and provides an error response.
275
+ # If you have the required permissions, the error response is
276
+ # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
277
+ # @return [EmptyStructure]
278
+ def delete(options = {})
279
+ options = options.merge(network_interface_id: @id)
280
+ resp = @client.delete_network_interface(options)
281
+ resp.data
282
+ end
283
+
284
+ # @example Request syntax with placeholder values
285
+ #
286
+ # network_interface.describe_attribute({
287
+ # dry_run: false,
288
+ # attribute: "description", # accepts description, groupSet, sourceDestCheck, attachment
289
+ # })
290
+ # @param [Hash] options ({})
291
+ # @option options [Boolean] :dry_run
292
+ # Checks whether you have the required permissions for the action,
293
+ # without actually making the request, and provides an error response.
294
+ # If you have the required permissions, the error response is
295
+ # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
296
+ # @option options [String] :attribute
297
+ # The attribute of the network interface.
298
+ # @return [Types::DescribeNetworkInterfaceAttributeResult]
299
+ def describe_attribute(options = {})
300
+ options = options.merge(network_interface_id: @id)
301
+ resp = @client.describe_network_interface_attribute(options)
302
+ resp.data
303
+ end
304
+
305
+ # @example Request syntax with placeholder values
306
+ #
307
+ # network_interface.detach({
308
+ # dry_run: false,
309
+ # force: false,
310
+ # })
311
+ # @param [Hash] options ({})
312
+ # @option options [Boolean] :dry_run
313
+ # Checks whether you have the required permissions for the action,
314
+ # without actually making the request, and provides an error response.
315
+ # If you have the required permissions, the error response is
316
+ # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
317
+ # @option options [Boolean] :force
318
+ # Specifies whether to force a detachment.
319
+ # @return [EmptyStructure]
320
+ def detach(options = {})
321
+ options = options.merge(attachment_id: data.attachment.attachment_id)
322
+ resp = @client.detach_network_interface(options)
323
+ resp.data
324
+ end
325
+
326
+ # @example Request syntax with placeholder values
327
+ #
328
+ # network_interface.modify_attribute({
329
+ # dry_run: false,
330
+ # description: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
331
+ # source_dest_check: {
332
+ # value: false,
333
+ # },
334
+ # groups: ["String"],
335
+ # attachment: {
336
+ # attachment_id: "String",
337
+ # delete_on_termination: false,
338
+ # },
339
+ # })
340
+ # @param [Hash] options ({})
341
+ # @option options [Boolean] :dry_run
342
+ # Checks whether you have the required permissions for the action,
343
+ # without actually making the request, and provides an error response.
344
+ # If you have the required permissions, the error response is
345
+ # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
346
+ # @option options [Types::AttributeValue] :description
347
+ # A description for the network interface.
348
+ # @option options [Types::AttributeBooleanValue] :source_dest_check
349
+ # Indicates whether source/destination checking is enabled. A value of
350
+ # `true` means checking is enabled, and `false` means checking is
351
+ # disabled. This value must be `false` for a NAT instance to perform
352
+ # NAT. For more information, see [NAT Instances][1] in the *Amazon
353
+ # Virtual Private Cloud User Guide*.
354
+ #
355
+ #
356
+ #
357
+ # [1]: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html
358
+ # @option options [Array<String>] :groups
359
+ # Changes the security groups for the network interface. The new set of
360
+ # groups you specify replaces the current set. You must specify at least
361
+ # one group, even if it's just the default security group in the VPC.
362
+ # You must specify the ID of the security group, not the name.
363
+ # @option options [Types::NetworkInterfaceAttachmentChanges] :attachment
364
+ # Information about the interface attachment. If modifying the 'delete
365
+ # on termination' attribute, you must specify the ID of the interface
366
+ # attachment.
367
+ # @return [EmptyStructure]
368
+ def modify_attribute(options = {})
369
+ options = options.merge(network_interface_id: @id)
370
+ resp = @client.modify_network_interface_attribute(options)
371
+ resp.data
372
+ end
373
+
374
+ # @example Request syntax with placeholder values
375
+ #
376
+ # network_interface.reset_attribute({
377
+ # dry_run: false,
378
+ # source_dest_check: "String",
379
+ # })
380
+ # @param [Hash] options ({})
381
+ # @option options [Boolean] :dry_run
382
+ # Checks whether you have the required permissions for the action,
383
+ # without actually making the request, and provides an error response.
384
+ # If you have the required permissions, the error response is
385
+ # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
386
+ # @option options [String] :source_dest_check
387
+ # The source/destination checking attribute. Resets the value to `true`.
388
+ # @return [EmptyStructure]
389
+ def reset_attribute(options = {})
390
+ options = options.merge(network_interface_id: @id)
391
+ resp = @client.reset_network_interface_attribute(options)
392
+ resp.data
393
+ end
394
+
395
+ # @example Request syntax with placeholder values
396
+ #
397
+ # network_interface.unassign_private_ip_addresses({
398
+ # private_ip_addresses: ["String"], # required
399
+ # })
400
+ # @param [Hash] options ({})
401
+ # @option options [required, Array<String>] :private_ip_addresses
402
+ # The secondary private IP addresses to unassign from the network
403
+ # interface. You can specify this option multiple times to unassign more
404
+ # than one IP address.
405
+ # @return [EmptyStructure]
406
+ def unassign_private_ip_addresses(options = {})
407
+ options = options.merge(network_interface_id: @id)
408
+ resp = @client.unassign_private_ip_addresses(options)
409
+ resp.data
410
+ end
411
+
412
+ # @!group Associations
413
+
414
+ # @return [NetworkInterfaceAssociation, nil]
415
+ def association
416
+ if data.association.association_id
417
+ NetworkInterfaceAssociation.new(
418
+ id: data.association.association_id,
419
+ data: data.association,
420
+ client: @client
421
+ )
422
+ else
423
+ nil
424
+ end
425
+ end
426
+
427
+ # @return [Subnet, nil]
428
+ def subnet
429
+ if data.subnet_id
430
+ Subnet.new(
431
+ id: data.subnet_id,
432
+ client: @client
433
+ )
434
+ else
435
+ nil
436
+ end
437
+ end
438
+
439
+ # @return [Vpc, nil]
440
+ def vpc
441
+ if data.vpc_id
442
+ Vpc.new(
443
+ id: data.vpc_id,
444
+ client: @client
445
+ )
446
+ else
447
+ nil
448
+ end
449
+ end
450
+
451
+ # @deprecated
452
+ # @api private
453
+ def identifiers
454
+ { id: @id }
455
+ end
456
+ deprecated(:identifiers)
457
+
458
+ private
459
+
460
+ def extract_id(args, options)
461
+ value = args[0] || options.delete(:id)
462
+ case value
463
+ when String then value
464
+ when nil then raise ArgumentError, "missing required option :id"
465
+ else
466
+ msg = "expected :id to be a String, got #{value.class}"
467
+ raise ArgumentError, msg
468
+ end
469
+ end
470
+
471
+ class Collection < Aws::Resources::Collection; end
472
+ end
473
+ end
474
+ end