class Cyclid::API::Plugins::Mist
Mist
builder. Calls out to Mist
to obtain a build host instance.
Public Class Methods
new()
click to toggle source
# File lib/cyclid/plugins/builder/mist.rb, line 36 def initialize mist_config_file = ENV.fetch('MIST_CONFIG', File.join(%w(/ etc mist config))) @config = ::Mist::Config.new(mist_config_file) pool = ::Mist::Pool.get(@config.servers) @client = ::Mist::Client.new(pool) end
Public Instance Methods
get(args = {})
click to toggle source
Create & return a build host
# File lib/cyclid/plugins/builder/mist.rb, line 45 def get(args = {}) args.symbolize_keys! Cyclid.logger.debug "mist: args=#{args}" # If there is one, split the 'os' into a 'distro' and 'release' if args.key? :os match = args[:os].match(/\A(\w*)_(.*)\Z/) distro = match[1] if match release = match[2] if match else # No OS was specified; use the default # XXX Defaults should be configurable distro = 'ubuntu' release = 'trusty' end begin result = @client.call(:create, distro: distro, release: release) Cyclid.logger.debug "mist result=#{result}" raise "failed to create build host: #{result['message']}" \ unless result['status'] buildhost = MistHost.new(name: result['name'], host: result['ip'], username: result['username'], workspace: "/home/#{result['username']}", password: nil, key: @config.ssh_private_key, server: result['server'], distro: distro, release: release) rescue MessagePack::RPC::TimeoutError => ex Cyclid.logger.error "Mist create call timedout: #{ex}" raise "mist failed: #{ex}" rescue StandardError => ex Cyclid.logger.error "couldn't get a build host from Mist: #{ex}" raise "mist failed: #{ex}" end Cyclid.logger.debug "mist buildhost=#{buildhost.inspect}" return buildhost end
release(_transport, buildhost)
click to toggle source
Destroy the build host
# File lib/cyclid/plugins/builder/mist.rb, line 91 def release(_transport, buildhost) name = buildhost[:name] server = buildhost[:server] begin @client.call(:destroy, name: name, server: server) rescue MessagePack::RPC::TimeoutError => ex Cyclid.logger.error "Mist destroy timed out: #{ex}" end end