Sha256: 5826b1ded608d3a78e73394aecb92a36adbeac56637539d1ab66799335b68a3b

Contents?: true

Size: 1.06 KB

Versions: 6

Compression:

Stored size: 1.06 KB

Contents

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

module Builderator
  module Model

    def self.volumes
      @volumes ||= Volumes.new
    end

    ##
    # EC2 Volume Resources
    ##
    class Volumes < Model::Base
      LIMIT = 8
      PROPERTIES = %w(size availability_zone state volume_type iops)

      def fetch
        @resources = {}.tap do |v|
          Util.ec2.describe_volumes.each do |page|
            page.volumes.each do |vol|
              properties = Util.from_tags(vol.tags)
              properties['creation_date'] = vol.create_time.to_datetime
              PROPERTIES.each { |pp| properties[pp] = vol[pp.to_sym] }


              v[vol.volume_id] = {
                :id => vol.volume_id,
                :properties => properties,
                :snapshot => vol.snapshot_id
              }
            end
          end
        end
      end

      def snapshots
        resources.values.map { |v| v[:snapshot] }
      end

      def in_use(_)
        {}.tap do |used|
          used.merge!(select(Model.instances.volumes))
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
builderator-0.3.15 lib/builderator/model/volumes.rb
builderator-0.3.14 lib/builderator/model/volumes.rb
builderator-0.3.13 lib/builderator/model/volumes.rb
builderator-0.3.12 lib/builderator/model/volumes.rb
builderator-0.3.11 lib/builderator/model/volumes.rb
builderator-0.3.10 lib/builderator/model/volumes.rb