require File.join(File.dirname(__FILE__), "worker") require "lib/executors/server_executor" require "db/mongo/models/server" require "db/mongo/models/report" class DeployWorker < Worker def perform(options) server_attrs = options.fetch('server_attrs') owner = options.fetch('owner') tags = options.fetch('tags') deploy_info = options.fetch('deploy_info') call() do |out, file| server = Devops::Model::Server.new(server_attrs) report = save_report(file, owner, server) executor = Devops::Executor::ServerExecutor.new(server, out) executor.report = report executor.deploy_server_with_tags(tags, deploy_info) end end private def save_report(file, owner, server) report_data = { "file" => file, "_id" => jid, "created_by" => owner, "project" => server.project, "deploy_env" => server.deploy_env, "status" => STATUS::RUNNING, "chef_node_name" => server.chef_node_name, "host" => server.public_ip || server.private_ip } if server.stack.nil? report_data["type"] = Devops::Model::Report::DEPLOY_TYPE else report_data["type"] = Devops::Model::Report::DEPLOY_STACK_TYPE report_data["stack"] = server.stack end report = Devops::Model::Report.new(report_data) mongo.save_report(report) report end end