require File.join(File.dirname(__FILE__), "worker") require "db/mongo/models/report" class WaitRebootstrapWorker < Worker # @options # 'jid': bootstrap job to wait # 'server_node_name' # 'owner' # 'old_chef_node': node info # 'new_chef_env' def perform(options) call do owner = options.fetch("owner") server = Devops::Db.connector.server_by_chef_node_name(options.fetch("server_node_name")) save_report(owner, server) old_node_info = options.fetch('old_chef_node') out.puts(JSON.pretty_generate(old_node_info)) puts_and_flush "Waiting for bootstrap end..." Devops::Helpers::JobWaiter.new(options["jid"], 10*60).wait puts_and_flush "Setting run list to #{old_node_info['run_list']}" knife_instance = KnifeFactory.instance(options.fetch("new_chef_env")) knife_instance.set_run_list(server.chef_node_name, old_node_info["run_list"]) 0 end end def save_report(owner, server) update_report( "created_by" => owner, "project" => server.project, "deploy_env" => server.deploy_env, "type" => Devops::Model::Report::WAIT_BOOTSTRAP ) end end