Class: Builderator::Model::Cleaner::Instances

Inherits:
Base
  • Object
show all
Defined in:
lib/builderator/model/cleaner/instances.rb

Overview

EC2 Instance resources

Constant Summary collapse

PROPERTIES =
%w(private_dns_name public_dns_name instance_type
subnet_id vpc_id private_ip_address public_ip_address
architecture root_device_type virtualization_type
hypervisor)

Instance Attribute Summary

Attributes inherited from Base

#resources

Instance Method Summary collapse

Methods inherited from Base

#find, #in_use, #in_use?, #initialize, #select, #unused

Constructor Details

This class inherits a constructor from Builderator::Model::Cleaner::Base

Instance Method Details

#fetchObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/builderator/model/cleaner/instances.rb', line 21

def fetch
  @resources = {}.tap do |i|
    Util.ec2.describe_instances(:filters => [
      {
        :name => 'instance-state-name',
        :values => %w(pending running shutting-down stopping stopped)
      }
    ]).each do |page|
      page.reservations.each do |r|
        r.instances.each do |instance|
          properties = Util.from_tags(instance.tags)
          properties['availability_zone'] = instance.placement.availability_zone
          properties['creation_date'] = instance.launch_time.to_datetime
          PROPERTIES.each { |pp| properties[pp] = instance[pp.to_sym] }

          i[instance.instance_id] = {
            :id => instance.instance_id,
            :image => instance.image_id,
            :volumes => instance.block_device_mappings.map { |b| b.ebs.volume_id },
            :properties => properties
          }
        end
      end
    end
  end
end

#imagesObject



48
49
50
# File 'lib/builderator/model/cleaner/instances.rb', line 48

def images
  resources.values.map { |i| i[:image] }
end

#volumesObject



52
53
54
# File 'lib/builderator/model/cleaner/instances.rb', line 52

def volumes
  resources.values.map { |i| i[:volumes] }.flatten
end