code: def parseLedgerForHaAndKeys(ledger, returnActive=True, ledger_size=None):
          
          nodeReg = OrderedDict()
          cliNodeReg = OrderedDict()
          nodeKeys = {}
          activeValidators = set()
          try:
              TxnStackManager._parse_pool_transaction_file(
                  ledger, nodeReg, cliNodeReg, nodeKeys, activeValidators,
                  ledger_size=ledger_size)
          except ValueError:
              errMsg = 'Pool transaction file corrupted. Rebuild pool transactions.'
              logger.exception(errMsg)
              exit(errMsg)
  
          if returnActive:
              allNodes = tuple(nodeReg.keys())
              for nodeName in allNodes:
                  if nodeName not in activeValidators:
                      nodeReg.pop(nodeName, None)
                      cliNodeReg.pop(nodeName + CLIENT_STACK_SUFFIX, None)
                      nodeKeys.pop(nodeName, None)
  
              return nodeReg, cliNodeReg, nodeKeys
          else:
              return nodeReg, cliNodeReg, nodeKeys, activeValidators
docs: Returns validator ip, ports and keys
          :param ledger:
          :param returnActive: If returnActive is True, return only those
          validators which are not out of service
          :return: