Sha256: c0dec6fbf1ec2c805f1e3405a161cdae05bf001d46c4814bc88ba4263d41adca

Contents?: true

Size: 1.62 KB

Versions: 13

Compression:

Stored size: 1.62 KB

Contents

# frozen_string_literal: true

module Awspec::Type
  class NetworkInterface < ResourceBase
    tags_allowed

    def resource_via_client
      @resource_via_client ||= find_network_interface(@display_name)
    end

    def id
      @id ||= resource_via_client.network_interface_id if resource_via_client
    end

    STATES = %w[
      available attaching in-use detaching
    ]

    STATES.each do |state|
      define_method "#{state.tr('-', '_')}?" do
        resource_via_client.status == state
      end
    end

    def attached_to?(instance_id, device_index = nil)
      instance = find_ec2(instance_id)
      return false unless instance
      return false unless resource_via_client.attachment
      return false if device_index && resource_via_client.attachment.device_index != device_index

      resource_via_client.attachment.instance_id == instance.instance_id && \
        resource_via_client.attachment.status == 'attached'
    end

    def has_private_ip_address?(ip_address, primary = nil)
      resource_via_client.private_ip_addresses.find do |i|
        next false if !primary.nil? && i.primary != primary

        i.private_ip_address == ip_address
      end
    end

    def has_security_group?(sg_id)
      sgs = resource_via_client.groups
      ret = sgs.find do |sg|
        sg.group_id == sg_id || sg.group_name == sg_id
      end
      return true if ret

      sg2 = find_security_group(sg_id)
      return false unless sg2.tag_name == sg_id

      sgs.find do |sg|
        sg.group_id == sg2.group_id
      end
    end

    def private_ip_addresses_count
      resource_via_client.private_ip_addresses.count
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
awspec-1.31.0 lib/awspec/type/network_interface.rb
awspec-1.30.0 lib/awspec/type/network_interface.rb
awspec-1.29.3 lib/awspec/type/network_interface.rb
awspec-1.29.2 lib/awspec/type/network_interface.rb
awspec-1.29.1 lib/awspec/type/network_interface.rb
awspec-1.29.0 lib/awspec/type/network_interface.rb
awspec-1.28.2 lib/awspec/type/network_interface.rb
awspec-1.28.1 lib/awspec/type/network_interface.rb
awspec-1.28.0 lib/awspec/type/network_interface.rb
awspec-1.27.1 lib/awspec/type/network_interface.rb
awspec-1.27.0 lib/awspec/type/network_interface.rb
awspec-1.26.0 lib/awspec/type/network_interface.rb
awspec-1.25.2 lib/awspec/type/network_interface.rb