Class: StackMaster::ParameterResolvers::AmiFinder

Inherits:
Object
  • Object
show all
Defined in:
lib/stack_master/parameter_resolvers/ami_finder.rb

Instance Method Summary collapse

Constructor Details

#initialize(region) ⇒ AmiFinder

Returns a new instance of AmiFinder.



4
5
6
# File 'lib/stack_master/parameter_resolvers/ami_finder.rb', line 4

def initialize(region)
  @region = region
end

Instance Method Details

#build_filters_from_hash(hash) ⇒ Object



17
18
19
# 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) ⇒ Object



8
9
10
11
12
13
14
15
# 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']) ⇒ Object



21
22
23
24
25
26
27
# 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