class CoreOS

Constants

DEFAULTS

Public Class Methods

channel(channel_name) click to toggle source
# File lib/coreos_ami.rb, line 16
def self.channel(channel_name)
  new(channel_name)
end
new(channel = :stable) click to toggle source
# File lib/coreos_ami.rb, line 12
def initialize(channel = :stable)
  @channel = channel
end

Public Instance Methods

ami(opt = {}) click to toggle source

return AMI name as string

# File lib/coreos_ami.rb, line 40
def ami(opt = {})
  args = defaults_merge(opt)
  path = [base_url, args[:release].to_s, "coreos_production_ami_#{args[:virtualization]}_#{args[:region]}.txt"].join('/')
  get(path)
end
amis(opt = {}) click to toggle source

return hash of all AMIs for release version

# File lib/coreos_ami.rb, line 33
def amis(opt = {})
  args = defaults_merge(opt)
  path = [base_url, args[:release].to_s, 'coreos_production_ami_all.json'].join('/')
  JSON.parse(get(path))
end
base_url() click to toggle source
# File lib/coreos_ami.rb, line 20
def base_url
  "http://#{@channel}.release.core-os.net/amd64-usr"
end
get(uri) click to toggle source
# File lib/coreos_ami.rb, line 24
def get(uri)
  begin
    Net::HTTP.get_response(URI.parse(uri)).body.chomp
  rescue => e
    raise "Error with coreos url: #{uri}: #{e.message}"
  end
end

Private Instance Methods

defaults_merge(opt) click to toggle source

ignore any nils in passed opts

# File lib/coreos_ami.rb, line 49
def defaults_merge(opt)
  DEFAULTS.merge(opt) do |_, from_default, from_opt|
    from_opt || from_default
  end
end