class EC2Bootstrap::AMI

Constants

DEFAULT_AWS_REGION
DEFAULT_IMAGE_FILTERS

Public Class Methods

from_config(config, logger) click to toggle source
# File lib/ec2_bootstrap/ami.rb, line 20
def self.from_config(config, logger)
        if config['filters']
                config['filters'] = config['filters'].to_a.map {|filter| {name: filter.first, values: filter.last}}
                config['filters'] += DEFAULT_IMAGE_FILTERS
        end
        return self.new(config, logger)
end
new(config, logger) click to toggle source
# File lib/ec2_bootstrap/ami.rb, line 14
def initialize(config, logger)
        @region = config.delete('region') || DEFAULT_AWS_REGION
        @search_options = config
        @logger = logger
end

Public Instance Methods

fetch_eligible_images() click to toggle source
# File lib/ec2_bootstrap/ami.rb, line 40
def fetch_eligible_images
        ENV['AWS_REGION'] = @region
        return Aws::EC2::Resource.new.images(@search_options)
end
find_newest_image_id() click to toggle source
# File lib/ec2_bootstrap/ami.rb, line 28
def find_newest_image_id
        images = self.fetch_eligible_images

        newest_image = images.max_by{|i| Time.parse(i.creation_date)}
        newest_image_id = newest_image ? newest_image.id : nil

        @logger.error("Couldn't find any AMIs matching your specifications. Can't set a default AMI.") unless newest_image_id
        @logger.info("Using #{newest_image_id} as the default AMI.") if newest_image_id

        return newest_image_id
end