45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | #root = File.join(File.dirname(__FILE__), "..") | ||
|  | #$LOAD_PATH.push root unless $LOAD_PATH.include? root | ||
|  | 
 | ||
|  | require File.join(File.dirname(__FILE__), "worker") | ||
|  | 
 | ||
|  | require "providers/provider_factory" | ||
|  | require "commands/server" | ||
|  | require "db/mongo/models/server" | ||
|  | 
 | ||
|  | class BootstrapWorker < Worker | ||
|  |   include ServerCommands | ||
|  | 
 | ||
|  |   def perform(dir, e_provider, server, conf) | ||
|  |     set_status jid, "init" | ||
|  |     config = convert_config(conf) | ||
|  |     File.open(File.join(dir, jid), "w") do |out| | ||
|  |       begin | ||
|  |         set_status jid, "running" | ||
|  |         mongo = mongo_connector(config) | ||
|  |         ::Provider::ProviderFactory.init(config) | ||
|  |         provider = ::Provider::ProviderFactory.get(e_provider) | ||
|  |         logger.debug "Provider: #{provider.inspect}" | ||
|  |         s = Server.new(server) | ||
|  |         s.options = convert_config(server["options"]) | ||
|  |         key = mongo.key(s.key) | ||
|  |         out << "\nBootstrap with run list: #{s.options[:run_list].inspect}" | ||
|  |         status = bootstrap(s, out, key.path, logger) | ||
|  |         if status == 0
 | ||
|  |           out << "Chef node name: #{s.chef_node_name}\n" | ||
|  |           mongo.server_set_chef_node_name s | ||
|  |           out << "Chef node name has been updated\n" | ||
|  |         end | ||
|  |         set_status jid, (status == 0 ? "completed" : "failed") | ||
|  |       rescue Exception => e | ||
|  |         out << "\n" | ||
|  |         out << e.message | ||
|  |         out << "\n" | ||
|  |         out << e.backtrace.join("\n") | ||
|  |         set_status jid, "failed" | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end | ||
|  | 
 |