8 def find_contact(hostname):
10 result = moira.query('get_host', hostname.upper(), '*', '*', '*')
11 assert len(result) == 1
12 return result[0]['contact']
13 except moira.MoiraException, e:
14 print >>sys.stderr, "Got %s while processing %s" % (e, hostname, )
17 def find_contacts(hostnames):
18 contact_map = collections.defaultdict(list)
19 for hostname in hostnames:
20 contact = find_contact(hostname)
21 contact_map[contact].append(hostname)
24 def print_contacts(contact_map):
25 sorted_map = sorted(contact_map.items(), key=lambda x: len(x[1]))
26 for contact, hosts in sorted_map:
27 print "%s\t%d\t%s" % (contact, len(hosts), hosts)
32 if __name__ == '__main__':
34 for line in sys.stdin:
35 hostnames.append(line.strip())
37 contact_map = find_contacts(hostnames)
38 print_contacts(contact_map)