workers
This commit is contained in:
parent
1addbe31b4
commit
d24a0ae927
@ -410,6 +410,10 @@ class MongoConnector
|
|||||||
Report.new(r)
|
Report.new(r)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_report_status id, status
|
||||||
|
@reports.update({"_id" => id}, {"$set" => {"status" => status, "updated_at" => Time.new}})
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def find_server params
|
def find_server params
|
||||||
s = @servers.find(create_query(params)).to_a[0]
|
s = @servers.find(create_query(params)).to_a[0]
|
||||||
|
|||||||
@ -12,16 +12,7 @@ class BootstrapWorker < Worker
|
|||||||
include ServerCommands
|
include ServerCommands
|
||||||
|
|
||||||
def perform(dir, e_provider, server, owner, conf)
|
def perform(dir, e_provider, server, owner, conf)
|
||||||
set_status jid, "init"
|
call(conf, e_provider, dir) do |mongo, provider, out, file|
|
||||||
config = convert_config(conf)
|
|
||||||
file = File.join(dir, jid)
|
|
||||||
File.open(file, "w") do |out|
|
|
||||||
begin
|
|
||||||
set_status jid, "running"
|
|
||||||
mongo = mongo_connector(config)
|
|
||||||
::Provider::ProviderFactory.init(config)
|
|
||||||
provider = ::Provider::ProviderFactory.get(e_provider)
|
|
||||||
logger.debug "Provider: #{provider.inspect}"
|
|
||||||
s = Server.new(server)
|
s = Server.new(server)
|
||||||
s.options = convert_config(server["options"])
|
s.options = convert_config(server["options"])
|
||||||
o = {
|
o = {
|
||||||
@ -42,14 +33,7 @@ class BootstrapWorker < Worker
|
|||||||
mongo.server_set_chef_node_name s
|
mongo.server_set_chef_node_name s
|
||||||
out << "Chef node name has been updated\n"
|
out << "Chef node name has been updated\n"
|
||||||
end
|
end
|
||||||
set_status jid, (status == 0 ? "completed" : "failed")
|
status
|
||||||
rescue Exception => e
|
|
||||||
out << "\n"
|
|
||||||
out << e.message
|
|
||||||
out << "\n"
|
|
||||||
out << e.backtrace.join("\n")
|
|
||||||
set_status jid, "failed"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -12,15 +12,7 @@ class CreateServerWorker < Worker
|
|||||||
include ServerCommands
|
include ServerCommands
|
||||||
|
|
||||||
def perform(dir, e_provider, server, owner, conf)
|
def perform(dir, e_provider, server, owner, conf)
|
||||||
set_status jid, "init"
|
call(conf, e_provider, dir) do |mongo, provider, out, file|
|
||||||
config = convert_config(conf)
|
|
||||||
file = File.join(dir, jid)
|
|
||||||
File.open(file, "w") do |out|
|
|
||||||
begin
|
|
||||||
set_status jid, "running"
|
|
||||||
mongo = mongo_connector(config)
|
|
||||||
::Provider::ProviderFactory.init(config)
|
|
||||||
provider = ::Provider::ProviderFactory.get(e_provider)
|
|
||||||
s = Server.new(server)
|
s = Server.new(server)
|
||||||
s.options = convert_config(server["options"])
|
s.options = convert_config(server["options"])
|
||||||
o = {
|
o = {
|
||||||
@ -34,14 +26,7 @@ class CreateServerWorker < Worker
|
|||||||
mongo.save_report(Report.new(o))
|
mongo.save_report(Report.new(o))
|
||||||
|
|
||||||
status = create_server_proc.call(out, s, provider, mongo)
|
status = create_server_proc.call(out, s, provider, mongo)
|
||||||
set_status jid, (status == 0 ? "completed" : "failed")
|
status
|
||||||
rescue Exception => e
|
|
||||||
out << "\n"
|
|
||||||
out << e.message
|
|
||||||
out << "\n"
|
|
||||||
out << e.backtrace.join("\n")
|
|
||||||
set_status jid, "failed"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -11,13 +11,7 @@ class DeployWorker < Worker
|
|||||||
include DeployCommands
|
include DeployCommands
|
||||||
|
|
||||||
def perform(dir, server, tags, owner, conf)
|
def perform(dir, server, tags, owner, conf)
|
||||||
set_status jid, "init"
|
call(conf, nil, dir) do |mongo, provider, out, file|
|
||||||
config = convert_config(conf)
|
|
||||||
file = File.join(dir, jid)
|
|
||||||
File.open(file, "w") do |out|
|
|
||||||
begin
|
|
||||||
set_status jid, "running"
|
|
||||||
mongo = mongo_connector(config)
|
|
||||||
s = Server.new(server)
|
s = Server.new(server)
|
||||||
o = {
|
o = {
|
||||||
"file" => file,
|
"file" => file,
|
||||||
@ -29,15 +23,8 @@ class DeployWorker < Worker
|
|||||||
}
|
}
|
||||||
mongo.save_report(Report.new(o))
|
mongo.save_report(Report.new(o))
|
||||||
|
|
||||||
r = deploy_server_proc.call(out, s, mongo, tags)
|
status = deploy_server_proc.call(out, s, mongo, tags)
|
||||||
set_status jid, (r == 0 ? "completed" : "failed")
|
status
|
||||||
rescue Exception => e
|
|
||||||
out << "\n"
|
|
||||||
out << e.message
|
|
||||||
out << "\n"
|
|
||||||
out << e.backtrace.join("\n")
|
|
||||||
set_status jid, "failed"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -13,16 +13,8 @@ class ProjectTestWorker < Worker
|
|||||||
include StatusCommands
|
include StatusCommands
|
||||||
|
|
||||||
def perform(dir, params, conf)
|
def perform(dir, params, conf)
|
||||||
FileUtils.mkdir_p(dir) unless File.exists?(dir)
|
call(conf, nil, dir) do |mongo, provider, out, file|
|
||||||
set_status jid, "init"
|
|
||||||
config = convert_config(conf)
|
|
||||||
file = File.join(dir, jid)
|
|
||||||
File.open(file, "w") do |out|
|
|
||||||
begin
|
|
||||||
set_status jid, "running"
|
|
||||||
logger.info "Test project '#{params["project"]}' and env '#{params["env"]}' (user - #{params["user"]})"
|
logger.info "Test project '#{params["project"]}' and env '#{params["env"]}' (user - #{params["user"]})"
|
||||||
mongo = mongo_connector(config)
|
|
||||||
::Provider::ProviderFactory.init(config)
|
|
||||||
project = mongo.project(params["project"])
|
project = mongo.project(params["project"])
|
||||||
env = project.deploy_env(params["env"])
|
env = project.deploy_env(params["env"])
|
||||||
user = params["user"]
|
user = params["user"]
|
||||||
@ -111,15 +103,7 @@ class ProjectTestWorker < Worker
|
|||||||
result[:servers].push sr
|
result[:servers].push sr
|
||||||
end
|
end
|
||||||
out << "\n\n#{result.to_json}"
|
out << "\n\n#{result.to_json}"
|
||||||
|
status
|
||||||
set_status jid, (status == 0 ? "completed" : "failed")
|
|
||||||
rescue Exception => e
|
|
||||||
out << "\n"
|
|
||||||
out << e.message
|
|
||||||
out << "\n"
|
|
||||||
out << e.backtrace.join("\n")
|
|
||||||
set_status jid, "failed"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -4,11 +4,21 @@ $LOAD_PATH.push root unless $LOAD_PATH.include? root
|
|||||||
require "sidekiq"
|
require "sidekiq"
|
||||||
require "sidekiq/api"
|
require "sidekiq/api"
|
||||||
|
|
||||||
|
require "fileutils"
|
||||||
|
|
||||||
require "db/mongo/mongo_connector"
|
require "db/mongo/mongo_connector"
|
||||||
|
require "providers/provider_factory"
|
||||||
|
|
||||||
class Worker
|
class Worker
|
||||||
include Sidekiq::Worker
|
include Sidekiq::Worker
|
||||||
|
|
||||||
|
module STATUS
|
||||||
|
INIT = "init"
|
||||||
|
RUNNING = "running"
|
||||||
|
COMPLETED = "completed"
|
||||||
|
FAILED = "failed"
|
||||||
|
end
|
||||||
|
|
||||||
def convert_config conf
|
def convert_config conf
|
||||||
config = {}
|
config = {}
|
||||||
conf.each {|k,v| config[k.is_a?(String) ? k.to_sym : k] = v}
|
conf.each {|k,v| config[k.is_a?(String) ? k.to_sym : k] = v}
|
||||||
@ -26,4 +36,41 @@ class Worker
|
|||||||
Sidekiq.redis {|con| con.hset "devops", id, status}
|
Sidekiq.redis {|con| con.hset "devops", id, status}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def call conf, e_provider, dir
|
||||||
|
FileUtils.mkdir_p(dir) unless File.exists?(dir)
|
||||||
|
set_status jid, "init"
|
||||||
|
config = convert_config(conf)
|
||||||
|
file = File.join(dir, jid)
|
||||||
|
error = nil
|
||||||
|
mongo = nil
|
||||||
|
provider = nil
|
||||||
|
begin
|
||||||
|
mongo = mongo_connector(config)
|
||||||
|
unless e_provider.nil?
|
||||||
|
::Provider::ProviderFactory.init(config)
|
||||||
|
provider = ::Provider::ProviderFactory.get(e_provider)
|
||||||
|
end
|
||||||
|
rescue Exception => e
|
||||||
|
error = e
|
||||||
|
end
|
||||||
|
File.open(file, "w") do |out|
|
||||||
|
begin
|
||||||
|
set_status jid, STATUS::RUNNING
|
||||||
|
raise error unless error.nil?
|
||||||
|
status = yield(mongo, provider, out, file)
|
||||||
|
status = (status == 0 ? STATUS::COMPLETED : STATUS::FAILED)
|
||||||
|
set_status jid, status
|
||||||
|
mongo.set_report_status(jid, status)
|
||||||
|
status
|
||||||
|
rescue Exception => e
|
||||||
|
out << "\n"
|
||||||
|
out << e.message
|
||||||
|
out << "\n"
|
||||||
|
out << e.backtrace.join("\n")
|
||||||
|
set_status jid, STATUS::FAILED
|
||||||
|
mongo.set_report_status(jid, STATUS::FAILED) unless mongo.nil?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user