211 lines
7.4 KiB
Ruby
211 lines
7.4 KiB
Ruby
module Devops
|
|
module API3
|
|
module Routes
|
|
module ServerRoutes
|
|
|
|
def self.registered(app)
|
|
|
|
app.define_policy :read_servers, "Get servers"
|
|
app.define_policy :create_servers, "Create servers"
|
|
app.define_policy :delete_servers, "Delete servers"
|
|
app.define_policy :deploy_servers, "Run deploy command on reserved server"
|
|
app.define_policy :pause_servers, "Pause and unpouse servers"
|
|
app.define_policy :reserve_servers, "Reserve and unreserve servers"
|
|
|
|
app.get_with_headers "/servers" do
|
|
check_policy(:read_servers)
|
|
json Devops::API3::Handler::Server.new(request).servers.map(&:to_hash)
|
|
end
|
|
|
|
=begin
|
|
app.get_with_headers "/servers/:provider" do |provider|
|
|
check_policy(:read_servers)
|
|
check_provider(provider)
|
|
json Devops::API3::Handler::Server.new(request).provider_servers(provider)
|
|
end
|
|
=end
|
|
|
|
app.get_with_headers "/servers/provider/:provider/:account" do |provider, account|
|
|
check_policy(:read_servers)
|
|
check_provider(provider)
|
|
check_provider_account(provider, account)
|
|
json Devops::API3::Handler::Server.new(request).provider_servers_with_account(provider, account)
|
|
end
|
|
|
|
app.get_with_headers "/server/id/:name" do |name|
|
|
check_policy(:read_servers)
|
|
json({id: Devops::API3::Handler::Server.new(request).server_id_by_name(name)})
|
|
end
|
|
|
|
hash = {}
|
|
hash["GET"] = lambda {|id|
|
|
check_policy(:read_servers)
|
|
json Devops::API3::Handler::Server.new(request).server(id).to_hash
|
|
}
|
|
|
|
hash["DELETE"] = lambda {|id|
|
|
check_policy(:delete_servers)
|
|
if request["HTTP_X_STREAM"]
|
|
stream() do |out|
|
|
begin
|
|
status = Devops::API3::Handler::Server.new(request).delete_stream([id], out)
|
|
out << create_status(status)
|
|
rescue IOError => e
|
|
logger.error e.message
|
|
break
|
|
end
|
|
end # stream
|
|
else
|
|
files = Devops::API3::Handler::Server.new(request).delete([id])
|
|
json files
|
|
end
|
|
}
|
|
app.multi_routes "/server/:id", hash
|
|
|
|
app.post_with_headers "/servers/delete" do
|
|
check_policy(:delete_servers)
|
|
if request["HTTP_X_STREAM"]
|
|
stream() do |out|
|
|
begin
|
|
status = Devops::API3::Handler::Server.new(request).delete_stream(parser.delete_list, out)
|
|
out << create_status(status)
|
|
rescue IOError => e
|
|
logger.error e.message
|
|
break
|
|
end
|
|
end # stream
|
|
else
|
|
files = Devops::API3::Handler::Server.new(request).delete(parser.delete_list)
|
|
json files
|
|
end
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/deploy" do |id|
|
|
check_policy(:deploy_servers)
|
|
|
|
if request["HTTP_X_STREAM"]
|
|
stream() do |out|
|
|
status = []
|
|
begin
|
|
status = Devops::API3::Handler::Server.new(request).deploy_stream(id, out)
|
|
out << create_status(status)
|
|
rescue IOError => e
|
|
logger.error e.message
|
|
break
|
|
end
|
|
end # stream
|
|
else
|
|
json [ Devops::API3::Handler::Server.new(request).deploy(id) ]
|
|
end
|
|
end
|
|
|
|
app.post_with_headers "/server" do
|
|
check_policy(:create_servers)
|
|
handler = Devops::API3::Handler::Server.new(request)
|
|
if request["X-Stream"] or request["HTTP_X_STREAM"]
|
|
stream() do |out|
|
|
begin
|
|
status = handler.create_server_stream out
|
|
out << create_status(status)
|
|
rescue IOError => e
|
|
logger.error e.message
|
|
end
|
|
end
|
|
else
|
|
json handler.create_server
|
|
end
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/pause" do |id|
|
|
check_policy(:pause_servers)
|
|
info = Devops::API3::Handler::Server.new(request).pause_server(id)
|
|
create_response(info, {id: id})
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/unpause" do |id|
|
|
check_policy(:pause_servers)
|
|
info = Devops::API3::Handler::Server.new(request).unpause_server(id)
|
|
create_response(info, {id: id})
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/reserve" do |id|
|
|
check_policy(:reserve_servers)
|
|
Devops::API3::Handler::Server.new(request).reserve_server(id)
|
|
create_response("Server '#{id}' has been reserved", {id: id})
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/unreserve" do |id|
|
|
check_policy(:reserve_servers)
|
|
Devops::API3::Handler::Server.new(request).unreserve_server(id)
|
|
create_response("Server '#{id}' has been unreserved", {id: id})
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/bootstrap" do |id|
|
|
check_policy(:deploy_servers)
|
|
|
|
handler = Devops::API3::Handler::Server.new(request)
|
|
if request["X-Stream"]
|
|
stream() do |out|
|
|
begin
|
|
status = handler.bootstrap_server_stream id, out
|
|
out << create_status(status)
|
|
rescue IOError => e
|
|
logger.error e.message
|
|
end
|
|
end
|
|
else
|
|
jid = handler.bootstrap_server(id)
|
|
json [jid]
|
|
end
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/unbootstrap" do |id|
|
|
check_policy(:deploy_servers)
|
|
handler = Devops::API3::Handler::Server.new(request)
|
|
if request["X-Stream"]
|
|
stream() do |out|
|
|
begin
|
|
status = handler.unbootstrap_server_stream id, out
|
|
out << create_status(status)
|
|
rescue IOError => e
|
|
logger.error e.message
|
|
end
|
|
end
|
|
else
|
|
jid = handler.unbootstrap_server(id)
|
|
json [jid]
|
|
end
|
|
end
|
|
|
|
app.post_with_headers "/server/add" do
|
|
check_policy(:create_servers)
|
|
server = Devops::API3::Handler::Server.new(request).add_server()
|
|
create_response("Server '#{server.id}' has been added", {id: server.id})
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/tags/add" do |id|
|
|
check_policy(:create_servers)
|
|
Devops::API3::Handler::Server.new(request).set_tags(id)
|
|
create_response("Added", {id: id})
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/tags/delete" do |id|
|
|
check_policy(:create_servers)
|
|
Devops::API3::Handler::Server.new(request).unset_tags(id)
|
|
create_response("Deleted", {id: id})
|
|
end
|
|
|
|
app.post_with_headers "/server/:id/run_list" do |id|
|
|
check_policy(:create_servers)
|
|
Devops::API3::Handler::Server.new(request).set_run_list(id)
|
|
create_response("Run list has been changed", {id: id})
|
|
end
|
|
|
|
puts "Server routes initialized"
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|