class StackMaster::ParameterResolvers::AmiFinder

Public Class Methods

new(region) click to toggle source
# File lib/stack_master/parameter_resolvers/ami_finder.rb, line 4
def initialize(region)
  @region = region
end

Public Instance Methods

build_filters_from_hash(hash) click to toggle source
# File lib/stack_master/parameter_resolvers/ami_finder.rb, line 17
def build_filters_from_hash(hash)
  hash.map { |key, value| {name: key, values: Array(value.to_s)}}
end
build_filters_from_string(value, prefix = nil) click to toggle source
# File lib/stack_master/parameter_resolvers/ami_finder.rb, line 8
def build_filters_from_string(value, prefix = nil)
  filters = value.split(',').map do |name_with_value|
    name, value = name_with_value.strip.split('=')
    name = prefix ? "#{prefix}:#{name}" : name
    { name: name, values: [value] }
  end
  filters
end
find_latest_ami(filters, owners = ['self']) click to toggle source
# File lib/stack_master/parameter_resolvers/ami_finder.rb, line 21
def find_latest_ami(filters, owners = ['self'])
  images = ec2.describe_images(owners: owners, filters: filters).images
  sorted_images = images.sort do |a, b|
    Time.parse(a.creation_date) <=> Time.parse(b.creation_date)
  end
  sorted_images.last
end

Private Instance Methods

ec2() click to toggle source
# File lib/stack_master/parameter_resolvers/ami_finder.rb, line 31
def ec2
  @ec2 ||= Aws::EC2::Client.new(region: @region)
end