Sha256: 1dcdf776ac78ca8b364df7fa16a3d62a12ccb3bf75953d551e0dbcf708f8ae91

Contents?: true

Size: 1.78 KB

Versions: 42

Compression:

Stored size: 1.78 KB

Contents

require 'aws-sdk'
require_relative '../../util'

module Builderator
  module Model
    # :nodoc:
    module Cleaner
      def self.instances
        @instances ||= Instances.new
      end

      ##
      # EC2 Instance resources
      ##
      class Instances < Model::Cleaner::Base
        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)

        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

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

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

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
builderator-2.1.1 lib/builderator/model/cleaner/instances.rb
builderator-2.1.0 lib/builderator/model/cleaner/instances.rb
builderator-2.0.4 lib/builderator/model/cleaner/instances.rb
builderator-2.0.3 lib/builderator/model/cleaner/instances.rb
builderator-2.0.2 lib/builderator/model/cleaner/instances.rb
builderator-2.0.1 lib/builderator/model/cleaner/instances.rb
builderator-2.0.0 lib/builderator/model/cleaner/instances.rb
builderator-1.3.2 lib/builderator/model/cleaner/instances.rb
builderator-1.3.1 lib/builderator/model/cleaner/instances.rb
builderator-1.3.0 lib/builderator/model/cleaner/instances.rb
builderator-1.2.3.pre.beta.1 lib/builderator/model/cleaner/instances.rb
builderator-1.2.2 lib/builderator/model/cleaner/instances.rb
builderator-1.2.1 lib/builderator/model/cleaner/instances.rb
builderator-1.2.0 lib/builderator/model/cleaner/instances.rb
builderator-1.1.12 lib/builderator/model/cleaner/instances.rb
builderator-1.1.11 lib/builderator/model/cleaner/instances.rb
builderator-1.1.10 lib/builderator/model/cleaner/instances.rb
builderator-1.1.9 lib/builderator/model/cleaner/instances.rb
builderator-1.1.8 lib/builderator/model/cleaner/instances.rb
builderator-1.1.7 lib/builderator/model/cleaner/instances.rb