def parse_nodetool_status()

in cstar/nodetoolparser/status.py [0:0]


def parse_nodetool_status(text, cluster_name, reverse_dns_preheat, resolve_hostnames=False):
    topology = []
    datacenter_sections = text.split("Datacenter: ")[1:]
    datacenter_names_and_nodes = [_parse_datacenter_name_and_nodes(section) for section in datacenter_sections]
    if resolve_hostnames:
        reverse_dns_preheat([node[1] for (_, nodes) in datacenter_names_and_nodes for node in nodes])
    for (datacenter_name, nodes) in datacenter_names_and_nodes:
        for node in nodes:
            fqdn = node[1]
            if resolve_hostnames:
                try:
                    fqdn=socket.gethostbyaddr(node[1])[0]
                except socket.herror:
                    pass
            topology.append(Host(fqdn=fqdn, ip=node[1], dc=datacenter_name, cluster=cluster_name,
                                 is_up=(node[0] == "UN"), rack=node[7], host_id=node[6]))

    return Topology(topology)