#853: server deploy command
This commit is contained in:
parent
9b1ee779ee
commit
45ede3d962
@ -78,6 +78,49 @@ module Devops
|
|||||||
[uri]
|
[uri]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def deploy node_name
|
||||||
|
call_deploy(node_name) do |options|
|
||||||
|
[ Worker.start_async(DeployWorker, @request, options) ]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def deploy_stream node_name, out
|
||||||
|
call_deploy(node_name) do |options|
|
||||||
|
Worker.start_sync(DeployWorker, @request, options, out)
|
||||||
|
end
|
||||||
|
rescue RecordNotFound => e
|
||||||
|
out << e.message
|
||||||
|
-10
|
||||||
|
end
|
||||||
|
|
||||||
|
def call_deploy node_name
|
||||||
|
body = parser.deploy
|
||||||
|
names = body["names"]
|
||||||
|
tags = body["tags"] || []
|
||||||
|
run_list = body["run_list"]
|
||||||
|
dir = DevopsConfig.config[:report_dir_v2]
|
||||||
|
owner = parser.current_user
|
||||||
|
s = Server.get_server_by_key(node_name, parser.instance_key)
|
||||||
|
project = Devops::Db.connector.check_project_auth s.project, s.deploy_env, owner
|
||||||
|
deploy_info = create_deploy_info(s, project, body["build_number"])
|
||||||
|
deploy_info["run_list"] = run_list if run_list
|
||||||
|
|
||||||
|
yield({
|
||||||
|
server_attrs: s.to_hash,
|
||||||
|
owner: owner,
|
||||||
|
tags: tags,
|
||||||
|
deploy_info: deploy_info
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
def servers names
|
||||||
|
servers = Devops::Db.connector.servers(nil, nil, names, true)
|
||||||
|
raise RecordNotFound.new("No reserved servers found for names '#{names.join("', '")}'") if servers.empty?
|
||||||
|
servers.sort_by!{|s| names.index(s.chef_node_name)}
|
||||||
|
servers
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def pause_server node_name
|
def pause_server node_name
|
||||||
s = Server.get_server_by_key(node_name, parser.instance_key)
|
s = Server.get_server_by_key(node_name, parser.instance_key)
|
||||||
## Authorization
|
## Authorization
|
||||||
|
|||||||
@ -132,6 +132,53 @@ module Devops
|
|||||||
}
|
}
|
||||||
app.multi_routes "/server/:id", {:headers => [:accept, :content_type]}, hash
|
app.multi_routes "/server/:id", {:headers => [:accept, :content_type]}, hash
|
||||||
|
|
||||||
|
# Run deploy command on reserved server
|
||||||
|
#
|
||||||
|
# * *Request*
|
||||||
|
# - method : POST
|
||||||
|
# - headers :
|
||||||
|
# - Content-Type: application/json
|
||||||
|
# - body :
|
||||||
|
# {
|
||||||
|
# "names": [], -> array of servers names to run chef-client
|
||||||
|
# "tags": [], -> array of tags to apply on each server before running chef-client
|
||||||
|
# "build_number": "", -> string, build number to deploy
|
||||||
|
# "run_list": [], -> array of strings to set run_list for chef-client
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# * *Returns* : text stream
|
||||||
|
app.post_with_headers "/server/:node_name/deploy", :headers => [:content_type, :accept] do |node_name|
|
||||||
|
check_privileges("server", "x")
|
||||||
|
|
||||||
|
if request["HTTP_X_STREAM"]
|
||||||
|
stream() do |out|
|
||||||
|
status = []
|
||||||
|
begin
|
||||||
|
status = Devops::API2_0::Handler::Server.new(request).deploy_stream(node_name, out)
|
||||||
|
out << create_status(status)
|
||||||
|
rescue DeployInfoError => e
|
||||||
|
msg = "Can not get deploy info: " + e.message
|
||||||
|
DevopsLogger.logger.error "msg:\n#{e.backtrace.join('\n')}"
|
||||||
|
out.puts msg
|
||||||
|
rescue IOError => e
|
||||||
|
logger.error e.message
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end # stream
|
||||||
|
else
|
||||||
|
files = begin
|
||||||
|
Devops::API2_0::Handler::Server.new(request).deploy(node_name)
|
||||||
|
rescue DeployInfoError => e
|
||||||
|
msg = "Can not get deploy info: " + e.message
|
||||||
|
DevopsLogger.logger.error "#{msg}:\n#{e.backtrace.join("\n")}"
|
||||||
|
out << "\nError - "
|
||||||
|
out.puts msg
|
||||||
|
end
|
||||||
|
sleep 1
|
||||||
|
json files
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Create devops server
|
# Create devops server
|
||||||
#
|
#
|
||||||
# * *Request*
|
# * *Request*
|
||||||
|
|||||||
@ -60,9 +60,7 @@ class Worker
|
|||||||
call_sync(provider, &block)
|
call_sync(provider, &block)
|
||||||
end
|
end
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
puts e.message
|
DevopsLogger.logger.error "#{e.message}:\n#{e.backtrace.join("\n")}"
|
||||||
puts e.backtrace.join("\n")
|
|
||||||
DevopsLogger.logger.error e.message
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user