def node_status
status_mutex = Mutex.new
h = ::HighLine.new
node_status = [h.color("Host", :bold), h.color("PID", :bold), h.color("GUID", :bold), h.color("Vnodes", :bold)]
print("Collecting status info from the cluster...")
AMQP.start(Expander.config.amqp_config) do
node = Expander::Node.local_node
node.exclusive_control_queue.subscribe do |header, message|
status = Yajl::Parser.parse(message)
status_mutex.synchronize do
node_status << status["hostname_f"]
node_status << status["pid"].to_s
node_status << status["guid"]
node_status << "#{status["vnodes"].min}-#{status["vnodes"].max}"
end
end
node.broadcast_message(Yajl::Encoder.encode(:action => :status, :rsvp => node.exclusive_control_queue_name))
EM.add_timer(2) { AMQP.stop;EM.stop }
end
puts "done"
puts
puts h.list(node_status, :columns_across, 4)
puts
end