class Nucleon::Action::Node::Spawn
Public Class Methods
describe()
click to toggle source
Calls superclass method
# File lib/nucleon/action/node/spawn.rb 12 def self.describe 13 super(:node, :spawn, 635) 14 end
Public Instance Methods
arguments()
click to toggle source
# File lib/nucleon/action/node/spawn.rb 53 def arguments 54 [ :node_provider, :image, :hostnames ] 55 end
configure()
click to toggle source
Calls superclass method
# File lib/nucleon/action/node/spawn.rb 19 def configure 20 super do 21 codes :key_failure, 22 :node_create_failure 23 24 register_bool :bootstrap, true 25 register_bool :provision, false 26 27 register_array :hostnames, nil 28 register_array :groups 29 30 register_str :region, nil 31 register_str :machine_type, nil 32 register_str :image, nil 33 register_str :user, nil 34 35 keypair_config 36 37 config.defaults(CORL.action_config(:node_bootstrap)) 38 config.defaults(CORL.action_config(:node_seed)) 39 end 40 end
execute()
click to toggle source
Calls superclass method
# File lib/nucleon/action/node/spawn.rb 60 def execute 61 super do |node| 62 ensure_network do 63 if keypair && keypair_clean 64 hostnames = [] 65 results = [] 66 node_provider = settings.delete(:node_provider) 67 is_parallel = CORL.parallel? && settings[:parallel] 68 69 if CORL.vagrant? && ! CORL.loaded_plugins(:CORL, :node).keys.include?(node_provider.to_sym) 70 settings[:machine_type] = node_provider 71 settings[:user] = :vagrant unless settings[:user] 72 node_provider = :vagrant 73 end 74 unless settings[:user] 75 settings[:user] = :root 76 end 77 78 info('start', { :node_provider => node_provider }) 79 80 settings.delete(:hostnames).each do |hostname| 81 hostnames << extract_hostnames(hostname) 82 end 83 hostnames.flatten.each do |hostname| 84 if hostname.is_a?(Hash) 85 settings[:public_ip] = hostname[:ip] 86 hostname = hostname[:hostname] 87 end 88 89 if is_parallel 90 results << network.future.add_node(node_provider, hostname, settings.export) 91 else 92 results << network.add_node(node_provider, hostname, settings.export) 93 end 94 end 95 results = results.map { |future| future.value } if is_parallel 96 myself.status = code.batch_error if results.include?(false) 97 else 98 myself.status = code.key_failure 99 end 100 end 101 end 102 end
ignore()
click to toggle source
# File lib/nucleon/action/node/spawn.rb 49 def ignore 50 node_ignore - [ :parallel, :node_provider ] + [ :bootstrap_nodes ] 51 end
node_config()
click to toggle source
Calls superclass method
# File lib/nucleon/action/node/spawn.rb 42 def node_config 43 super 44 config[:node_provider].default = nil 45 end
Protected Instance Methods
extract_hostnames(hostname)
click to toggle source
# File lib/nucleon/action/node/spawn.rb 107 def extract_hostnames(hostname) 108 hostnames = [] 109 110 if hostname.match(/([^\[]+)\[([^\]]+)\](.*)/) 111 before = $1 112 extra = $2.strip 113 after = $3 114 115 if extra.match(/\-/) 116 low, high = extra.split(/\s*\-\s*/) 117 range = Range.new(low, high) 118 119 range.each do |item| 120 hostnames << "#{before}#{item}#{after}" 121 end 122 123 elsif extra.match(/\d+\.\d+\.\d+\.\d+/) 124 hostnames = [ { :hostname => "#{before}#{after}", :ip => extra } ] 125 end 126 else 127 hostnames = [ hostname ] 128 end 129 hostnames 130 end