Class: Fog::Brightbox::Compute::ImageSelector

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/brightbox/compute/image_selector.rb

Overview

This selects the preferred image to use based on a number of conditions

Instance Method Summary collapse

Constructor Details

#initialize(images) ⇒ ImageSelector

Prepares a selector with the API output

Parameters:

  • images (Array<Hash>)

    hash matching API output for Compute::Brightbox#list_images



13
14
15
# File 'lib/fog/brightbox/compute/image_selector.rb', line 13

def initialize(images)
  @images = images
end

Instance Method Details

#latest_ubuntuString, NilClass

Note:

This performs a live query against the API

Returns current identifier of the latest version of Ubuntu

The order of preference is:

  • Only Official Brightbox images

  • Only Ubuntu images

  • Latest by name (alphanumeric sort)

  • Latest by creation date

Returns:

  • (String)

    if image matches containing the identifier

  • (NilClass)

    if no image matches



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/fog/brightbox/compute/image_selector.rb', line 30

def latest_ubuntu
  @images.select do |img|
    img["official"] == true &&
      img["arch"] == "i686" &&
      img["name"] =~ /ubuntu/i
  end.sort do |a, b|
    # Reverse sort so "raring" > "precise" and "13.10" > "13.04"
    b["name"].downcase <=> a["name"].downcase
  end.first["id"]
rescue
  nil
end