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