module Chef::Knife::ScalewayBase
Public Class Methods
included(includer)
click to toggle source
# File lib/chef/knife/scaleway_base.rb, line 24 def self.included(includer) includer.class_eval do category 'scaleway' # Lazy load our dependencies. Later calls to `Knife#deps` override # previous ones, so if the including class calls it, it needs to also # call our #load_deps, i.e: # # Include Chef::Knife::ScalewayBase # # deps do # require 'foo' # require 'bar' # Chef::Knife::ScalewayBase.load_deps # end # deps { Chef::Knife::ScalewayBase.load_deps } option :scaleway_access_token, short: '-A ACCESS_TOKEN', long: '--scaleway_access_token ACCESS_TOKEN', description: 'Your Scaleway ACCESS_TOKEN', proc: proc { |access_token| Chef::Config[:knife][:scaleway_access_token] = access_token } end end
load_deps()
click to toggle source
# File lib/chef/knife/scaleway_base.rb, line 18 def self.load_deps require_relative 'scaleway' require 'json' require 'chef/mixin/shell_out' end
Public Instance Methods
client()
click to toggle source
# File lib/chef/knife/scaleway_base.rb, line 50 def client Scaleway::Client.new(Chef::Config[:knife][:scaleway_access_key], Chef::Config[:knife][:scaleway_token]) end
locate_config_value(key)
click to toggle source
# File lib/chef/knife/scaleway_base.rb, line 67 def locate_config_value(key) key = key.to_sym config[key] || Chef::Config[:knife][key] end
validate!(keys = [:scaleway_access_key, :scaleway_token])
click to toggle source
# File lib/chef/knife/scaleway_base.rb, line 54 def validate!(keys = [:scaleway_access_key, :scaleway_token]) errors = [] keys.each do |k| if locate_config_value(k).nil? errors << "You did not provide a valid '#{k}' value. " \ "Please set knife[:#{k}] in your knife.rb or pass as an option." end end exit 1 if errors.each { |e| ui.error(e) }.any? end
wait_for_status(result, status: 'in-progress', sleep: 3)
click to toggle source
# File lib/chef/knife/scaleway_base.rb, line 72 def wait_for_status(result, status: 'in-progress', sleep: 3) print "Waiting for state #{status}" result = Scaleway::Server.find(locate_config_value(:id)) while result.state != status sleep sleep print('.') #if status == 'starting' || status == 'stopping' #break if client.servers.find(id: locate_config_value(:id)).status != 'in-progress' #else break if Scaleway::Server.find(locate_config_value(:id)).state == status #end end ui.info 'OK' end