Sha256: 7c53338e555376ef95bcc01440f458f025db4f32f2471fef304b42e6160f9692

Contents?: true

Size: 1.3 KB

Versions: 31

Compression:

Stored size: 1.3 KB

Contents

module Fog
  module Brightbox
    module Compute
      #
      # This selects the preferred image to use based on a number of
      # conditions
      #
      class ImageSelector
        # Prepares a selector with the API output
        #
        # @param [Array<Hash>] images hash matching API output for {Fog::Compute::Brightbox#list_images}
        #
        def initialize(images)
          @images = images
        end

        # 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
        #
        # @note This performs a live query against the API
        #
        # @return [String] if image matches containing the identifier
        # @return [NilClass] if no image matches
        #
        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
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 3 rubygems

Version Path
fog-maestrodev-1.18.0.20131126183714 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131126122111 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131125111730 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131125083406 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131123105121 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131122203507 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131121075022 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131118164830 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131115184302 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131114200144 lib/fog/brightbox/compute/image_selector.rb
gapinc-fog-1.12.1.2.1 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131112185232 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.18.0.20131111203459 lib/fog/brightbox/compute/image_selector.rb
fog-1.18.0 lib/fog/brightbox/compute/image_selector.rb
fog-1.17.0 lib/fog/brightbox/compute/image_selector.rb
fog-1.16.0 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.15.0.20130927082724 lib/fog/brightbox/compute/image_selector.rb
fog-maestrodev-1.15.0.20130829165835 lib/fog/brightbox/compute/image_selector.rb
fog-1.15.0 lib/fog/brightbox/compute/image_selector.rb
gapinc-fog-1.14.0 lib/fog/brightbox/compute/image_selector.rb