refactore bootstrap server worker

This commit is contained in:
Anton Chuchkalov 2015-09-02 12:41:29 +03:00
parent 8e190d23b4
commit e682e75884
3 changed files with 44 additions and 39 deletions

View File

@ -148,21 +148,20 @@ module Devops
end end
def bootstrap_server def bootstrap_server
s, rl, bt = prepare_bootstrap_server server, rl, bootstrap_template = prepare_bootstrap_server
dir = DevopsConfig[:report_dir_v2] dir = DevopsConfig[:report_dir_v2]
files = [] files = []
uri = URI.parse(@request.url) uri = URI.parse(@request.url)
h = s.to_hash
h["_id"] = s.id uri = Worker.start_async(BootstrapWorker, @request,
jid = BootstrapWorker.perform_async(dir, s.provider, h, bt, parser.current_user, DevopsConfig.config) provider_name: server.provider,
Worker.set_status jid, Worker::STATUS::IN_QUEUE server_attrs: server.to_mongo_hash,
DevopsLogger.logger.info "Job '#{jid}' has been started" bootstrap_template: bootstrap_template,
uri.path = "#{DevopsConfig[:url_prefix]}/v2.0/report/" + jid owner: parser.current_user
uri.query = nil )
uri.fragment = nil
files.push uri.to_s
sleep 1 sleep 1
files [uri]
end end
def prepare_bootstrap_server def prepare_bootstrap_server

View File

@ -6,6 +6,14 @@ module Provider
attr_accessor :ssh_key, :certificate_path, :connection_options, :run_list attr_accessor :ssh_key, :certificate_path, :connection_options, :run_list
def create_default_chef_node_name s
"#{self.ssh_key}-#{s.project}-#{s.deploy_env}-#{Time.now.to_i}"
end
def create_default_stack_name s
"stack_#{self.ssh_key}-#{s.project}-#{s.deploy_env}-#{Time.now.to_i}"
end
protected protected
def connection_compute options def connection_compute options
Fog::Compute.new( options ) Fog::Compute.new( options )
@ -29,13 +37,5 @@ module Provider
def unset_tags instance_id, tags def unset_tags instance_id, tags
end end
def create_default_chef_node_name s
"#{self.ssh_key}-#{s.project}-#{s.deploy_env}-#{Time.now.to_i}"
end
def create_default_stack_name s
"stack_#{self.ssh_key}-#{s.project}-#{s.deploy_env}-#{Time.now.to_i}"
end
end end
end end

View File

@ -1,6 +1,3 @@
#root = File.join(File.dirname(__FILE__), "..")
#$LOAD_PATH.push root unless $LOAD_PATH.include? root
require File.join(File.dirname(__FILE__), "worker") require File.join(File.dirname(__FILE__), "worker")
require "lib/executors/server_executor" require "lib/executors/server_executor"
@ -10,28 +7,37 @@ require "db/mongo/models/report"
class BootstrapWorker < Worker class BootstrapWorker < Worker
def perform(dir, e_provider, server, bootstrap_template, owner, conf) def perform(options)
call(conf, e_provider, dir) do |provider, out, file| provider_name = options.fetch('provider_name')
mongo = Devops::Db.connector server_attrs = options.fetch('server_attrs')
s = Devops::Model::Server.new(server) bootstrap_template = options.fetch('bootstrap_template')
# s.options = convert_config(server["options"]) owner = options.fetch('owner')
o = {
"file" => file, call(provider_name) do |provider, out, file|
"_id" => jid, server = Devops::Model::Server.new(server_attrs)
"created_by" => owner, save_report(file, owner, server)
"project" => s.project,
"deploy_env" => s.deploy_env,
"type" => Devops::Model::Report::BOOTSTRAP_TYPE
}
mongo.save_report(Devops::Model::Report.new(o))
options = { options = {
:bootstrap_template => bootstrap_template bootstrap_template: bootstrap_template
} }
status = Devops::Executor::ServerExecutor.new(s, out).two_phase_bootstrap(options) status = Devops::Executor::ServerExecutor.new(server, out).two_phase_bootstrap(options)
mongo.set_report_server_data(jid, s.chef_node_name, s.public_ip || s.private_ip) mongo.set_report_server_data(jid, server.chef_node_name, server.public_ip || server.private_ip)
status status
end end
end end
private
def save_report(file, owner, server)
report = {
"file" => file,
"_id" => jid,
"created_by" => owner,
"project" => server.project,
"deploy_env" => server.deploy_env,
"type" => Devops::Model::Report::BOOTSTRAP_TYPE
}
mongo.save_report(Devops::Model::Report.new(report))
end
end end