class Fawsade::Client

Public Class Methods

new(region:, access_key_id:, secret_access_key:) click to toggle source
# File lib/fawsade/client.rb, line 3
def initialize(region:, access_key_id:, secret_access_key:)
  @client = Aws::EC2::Client.new(
    region: region,
    access_key_id: access_key_id,
    secret_access_key: secret_access_key)
end

Public Instance Methods

instance_by_id(id) click to toggle source
# File lib/fawsade/client.rb, line 10
def instance_by_id(id)
  instances.find { |instance| instance.id == id }
end
instances_by_name(regex) click to toggle source
# File lib/fawsade/client.rb, line 14
def instances_by_name(regex)
  instances.select { |instance| instance.name =~ /^#{regex}$/ }
end
method_missing(method_name, *parameters, &block) click to toggle source
# File lib/fawsade/client.rb, line 18
def method_missing(method_name, *parameters, &block)
  @client.send(method_name, *parameters, &block)
end

Private Instance Methods

build(instance) click to toggle source
# File lib/fawsade/client.rb, line 38
def build(instance)
  Instance.new(instance.instance_id, instance.private_dns_name, name_of(instance))
end
instances() click to toggle source
# File lib/fawsade/client.rb, line 24
def instances
  @client.describe_instances.reservations.each_with_object([]) do |reservation, array|
    reservation.instances.each do |instance|
      next unless running?(instance) && instance.tags.any?

      array << build(instance)
    end
  end
end
name_of(instance) click to toggle source
# File lib/fawsade/client.rb, line 42
def name_of(instance)
  instance.tags.find { |tag| tag.key == "Name" }.value
end
running?(instance) click to toggle source
# File lib/fawsade/client.rb, line 34
def running?(instance)
  instance.state.name == "running"
end