#!/usr/bin/env python

import os
from collections import defaultdict

# root permission checking
if  os.getuid() != 0:
    print "you need root permission to run"
    exit()

#getdic from rabbitmqctl
def _parse_output(fd):
    dic = defaultdict(list)

    for line in fd.readlines():
        if line.startswith('Listing') or \
           line.startswith('...done.'):
            continue

        parts = line.strip().split()

        if len(parts) > 1:
            dic[parts[0]].append(parts[1:])

    return dic


with  os.popen('rabbitmqctl list_consumers -p boss') as consumer_file:
    consumer_info = _parse_output(consumer_file)

with  os.popen('rabbitmqctl list_connections pid peer_address state') as connection_file:
    connection_info = _parse_output(connection_file)

with  os.popen('rabbitmqctl list_channels pid connection') as channel_file:
    channel_info = _parse_output(channel_file)


print "ip\t\tstate\tparticipant\n"
for consumer_name in consumer_info:
    for consumer_each in consumer_info[consumer_name]:
        for connection in channel_info[consumer_each[0]]:
            for connection_each in connection:
                for print_part in connection_info[connection_each]:
                    print '\t'.join(print_part + [consumer_name])

