module AwsPublicIps::Utils

Public Class Methods

has_service?(client) click to toggle source
# File lib/aws_public_ips/utils.rb, line 24
def self.has_service?(client)
  region_partition = ::Aws::Partitions.partitions.find do |partition|
    partition.regions.map(&:name).include?(client.config.region)
  end
  service_name = client.class.to_s.split('::')[-2]

  aws_service = region_partition.services.find { |service| service.name == service_name }
  !aws_service.regionalized? || aws_service.regions.include?(client.config.region)
end
resolve_hostname(hostname) click to toggle source
# File lib/aws_public_ips/utils.rb, line 12
def self.resolve_hostname(hostname)
  # Default Resolv.getaddresses doesn't seem to return IPv6 results
  resources = ::Resolv::DNS.open do |dns|
    dns.getresources(hostname, ::Resolv::DNS::Resource::IN::A) +
      dns.getresources(hostname, ::Resolv::DNS::Resource::IN::AAAA)
  end

  resources.map do |resource|
    resource.address.to_s.downcase
  end
end
resolve_hostnames(hostnames) click to toggle source
# File lib/aws_public_ips/utils.rb, line 8
def self.resolve_hostnames(hostnames)
  hostnames.flat_map(&method(:resolve_hostname))
end