Merge branch '#853' into features
This commit is contained in:
commit
c0d1afb148
@ -78,6 +78,41 @@ module Devops
|
||||
[uri]
|
||||
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 pause_server node_name
|
||||
s = Server.get_server_by_key(node_name, parser.instance_key)
|
||||
## Authorization
|
||||
|
||||
@ -132,6 +132,53 @@ module Devops
|
||||
}
|
||||
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
|
||||
#
|
||||
# * *Request*
|
||||
|
||||
@ -2,7 +2,7 @@ require 'sinatra/base'
|
||||
|
||||
class DevopsVersion < Sinatra::Base
|
||||
|
||||
VERSION = "2.3.0"
|
||||
VERSION = "2.3.2"
|
||||
|
||||
get "/" do
|
||||
VERSION
|
||||
|
||||
@ -64,9 +64,7 @@ class Worker
|
||||
call_sync(provider, &block)
|
||||
end
|
||||
rescue StandardError => e
|
||||
puts e.message
|
||||
puts e.backtrace.join("\n")
|
||||
DevopsLogger.logger.error e.message
|
||||
DevopsLogger.logger.error "#{e.message}:\n#{e.backtrace.join("\n")}"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user