def log_level
@argv.shift
level = @argv.first
acceptable_levels = %w{debug info warn error fatal}
unless acceptable_levels.include?(level)
puts "Log level must be one of #{acceptable_levels.join(', ')}"
exit 1
end
h = HighLine.new
response_mutex = Mutex.new
responses = [h.color("Host", :bold), h.color("PID", :bold), h.color("GUID", :bold), h.color("Log Level", :bold)]
AMQP.start(Expander.config.amqp_config) do
node = Expander::Node.local_node
node.exclusive_control_queue.subscribe do |header, message|
reply = Yajl::Parser.parse(message)
n = reply['node']
response_mutex.synchronize do
responses << n["hostname_f"] << n["pid"].to_s << n["guid"] << reply["level"]
end
end
node.broadcast_message(Yajl::Encoder.encode({:action => :set_log_level, :level => level, :rsvp => node.exclusive_control_queue_name}))
EM.add_timer(2) { AMQP.stop; EM.stop }
end
puts h.list(responses, :columns_across, 4)
end