lib/nutcracker/web/app.rb in nutcracker-web-0.0.19 vs lib/nutcracker/web/app.rb in nutcracker-web-0.0.20

- old
+ new

@@ -22,25 +22,30 @@ get '/' do haml :index end - get '/status' do + get '/status.json' do + content_type :json # return array of maps each map is {instance_ip => [unresposive_node_ports],instance_ip => [unresposive_node_ports]} # exaple: [{"127.0.0.1"=>["6370", "6371", "6372", "6373"]}, {"192.168.1.114"=>["6370"]}] - unresponsive_ndoes = @nutcracker. + # return status 500 if there are unresposive_node in the list, if empty return 200 + + @nutcracker. config. values. - map {|x| x["servers"] + [x["listen"]]}. + map { |x| x["servers"] + [x["listen"]] }. flatten. - map {|x| x.split(":")}. - map {|host, port| Thread.new {TCPSocket.new(host,port).close.nil? rescue {:host=>host,:port=>port} } }. + map { |x| x.split(":") }. + map { |host, port| Thread.new { { host: host, port: port, ok: (TCPSocket.new(host,port).close.nil? rescue false) } } }. map(&:value). + flatten. + reject { |node_health| node_health[:ok]}. #cleare all healthy nodes from the nodes array + tap { |unhealthy_nodes| status(500) unless unhealthy_nodes.empty? }. group_by{|k| k[:host]}. map {|k,v| [k=>v.map { |v| v[:port] }] }. - flatten - #if there are unresposive_node in the list return status 401, if empty return 200 - status = unresponsive_ndoes.empty?.tap {|x| status(x ? 200 : 401)} + flatten. + to_json end get '/overview.json' do content_type :json overview.to_json