#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