code: def parse_routing_info(cls, records):
          
          if len(records) != 1:
              raise RoutingProtocolError("Expected exactly one record")
          record = records[0]
          routers = []
          readers = []
          writers = []
          try:
              servers = record["servers"]
              for server in servers:
                  role = server["role"]
                  addresses = []
                  for address in server["addresses"]:
                      addresses.append(SocketAddress.parse(address, DEFAULT_PORT))
                  if role == "ROUTE":
                      routers.extend(addresses)
                  elif role == "READ":
                      readers.extend(addresses)
                  elif role == "WRITE":
                      writers.extend(addresses)
              ttl = record["ttl"]
          except (KeyError, TypeError):
              raise RoutingProtocolError("Cannot parse routing info")
          else:
              return cls(routers, readers, writers, ttl)
docs: Parse the records returned from a getServers call and
          return a new RoutingTable instance.