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

View File

@ -6,6 +6,14 @@ module Provider
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
def connection_compute options
Fog::Compute.new( options )
@ -29,13 +37,5 @@ module Provider
def unset_tags instance_id, tags
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

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 "lib/executors/server_executor"
@ -10,28 +7,37 @@ require "db/mongo/models/report"
class BootstrapWorker < Worker
def perform(dir, e_provider, server, bootstrap_template, owner, conf)
call(conf, e_provider, dir) do |provider, out, file|
mongo = Devops::Db.connector
s = Devops::Model::Server.new(server)
# s.options = convert_config(server["options"])
o = {
"file" => file,
"_id" => jid,
"created_by" => owner,
"project" => s.project,
"deploy_env" => s.deploy_env,
"type" => Devops::Model::Report::BOOTSTRAP_TYPE
}
mongo.save_report(Devops::Model::Report.new(o))
def perform(options)
provider_name = options.fetch('provider_name')
server_attrs = options.fetch('server_attrs')
bootstrap_template = options.fetch('bootstrap_template')
owner = options.fetch('owner')
call(provider_name) do |provider, out, file|
server = Devops::Model::Server.new(server_attrs)
save_report(file, owner, server)
options = {
:bootstrap_template => bootstrap_template
bootstrap_template: bootstrap_template
}
status = Devops::Executor::ServerExecutor.new(s, out).two_phase_bootstrap(options)
mongo.set_report_server_data(jid, s.chef_node_name, s.public_ip || s.private_ip)
status = Devops::Executor::ServerExecutor.new(server, out).two_phase_bootstrap(options)
mongo.set_report_server_data(jid, server.chef_node_name, server.public_ip || server.private_ip)
status
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