fluke/devops-service/workers/bootstrap_worker.rb
Tim Lianov 03dc3d8d99 v3
2018-04-04 22:44:39 +03:00

53 lines
1.4 KiB
Ruby

require_relative "worker"
class BootstrapWorker < Worker
# @options
# 'server_id': required
# 'owner': required
# 'skip_rollback': optional
# 'deploy_info': optional
# 'deployers': optional
# 'bootstrap_template': optional
# 'chef_environment': optional
# 'config': optional, whatever this parameter really means
def perform(options)
server_id = options.fetch('server_id')
owner = options.fetch('owner')
bootstrap_options = {}
['bootstrap_template', 'run_list', 'cm_name'].each do |key|
bootstrap_options[key.to_sym] = options[key] if options.key?(key)
end
call() do |out, task|
server = Devops::Model::Server.find(server_id)
set_task_data({
"created_by" => owner,
"project" => server.project,
"environment" => server.environment,
"server_id" => server.id,
"category" => server.category,
"type" => Devops::Model::JobTask::BOOTSTRAP_TYPE
})
executor = Devops::Executor::ServerExecutor.new(server, out, owner)
executor.job_task = task
status = begin
info = executor.deploy_info(bootstrap_options)
executor.bootstrap_server bootstrap_options, info
0
rescue Devops::Exception::ServerOperationError => e
msg = e.message
DevopsLogger.logger.error msg
e.error_code
end
out.puts msg
out.flush
status
end
end
end