Merge branch 'features' of /home/git/repositories/cloudtechlab/devops-service into qa

This commit is contained in:
Tim Lianov 2015-10-27 16:26:04 +04:00
commit b7dde52459
3 changed files with 40 additions and 4 deletions

View File

@ -186,6 +186,13 @@ module Devops
return s, rl || d.run_list, t
end
def unbootstrap_server id
s = get_server_by_key(id, parser.instance_key)
### Authorization
Devops::Db.connector.check_project_auth s.project, s.deploy_env, parser.current_user
Devops::Executor::ServerExecutor.new(s, "").unbootstrap
end
def add_server
body = parser.add_server
project = body["project"]

View File

@ -279,6 +279,25 @@ module Devops
end
end
# Unbootstrap devops server
#
# * *Request*
# - method : POST
# - headers :
# - Accept: application/json
# - Content-Type: application/json
# - body :
# {
# "key": "instance", -> search server by instance_id rather then chef_node_name
# }
#
# * *Returns* : 200
app.post_with_headers "/server/:id/unbootstrap", :headers => [:accept, :content_type] do |id|
check_privileges("server", "w")
info = Devops::API2_0::Handler::Server.new(request).unbootstrap_server(id)
create_response("Unbootstrap", info)
end
# Add external server to devops
#
# * *Request*

View File

@ -281,17 +281,27 @@ module Devops
k = Devops::Db.connector.key(@server.key)
cert_path = k.path
i = 0
res = delete_from_chef_server(@server.chef_node_name)
begin
r = `ssh -i #{cert_path} -q #{@server.remote_user}@#{@server.private_ip} rm -Rf /etc/chef`
new_name = "/etc/chef.backup_#{Time.now.strftime("%d-%m-%Y_%H.%M.%S")}"
# r = `ssh -i #{cert_path} -q #{@server.remote_user}@#{@server.private_ip} rm -Rf /etc/chef`
cmd = "ssh -i #{cert_path} -q #{@server.remote_user}@#{@server.private_ip} \"/bin/sh -c 'if [[ -d /etc/chef ]]; then mv /etc/chef #{new_name}; else echo not found; fi'\""
DevopsLogger.logger.info("Trying to run command '#{cmd}'")
r = `#{cmd}`.strip
if r == 'not found'
res[:server] = "Directory '/etc/chef' does not exists"
else
raise(r) unless $?.success?
res[:server] = "'/etc/chef' renamed to '#{new_name}'"
end
rescue => e
DevopsLogger.logger.error "Unbootstrap error: " + e.message
i += 1
sleep(1)
retry unless i == 5
return e.message
return {error: e.message}
end
nil
res
end
def deploy_server_with_tags tags, deploy_info