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