class Nucleon::Action::Node::Seed
Public Class Methods
describe()
click to toggle source
Calls superclass method
# File lib/nucleon/action/node/seed.rb 10 def self.describe 11 super(:node, :seed, 625) 12 end
Public Instance Methods
arguments()
click to toggle source
# File lib/nucleon/action/node/seed.rb 35 def arguments 36 [ :project_reference ] 37 end
configure()
click to toggle source
Calls superclass method
# File lib/nucleon/action/node/seed.rb 17 def configure 18 super do 19 codes :key_store_failure, 20 :project_failure, 21 :network_load_failure, 22 :node_load_failure, 23 :node_save_failure 24 #--- 25 26 register_project :project_reference 27 register_str :project_branch, 'master' 28 end 29 30 config[:parallel].default = false 31 end
execute()
click to toggle source
Calls superclass method
# File lib/nucleon/action/node/seed.rb 42 def execute 43 super do |node| 44 info('start') 45 46 admin_exec do 47 network_path = lookup(:corl_network) 48 backup_path = File.join(Dir.tmpdir(), 'corl') 49 50 info('deploy_keys') 51 52 project_class = CORL.plugin_class(:nucleon, :project) 53 54 if keys = Util::SSH.generate.store 55 if @project_info = project_class.translate_reference(settings[:project_reference], true) 56 project_info = Config.new(@project_info, {}, true, false) 57 else 58 project_info = Config.new({ :provider => :git }, {}, true, false) 59 end 60 61 project_class.clear_project_info(network_path) 62 63 info('backup') 64 FileUtils.rm_rf(backup_path) 65 FileUtils.mv(network_path, backup_path) 66 67 info('seeding') 68 project = CORL.project(extended_config(:project, { 69 :directory => network_path, 70 :reference => project_info.get(:reference, nil), 71 :url => project_info.get(:url, settings[:project_reference]), 72 :revision => project_info.get(:revision, settings[:project_branch]), 73 :create => true, 74 :pull => true, 75 :keys => keys, 76 :internal_ip => CORL.public_ip, # Needed for seeding Vagrant VMs, 77 :new => true 78 }), project_info[:provider]) 79 80 if project 81 info('finalizing') 82 FileUtils.chmod_R(0600, network_path) 83 FileUtils.rm_rf(backup_path) 84 85 info('reinitializing') 86 init_network 87 88 if network.load 89 if node = network.local_node(true) 90 info('updating') 91 myself.status = code.node_save_failure unless node.save 92 else 93 myself.status = code.node_load_failure 94 end 95 else 96 myself.status = code.network_load_failure 97 end 98 else 99 myself.status = code.project_failure 100 end 101 else 102 myself.status = code.key_store_failure 103 end 104 end 105 end 106 end