Class: Aws::EC2::NetworkInterface

Inherits:
Object
  • Object
show all
Extended by:
Deprecations
Defined in:
lib/aws-sdk-ec2/network_interface.rb

Defined Under Namespace

Classes: Collection

Read-Only Attributes collapse

Actions collapse

Associations collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, options = {}) ⇒ NetworkInterface #initialize(options = {}) ⇒ NetworkInterface

Returns a new instance of NetworkInterface.

Overloads:

  • #initialize(id, options = {}) ⇒ NetworkInterface

    Parameters:

    • id (String)

    Options Hash (options):

  • #initialize(options = {}) ⇒ NetworkInterface

    Options Hash (options):

    • :id (required, String)
    • :client (Client)


22
23
24
25
26
27
28
# File 'lib/aws-sdk-ec2/network_interface.rb', line 22

def initialize(*args)
  options = Hash === args.last ? args.pop.dup : {}
  @id = extract_id(args, options)
  @data = options.delete(:data)
  @client = options.delete(:client) || Client.new(options)
  @waiter_block_warned = false
end

Instance Method Details

#assign_private_ip_addresses(options = {}) ⇒ Types::AssignPrivateIpAddressesResult

Examples:

Request syntax with placeholder values


network_interface.assign_private_ip_addresses({
  ipv_4_prefixes: ["String"],
  ipv_4_prefix_count: 1,
  private_ip_addresses: ["String"],
  secondary_private_ip_address_count: 1,
  allow_reassignment: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :ipv_4_prefixes (Array<String>)

    One or more IPv4 prefixes assigned to the network interface. You cannot use this option if you use the ‘Ipv4PrefixCount` option.

  • :ipv_4_prefix_count (Integer)

    The number of IPv4 prefixes that Amazon Web Services automatically assigns to the network interface. You cannot use this option if you use the ‘Ipv4 Prefixes` option.

  • :private_ip_addresses (Array<String>)

    The IP addresses to be assigned as a secondary private IP address to the network interface. You can’t specify this parameter when also specifying a number of secondary IP addresses.

    If you don’t specify an IP address, Amazon EC2 automatically selects an IP address within the subnet range.

  • :secondary_private_ip_address_count (Integer)

    The number of secondary IP addresses to assign to the network interface. You can’t specify this parameter when also specifying private IP addresses.

  • :allow_reassignment (Boolean)

    Indicates whether to allow an IP address that is already assigned to another network interface or instance to be reassigned to the specified network interface.

Returns:



381
382
383
384
385
386
387
# File 'lib/aws-sdk-ec2/network_interface.rb', line 381

def assign_private_ip_addresses(options = {})
  options = options.merge(network_interface_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.assign_private_ip_addresses(options)
  end
  resp.data
end

#associationNetworkInterfaceAssociation?

Returns:



734
735
736
737
738
739
740
741
742
743
744
# File 'lib/aws-sdk-ec2/network_interface.rb', line 734

def association
  if data[:association][:association_id]
    NetworkInterfaceAssociation.new(
      id: data[:association][:association_id],
      data: data[:association],
      client: @client
    )
  else
    nil
  end
end

#attach(options = {}) ⇒ Types::AttachNetworkInterfaceResult

Examples:

Request syntax with placeholder values


network_interface.attach({
  network_card_index: 1,
  ena_srd_specification: {
    ena_srd_enabled: false,
    ena_srd_udp_specification: {
      ena_srd_udp_enabled: false,
    },
  },
  dry_run: false,
  instance_id: "InstanceId", # required
  device_index: 1, # required
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :network_card_index (Integer)

    The index of the network card. Some instance types support multiple network cards. The primary network interface must be assigned to network card index 0. The default is network card index 0.

  • :ena_srd_specification (Types::EnaSrdSpecification)

    Configures ENA Express for the network interface that this action attaches to the instance.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ‘DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.

  • :instance_id (required, String)

    The ID of the instance.

  • :device_index (required, Integer)

    The index of the device for the network interface attachment.

Returns:



421
422
423
424
425
426
427
# File 'lib/aws-sdk-ec2/network_interface.rb', line 421

def attach(options = {})
  options = options.merge(network_interface_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.attach_network_interface(options)
  end
  resp.data
end

#attachmentTypes::NetworkInterfaceAttachment

The network interface attachment.



40
41
42
# File 'lib/aws-sdk-ec2/network_interface.rb', line 40

def attachment
  data[:attachment]
end

#availability_zoneString

The Availability Zone.

Returns:

  • (String)


46
47
48
# File 'lib/aws-sdk-ec2/network_interface.rb', line 46

def availability_zone
  data[:availability_zone]
end

#clientClient

Returns:



213
214
215
# File 'lib/aws-sdk-ec2/network_interface.rb', line 213

def client
  @client
end

#connection_tracking_configurationTypes::ConnectionTrackingConfiguration

A security group connection tracking configuration that enables you to set the timeout for connection tracking on an Elastic network interface. For more information, see [Connection tracking timeouts] in the *Amazon EC2 User Guide*.

[1]: docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-timeouts



59
60
61
# File 'lib/aws-sdk-ec2/network_interface.rb', line 59

def connection_tracking_configuration
  data[:connection_tracking_configuration]
end

#create_tags(options = {}) ⇒ Tag::Collection

Examples:

Request syntax with placeholder values


tag = network_interface.create_tags({
  dry_run: false,
  tags: [ # required
    {
      key: "String",
      value: "String",
    },
  ],
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ‘DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.

  • :tags (required, Array<Types::Tag>)

    The tags. The ‘value` parameter is required, but if you don’t want the tag to have a value, specify the parameter with no value, and we set the value to an empty string.

Returns:



451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
# File 'lib/aws-sdk-ec2/network_interface.rb', line 451

def create_tags(options = {})
  batch = []
  options = Aws::Util.deep_merge(options, resources: [@id])
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.create_tags(options)
  end
  options[:tags].each do |t|
    batch << Tag.new(
      resource_id: @id,
      key: t[:key],
      value: t[:value],
      client: @client
    )
  end
  Tag::Collection.new([batch], size: batch.size)
end

#dataTypes::NetworkInterface

Returns the data for this Aws::EC2::NetworkInterface. Calls Client#describe_network_interfaces if #data_loaded? is ‘false`.

Returns:



235
236
237
238
# File 'lib/aws-sdk-ec2/network_interface.rb', line 235

def data
  load unless @data
  @data
end

#data_loaded?Boolean

Returns ‘true` if this resource is loaded. Accessing attributes or #data on an unloaded resource will trigger a call to #load.

Returns:

  • (Boolean)

    Returns ‘true` if this resource is loaded. Accessing attributes or #data on an unloaded resource will trigger a call to #load.



243
244
245
# File 'lib/aws-sdk-ec2/network_interface.rb', line 243

def data_loaded?
  !!@data
end

#delete(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


network_interface.delete({
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ‘DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.

Returns:

  • (EmptyStructure)


527
528
529
530
531
532
533
# File 'lib/aws-sdk-ec2/network_interface.rb', line 527

def delete(options = {})
  options = options.merge(network_interface_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.delete_network_interface(options)
  end
  resp.data
end

#delete_tags(options = {}) ⇒ Tag::Collection

Examples:

Request syntax with placeholder values


tag = network_interface.delete_tags({
  dry_run: false,
  tags: [
    {
      key: "String",
      value: "String",
    },
  ],
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ‘DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.

  • :tags (Array<Types::Tag>)

    The tags to delete. Specify a tag key and an optional tag value to delete specific tags. If you specify a tag key without a tag value, we delete any tag with this key regardless of its value. If you specify a tag key with an empty string as the tag value, we delete the tag only if its value is an empty string.

    If you omit this parameter, we delete all user-defined tags for the specified resources. We do not delete Amazon Web Services-generated tags (tags that have the ‘aws:` prefix).

    Constraints: Up to 1000 tags.

Returns:



498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
# File 'lib/aws-sdk-ec2/network_interface.rb', line 498

def delete_tags(options = {})
  batch = []
  options = Aws::Util.deep_merge(options, resources: [@id])
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.delete_tags(options)
  end
  options[:tags].each do |t|
    batch << Tag.new(
      resource_id: @id,
      key: t[:key],
      value: t[:value],
      client: @client
    )
  end
  Tag::Collection.new([batch], size: batch.size)
end

#deny_all_igw_trafficBoolean

Indicates whether a network interface with an IPv6 address is unreachable from the public internet. If the value is ‘true`, inbound traffic from the internet is dropped and you cannot assign an elastic IP address to the network interface. The network interface is reachable from peered VPCs and resources connected through a transit gateway, including on-premises networks.

Returns:

  • (Boolean)


187
188
189
# File 'lib/aws-sdk-ec2/network_interface.rb', line 187

def deny_all_igw_traffic
  data[:deny_all_igw_traffic]
end

#describe_attribute(options = {}) ⇒ Types::DescribeNetworkInterfaceAttributeResult

Examples:

Request syntax with placeholder values


network_interface.describe_attribute({
  dry_run: false,
  attribute: "description", # accepts description, groupSet, sourceDestCheck, attachment, associatePublicIpAddress
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ‘DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.

  • :attribute (String)

    The attribute of the network interface. This parameter is required.

Returns:



550
551
552
553
554
555
556
# File 'lib/aws-sdk-ec2/network_interface.rb', line 550

def describe_attribute(options = {})
  options = options.merge(network_interface_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.describe_network_interface_attribute(options)
  end
  resp.data
end

#descriptionString

A description.

Returns:

  • (String)


65
66
67
# File 'lib/aws-sdk-ec2/network_interface.rb', line 65

def description
  data[:description]
end

#detach(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


network_interface.detach({
  dry_run: false,
  force: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ‘DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.

  • :force (Boolean)

    Specifies whether to force a detachment.

    <note markdown=“1”> * Use the ‘Force` parameter only as a last resort to detach a network

    interface from a failed instance.
    
    • If you use the ‘Force` parameter to detach a network interface, you might not be able to attach a different network interface to the same index on the instance without first stopping and starting the instance.

    • If you force the detachment of a network interface, the [instance metadata] might not get updated. This means that the attributes associated with the detached network interface might still be visible. The instance metadata will get updated when you stop and start the instance.

    </note>
    

    [1]: docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

Returns:

  • (EmptyStructure)


593
594
595
596
597
598
599
# File 'lib/aws-sdk-ec2/network_interface.rb', line 593

def detach(options = {})
  options = options.merge(attachment_id: data[:attachment][:attachment_id])
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.detach_network_interface(options)
  end
  resp.data
end

#groupsArray<Types::GroupIdentifier>

Any security groups for the network interface.

Returns:



71
72
73
# File 'lib/aws-sdk-ec2/network_interface.rb', line 71

def groups
  data[:groups]
end

#idString Also known as: network_interface_id

Returns:

  • (String)


33
34
35
# File 'lib/aws-sdk-ec2/network_interface.rb', line 33

def id
  @id
end

#identifiersObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Deprecated.


772
773
774
# File 'lib/aws-sdk-ec2/network_interface.rb', line 772

def identifiers
  { id: @id }
end

#interface_typeString

The type of network interface.

Returns:

  • (String)


77
78
79
# File 'lib/aws-sdk-ec2/network_interface.rb', line 77

def interface_type
  data[:interface_type]
end

#ipv_4_prefixesArray<Types::Ipv4PrefixSpecification>

The IPv4 prefixes that are assigned to the network interface.

Returns:



126
127
128
# File 'lib/aws-sdk-ec2/network_interface.rb', line 126

def ipv_4_prefixes
  data[:ipv_4_prefixes]
end

#ipv_6_addressString

The IPv6 globally unique address associated with the network interface.

Returns:

  • (String)


200
201
202
# File 'lib/aws-sdk-ec2/network_interface.rb', line 200

def ipv_6_address
  data[:ipv_6_address]
end

#ipv_6_addressesArray<Types::NetworkInterfaceIpv6Address>

The IPv6 addresses associated with the network interface.



83
84
85
# File 'lib/aws-sdk-ec2/network_interface.rb', line 83

def ipv_6_addresses
  data[:ipv_6_addresses]
end

#ipv_6_nativeBoolean

Indicates whether this is an IPv6 only network interface.

Returns:

  • (Boolean)


193
194
195
# File 'lib/aws-sdk-ec2/network_interface.rb', line 193

def ipv_6_native
  data[:ipv_6_native]
end

#ipv_6_prefixesArray<Types::Ipv6PrefixSpecification>

The IPv6 prefixes that are assigned to the network interface.

Returns:



132
133
134
# File 'lib/aws-sdk-ec2/network_interface.rb', line 132

def ipv_6_prefixes
  data[:ipv_6_prefixes]
end

#loadself Also known as: reload

Loads, or reloads #data for the current Aws::EC2::NetworkInterface. Returns ‘self` making it possible to chain methods.

network_interface.reload.data

Returns:

  • (self)


223
224
225
226
227
228
229
# File 'lib/aws-sdk-ec2/network_interface.rb', line 223

def load
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.describe_network_interfaces(network_interface_ids: [@id])
  end
  @data = resp.network_interfaces[0]
  self
end

#mac_addressString

The MAC address.

Returns:

  • (String)


89
90
91
# File 'lib/aws-sdk-ec2/network_interface.rb', line 89

def mac_address
  data[:mac_address]
end

#modify_attribute(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


network_interface.modify_attribute({
  ena_srd_specification: {
    ena_srd_enabled: false,
    ena_srd_udp_specification: {
      ena_srd_udp_enabled: false,
    },
  },
  enable_primary_ipv_6: false,
  connection_tracking_specification: {
    tcp_established_timeout: 1,
    udp_stream_timeout: 1,
    udp_timeout: 1,
  },
  associate_public_ip_address: false,
  dry_run: false,
  description: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
  source_dest_check: {
    value: false,
  },
  groups: ["SecurityGroupId"],
  attachment: {
    attachment_id: "NetworkInterfaceAttachmentId",
    delete_on_termination: false,
  },
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :ena_srd_specification (Types::EnaSrdSpecification)

    Updates the ENA Express configuration for the network interface that’s attached to the instance.

  • :enable_primary_ipv_6 (Boolean)

    If you’re modifying a network interface in a dual-stack or IPv6-only subnet, you have the option to assign a primary IPv6 IP address. A primary IPv6 address is an IPv6 GUA address associated with an ENI that you have enabled to use a primary IPv6 address. Use this option if the instance that this ENI will be attached to relies on its IPv6 address not changing. Amazon Web Services will automatically assign an IPv6 address associated with the ENI attached to your instance to be the primary IPv6 address. Once you enable an IPv6 GUA address to be a primary IPv6, you cannot disable it. When you enable an IPv6 GUA address to be a primary IPv6, the first IPv6 GUA will be made the primary IPv6 address until the instance is terminated or the network interface is detached. If you have multiple IPv6 addresses associated with an ENI attached to your instance and you enable a primary IPv6 address, the first IPv6 GUA address associated with the ENI becomes the primary IPv6 address.

  • :connection_tracking_specification (Types::ConnectionTrackingSpecificationRequest)

    A connection tracking specification.

  • :associate_public_ip_address (Boolean)

    Indicates whether to assign a public IPv4 address to a network interface. This option can be enabled for any network interface but will only apply to the primary network interface (eth0).

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ‘DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.

  • :description (Types::AttributeValue)

    A description for the network interface.

  • :source_dest_check (Types::AttributeBooleanValue)

    Enable or disable source/destination checks, which ensure that the instance is either the source or the destination of any traffic that it receives. If the value is ‘true`, source/destination checks are enabled; otherwise, they are disabled. The default value is `true`. You must disable source/destination checks if the instance runs services such as network address translation, routing, or firewalls.

  • :groups (Array<String>)

    Changes the security groups for the network interface. The new set of groups you specify replaces the current set. You must specify at least one group, even if it’s just the default security group in the VPC. You must specify the ID of the security group, not the name.

  • :attachment (Types::NetworkInterfaceAttachmentChanges)

    Information about the interface attachment. If modifying the ‘delete on termination` attribute, you must specify the ID of the interface attachment.

Returns:

  • (EmptyStructure)


678
679
680
681
682
683
684
# File 'lib/aws-sdk-ec2/network_interface.rb', line 678

def modify_attribute(options = {})
  options = options.merge(network_interface_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.modify_network_interface_attribute(options)
  end
  resp.data
end

#operatorTypes::OperatorResponse

The service provider that manages the network interface.



206
207
208
# File 'lib/aws-sdk-ec2/network_interface.rb', line 206

def operator
  data[:operator]
end

#outpost_arnString

The Amazon Resource Name (ARN) of the Outpost.

Returns:

  • (String)


95
96
97
# File 'lib/aws-sdk-ec2/network_interface.rb', line 95

def outpost_arn
  data[:outpost_arn]
end

#owner_idString

The Amazon Web Services account ID of the owner of the network interface.

Returns:

  • (String)


102
103
104
# File 'lib/aws-sdk-ec2/network_interface.rb', line 102

def owner_id
  data[:owner_id]
end

#private_dns_nameString

The private DNS name.

Returns:

  • (String)


108
109
110
# File 'lib/aws-sdk-ec2/network_interface.rb', line 108

def private_dns_name
  data[:private_dns_name]
end

#private_ip_addressString

The IPv4 address of the network interface within the subnet.

Returns:

  • (String)


114
115
116
# File 'lib/aws-sdk-ec2/network_interface.rb', line 114

def private_ip_address
  data[:private_ip_address]
end

#private_ip_addressesArray<Types::NetworkInterfacePrivateIpAddress>

The private IPv4 addresses associated with the network interface.



120
121
122
# File 'lib/aws-sdk-ec2/network_interface.rb', line 120

def private_ip_addresses
  data[:private_ip_addresses]
end

#requester_idString

The alias or Amazon Web Services account ID of the principal or service that created the network interface.

Returns:

  • (String)


139
140
141
# File 'lib/aws-sdk-ec2/network_interface.rb', line 139

def requester_id
  data[:requester_id]
end

#requester_managedBoolean

Indicates whether the network interface is being managed by Amazon Web Services.

Returns:

  • (Boolean)


146
147
148
# File 'lib/aws-sdk-ec2/network_interface.rb', line 146

def requester_managed
  data[:requester_managed]
end

#reset_attribute(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


network_interface.reset_attribute({
  dry_run: false,
  source_dest_check: "String",
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ‘DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.

  • :source_dest_check (String)

    The source/destination checking attribute. Resets the value to ‘true`.

Returns:

  • (EmptyStructure)


701
702
703
704
705
706
707
# File 'lib/aws-sdk-ec2/network_interface.rb', line 701

def reset_attribute(options = {})
  options = options.merge(network_interface_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.reset_network_interface_attribute(options)
  end
  resp.data
end

#source_dest_checkBoolean

Indicates whether source/destination checking is enabled.

Returns:

  • (Boolean)


152
153
154
# File 'lib/aws-sdk-ec2/network_interface.rb', line 152

def source_dest_check
  data[:source_dest_check]
end

#statusString

The status of the network interface.

Returns:

  • (String)


158
159
160
# File 'lib/aws-sdk-ec2/network_interface.rb', line 158

def status
  data[:status]
end

#subnetSubnet?

Returns:



747
748
749
750
751
752
753
754
755
756
# File 'lib/aws-sdk-ec2/network_interface.rb', line 747

def subnet
  if data[:subnet_id]
    Subnet.new(
      id: data[:subnet_id],
      client: @client
    )
  else
    nil
  end
end

#subnet_idString

The ID of the subnet.

Returns:

  • (String)


164
165
166
# File 'lib/aws-sdk-ec2/network_interface.rb', line 164

def subnet_id
  data[:subnet_id]
end

#tag_setArray<Types::Tag>

Any tags assigned to the network interface.

Returns:



170
171
172
# File 'lib/aws-sdk-ec2/network_interface.rb', line 170

def tag_set
  data[:tag_set]
end

#unassign_private_ip_addresses(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


network_interface.unassign_private_ip_addresses({
  ipv_4_prefixes: ["String"],
  private_ip_addresses: ["String"],
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :ipv_4_prefixes (Array<String>)

    The IPv4 prefixes to unassign from the network interface.

  • :private_ip_addresses (Array<String>)

    The secondary private IP addresses to unassign from the network interface. You can specify this option multiple times to unassign more than one IP address.

Returns:

  • (EmptyStructure)


723
724
725
726
727
728
729
# File 'lib/aws-sdk-ec2/network_interface.rb', line 723

def unassign_private_ip_addresses(options = {})
  options = options.merge(network_interface_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.unassign_private_ip_addresses(options)
  end
  resp.data
end

#vpcVpc?

Returns:



759
760
761
762
763
764
765
766
767
768
# File 'lib/aws-sdk-ec2/network_interface.rb', line 759

def vpc
  if data[:vpc_id]
    Vpc.new(
      id: data[:vpc_id],
      client: @client
    )
  else
    nil
  end
end

#vpc_idString

The ID of the VPC.

Returns:

  • (String)


176
177
178
# File 'lib/aws-sdk-ec2/network_interface.rb', line 176

def vpc_id
  data[:vpc_id]
end

#wait_until(options = {}) {|resource| ... } ⇒ Resource

Deprecated.

Use [Aws::EC2::Client] #wait_until instead

Note:

The waiting operation is performed on a copy. The original resource remains unchanged.

Waiter polls an API operation until a resource enters a desired state.

## Basic Usage

Waiter will polls until it is successful, it fails by entering a terminal state, or until a maximum number of attempts are made.

# polls in a loop until condition is true
resource.wait_until(options) {|resource| condition}

## Example

instance.wait_until(max_attempts:10, delay:5) do |instance|
  instance.state.name == 'running'
end

## Configuration

You can configure the maximum number of polling attempts, and the delay (in seconds) between each polling attempt. The waiting condition is set by passing a block to #wait_until:

# poll for ~25 seconds
resource.wait_until(max_attempts:5,delay:5) {|resource|...}

## Callbacks

You can be notified before each polling attempt and before each delay. If you throw ‘:success` or `:failure` from these callbacks, it will terminate the waiter.

started_at = Time.now
# poll for 1 hour, instead of a number of attempts
proc = Proc.new do |attempts, response|
  throw :failure if Time.now - started_at > 3600
end

  # disable max attempts
instance.wait_until(before_wait:proc, max_attempts:nil) {...}

## Handling Errors

When a waiter is successful, it returns the Resource. When a waiter fails, it raises an error.

begin
  resource.wait_until(...)
rescue Aws::Waiters::Errors::WaiterFailed
  # resource did not enter the desired state in time
end

attempts attempt in seconds invoked before each attempt invoked before each wait

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :max_attempts (Integer) — default: 10

    Maximum number of

  • :delay (Integer) — default: 10

    Delay between each

  • :before_attempt (Proc) — default: nil

    Callback

  • :before_wait (Proc) — default: nil

    Callback

Yield Parameters:

  • resource (Resource)

    to be used in the waiting condition.

Returns:

  • (Resource)

    if the waiter was successful

Raises:

  • (Aws::Waiters::Errors::FailureStateError)

    Raised when the waiter terminates because the waiter has entered a state that it will not transition out of, preventing success.

    yet successful.

  • (Aws::Waiters::Errors::UnexpectedError)

    Raised when an error is encountered while polling for a resource that is not expected.

  • (NotImplementedError)

    Raised when the resource does not



327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
# File 'lib/aws-sdk-ec2/network_interface.rb', line 327

def wait_until(options = {}, &block)
  self_copy = self.dup
  attempts = 0
  options[:max_attempts] = 10 unless options.key?(:max_attempts)
  options[:delay] ||= 10
  options[:poller] = Proc.new do
    attempts += 1
    if block.call(self_copy)
      [:success, self_copy]
    else
      self_copy.reload unless attempts == options[:max_attempts]
      :retry
    end
  end
  Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    Aws::Waiters::Waiter.new(options).wait({})
  end
end