refactore bootstrap server worker
This commit is contained in:
parent
8e190d23b4
commit
e682e75884
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user