lib/routes.rb in gaptool-server-0.6.6 vs lib/routes.rb in gaptool-server-0.7.0

- old
+ new

@@ -65,11 +65,11 @@ ) end end # Add host tag - data.merge(instance.reject { |k, v| [:id, :instance].include?(k) }) + data.merge!(Hash[instance.reject { |k, v| [:id, :instance].include?(k) }.map {|k, v| [k.to_s, v]}]) Gaptool::Data::addserver(instance[:id], data, secret) json({instance: instance[:id], ami: image_id, role: data['role'], hostname: instance[:hostname], @@ -134,28 +134,41 @@ json: jdata } end get '/hosts' do - servers = Gaptool::Data::servers.map do |inst| + filter = !!params['hidden'] ? Proc.new {|s| !s['registered']} : Proc.new { |s| !s['registered'] && !s['hidden'] == true} + json(Gaptool::Data::servers.map do |inst| Gaptool::Data::get_server_data inst - end.select{ |s| !s['registered']} - json servers + end.select(&filter)) end get '/apps' do - out = {} - Gaptool::Data.apps.each do |app| - out["app:#{app}"] = Gaptool::Data::get_app_data(app) + json(Hash[Gaptool::Data.apps.map {|a| ["app:#{a}", Gaptool::Data::get_app_data(a)]}]) + end + + get '/app/:app/:environment/hosts' do + app_data = Gaptool::Data::get_app_data(params[:app]) + unless app_data + status 404 + error_response "app '#{params[:apps]}' not found" end - json out + + role = app_data[params[:environment]] + list = Gaptool::Data::servers_in_role_env role, params[:environment] + filter = !!params['hidden'] ? Proc.new {|s| false } : Proc.new { |s| s['hidden']} + json(list.map do |inst| + data = Gaptool::Data::get_server_data(inst) + Gaptool::Data::stringify_apps(data) + end.delete_if(&filter)) end get '/hosts/:role' do + filter = !!params['hidden'] ? Proc.new {|s| !s['registered']} : Proc.new { |s| !s['registered'] && !s['hidden'] == true} servers = Gaptool::Data::servers_in_role(params[:role]).map do |inst| - Gaptool::Data::get_server_data inst - end.select{ |s| !s['registered'] } + Gaptool::Data::get_server_data(inst) + end.select(&filter) json servers end get '/instance/:id' do rs = Gaptool::Data::get_server_data(params[:id]) @@ -165,18 +178,40 @@ else json Gaptool::Data::stringify_apps(rs) end end + patch '/instance/:id' do + rs = Gaptool::Data::get_server_data(params[:id]) + if rs.nil? + status 404 + error_response "instance with id '#{params[:id]}' not found" + else + data = JSON.parse(request.body.read) + if !data['hidden'].nil? + hidden = !!data['hidden'] + rs["hidden"] = hidden if hidden == true + rs.delete("hidden") if hidden == false + end + if !data['terminable'].nil? + rs["terminable"] = !!data['terminable'] + end + Gaptool::Data::save_server_data params[:id], rs + json Gaptool::Data::stringify_apps(rs) + end + end + get '/hosts/:role/:environment' do if params[:role] == 'ALL' list = Gaptool::Data::servers_in_env params[:environment] else list = Gaptool::Data::servers_in_role_env params[:role], params[:environment] end + filter = !!params['hidden'] ? Proc.new {|s| false } : Proc.new { |s| s['hidden']} servers = list.map do |inst| - Gaptool::Data::stringify_apps(Gaptool::Data::get_server_data(inst)) - end + data = Gaptool::Data::get_server_data(inst) + Gaptool::Data::stringify_apps(data) + end.delete_if(&filter) json servers end get '/host/:role/:environment/:instance' do