Sha256: 1cf1486eaf4f11d924dd8422d0bb21668d4825737296ba2f2e297a60e0746b17

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

class Aerosol::Instance
  include Aerosol::AWSModel

  aws_attribute :availability_zone, :health_status, :instance_id, :lifecycle_state
  aws_class_attribute :launch_configuration, Aerosol::LaunchConfiguration
  primary_key :instance_id

  def live?
    describe_again
    instance_state_name == 'running'
  end

  def instance_state_name
    description[:state][:name]
  end

  def public_hostname
    description[:public_dns_name]
  end

  def private_ip_address
    description[:private_ip_address]
  end

  def address
    if public_hostname.blank?
      private_ip_address
    else
      public_hostname
    end
  end

  def image_id
    description[:image_id]
  end

  def description
    @description ||= describe!
  end

  def self.request_all
    Aerosol::AWS.auto_scaling
                .describe_auto_scaling_instances
                .auto_scaling_instances
  end

private
  def describe!
    ensure_present! :instance_id
    result = Aerosol::AWS.compute.describe_instances(instance_ids: [instance_id])
    result.reservations.first.instances.first.to_h rescue nil
  end

  def describe_again
    @description = nil
    description
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
aerosol-1.1.0 lib/aerosol/instance.rb
aerosol-1.0.2 lib/aerosol/instance.rb
aerosol-1.0.1 lib/aerosol/instance.rb