require File.join(File.dirname(__FILE__), "worker") require "lib/executors/server_executor" require "db/mongo/models/report" class WaitRebootstrapWorker < Worker # @options # 'jid': bootstrap job to wait # 'server_node_name' # 'owner' # 'old_chef_node': node info 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']}" executor = Devops::Executor::ServerExecutor.new(server, out, current_user: owner) executor.set_run_list(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