2018-04-04 22:44:39 +03:00
|
|
|
require_relative "worker"
|
2014-10-22 15:01:55 +04:00
|
|
|
|
|
|
|
|
require "json"
|
|
|
|
|
require "fileutils"
|
|
|
|
|
require "commands/status"
|
|
|
|
|
|
|
|
|
|
class ProjectTestWorker < Worker
|
|
|
|
|
include StatusCommands
|
|
|
|
|
|
2015-09-03 17:03:47 +03:00
|
|
|
def perform(params)
|
2018-04-04 22:44:39 +03:00
|
|
|
user = params.fetch('user')
|
|
|
|
|
project_name = params.fetch('project')
|
|
|
|
|
deploy_env_name = params.fetch('deploy_env')
|
2015-09-03 17:03:47 +03:00
|
|
|
|
2018-04-04 22:44:39 +03:00
|
|
|
#TODO:
|
|
|
|
|
call() do |out, file|
|
2015-09-03 17:03:47 +03:00
|
|
|
DevopsLogger.logger.info "Test project '#{project_name}' and env '#{deploy_env_name}' (user - #{user})"
|
|
|
|
|
project = mongo.project(project_name)
|
|
|
|
|
env = project.deploy_env(deploy_env_name)
|
2016-02-10 20:39:49 +03:00
|
|
|
report = save_report(user, project_name, deploy_env_name)
|
2014-11-17 14:23:59 +03:00
|
|
|
|
2015-08-12 16:39:41 +03:00
|
|
|
executor = Devops::Executor::ServerExecutor.new(nil, out)
|
|
|
|
|
executor.project = project
|
2015-09-17 11:50:35 +03:00
|
|
|
executor.report = report
|
2015-08-12 16:39:41 +03:00
|
|
|
executor.deploy_env = env
|
|
|
|
|
|
2014-12-04 13:07:25 +03:00
|
|
|
result = {:servers => []}
|
|
|
|
|
project.deploy_envs = [ env ]
|
|
|
|
|
result[:project] = project.to_hash
|
|
|
|
|
status = 0
|
2015-08-12 16:39:41 +03:00
|
|
|
sr = {}
|
|
|
|
|
t1 = Time.now
|
|
|
|
|
out << "\n=== Create server ===\n"
|
|
|
|
|
out.flush
|
2015-09-03 17:03:47 +03:00
|
|
|
if executor.create_server("without_bootstrap" => true)
|
2015-08-12 16:39:41 +03:00
|
|
|
out << "\n=== Create server - OK ===\n"
|
2014-12-04 13:07:25 +03:00
|
|
|
out.flush
|
2015-08-12 16:39:41 +03:00
|
|
|
t2 = Time.now
|
|
|
|
|
s = executor.server
|
|
|
|
|
sr[:id] = s.id
|
|
|
|
|
sr[:create] = {:status => true}
|
|
|
|
|
sr[:create][:time] = time_diff_s(t1, t2)
|
|
|
|
|
DevopsLogger.logger.info "Server with parameters: #{s.to_hash.inspect} is running"
|
|
|
|
|
out << "\n=== Bootstrap ===\n"
|
|
|
|
|
out.flush
|
|
|
|
|
r = executor.bootstrap({})
|
|
|
|
|
t1 = Time.now
|
2018-04-04 22:44:39 +03:00
|
|
|
sr[:name] = s.name
|
2015-08-12 16:39:41 +03:00
|
|
|
if r == 0
|
|
|
|
|
out << "\n=== Bootstrap - OK ===\n"
|
2014-12-04 13:07:25 +03:00
|
|
|
out.flush
|
2015-08-12 16:39:41 +03:00
|
|
|
sr[:bootstrap] = {:status => true}
|
|
|
|
|
sr[:bootstrap][:time] = time_diff_s(t2, t1)
|
|
|
|
|
DevopsLogger.logger.info "Server with id '#{s.id}' is bootstraped"
|
|
|
|
|
out << "\n=== Check server ===\n"
|
2014-10-22 15:01:55 +04:00
|
|
|
out.flush
|
2015-08-12 16:39:41 +03:00
|
|
|
if executor.check_server
|
2015-09-03 17:03:47 +03:00
|
|
|
# mongo.server_insert s
|
2015-08-12 16:39:41 +03:00
|
|
|
out << "\n=== OK, server has been inserted ===\n"
|
2014-10-22 15:01:55 +04:00
|
|
|
out.flush
|
2014-12-04 13:07:25 +03:00
|
|
|
end
|
2015-08-12 16:39:41 +03:00
|
|
|
else
|
|
|
|
|
status = 2
|
|
|
|
|
out << "\n=== Bootstrap - FAIL ===\n"
|
|
|
|
|
out.flush
|
|
|
|
|
sr[:bootstrap] = {:status => false}
|
|
|
|
|
sr[:bootstrap][:return_code] = r
|
|
|
|
|
end
|
2014-10-22 15:01:55 +04:00
|
|
|
|
2015-08-12 16:39:41 +03:00
|
|
|
t1 = Time.now
|
|
|
|
|
out << "\n=== Delete server ===\n"
|
|
|
|
|
out.flush
|
2018-04-04 22:44:39 +03:00
|
|
|
r = executor.delete_from_chef_server(s.name)
|
2015-08-12 16:39:41 +03:00
|
|
|
begin
|
|
|
|
|
r[:server] = s.provider_instance.delete_server s
|
|
|
|
|
out << "\n=== Delete server - OK ===\n"
|
2014-12-04 13:07:25 +03:00
|
|
|
out.flush
|
2015-08-12 16:39:41 +03:00
|
|
|
rescue Fog::Compute::OpenStack::NotFound, Fog::Compute::AWS::Error
|
|
|
|
|
status = 3
|
|
|
|
|
out << "\n=== Delete server - FAIL ===\n"
|
2014-12-04 13:07:25 +03:00
|
|
|
out.flush
|
2015-09-03 17:03:47 +03:00
|
|
|
r[:server] = "Server with id '#{s.id}' not found in '#{s.provider_instance.name}' servers"
|
2015-08-12 16:39:41 +03:00
|
|
|
DevopsLogger.logger.warn r[:server]
|
2014-10-22 15:01:55 +04:00
|
|
|
end
|
2015-08-12 16:39:41 +03:00
|
|
|
mongo.server_delete s.id
|
|
|
|
|
t2 = Time.now
|
|
|
|
|
sr[:delete] = {:status => true}
|
|
|
|
|
sr[:delete][:time] = time_diff_s(t1, t2)
|
|
|
|
|
else
|
|
|
|
|
status = 1
|
|
|
|
|
out << "\n=== Create server - FAIL ===\n"
|
|
|
|
|
out.flush
|
|
|
|
|
sr[:create] = {:status => false}
|
2014-10-22 15:01:55 +04:00
|
|
|
end
|
2015-08-12 16:39:41 +03:00
|
|
|
result[:servers].push sr
|
2014-12-04 13:07:25 +03:00
|
|
|
out << "\n\n#{result.to_json}"
|
|
|
|
|
status
|
2014-10-22 15:01:55 +04:00
|
|
|
end
|
|
|
|
|
end
|
2015-09-03 17:03:47 +03:00
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
2016-02-10 20:39:49 +03:00
|
|
|
def save_report(user, project_name, deploy_env_name)
|
|
|
|
|
update_report(
|
2015-09-03 17:03:47 +03:00
|
|
|
"created_by" => user,
|
|
|
|
|
"project" => project_name,
|
|
|
|
|
"deploy_env" => deploy_env_name,
|
2018-04-04 22:44:39 +03:00
|
|
|
"type" => Devops::Model::JobTask::PROJECT_TEST_TYPE
|
2016-02-10 20:39:49 +03:00
|
|
|
)
|
2015-09-03 17:03:47 +03:00
|
|
|
end
|
2014-10-22 15:01:55 +04:00
|
|
|
end
|