code: async def open(self) -> 'NodePool':
          
  
          LOGGER.debug('NodePool.open >>>')
  
          try:
              await pool.set_protocol_version(2)  # 1 for indy-node 1.3, 2 for indy-node 1.4
              await pool.create_pool_ledger_config(self.name, json.dumps({'genesis_txn': str(self.genesis_txn_path)}))
          except IndyError as x_indy:
              if x_indy.error_code == ErrorCode.PoolLedgerConfigAlreadyExistsError:
                  LOGGER.info('Pool ledger config for %s already exists', self.name)
              else:
                  LOGGER.debug('NodePool.open: <!< indy error code %s', x_indy.error_code)
                  raise x_indy
  
          self._handle = await pool.open_pool_ledger(self.name, json.dumps(self.cfg))
  
          LOGGER.debug('NodePool.open <<<')
          return self
docs: Explicit entry. Opens pool as configured, for later closure via close().
          For use when keeping pool open across multiple calls.
  
          Raise any IndyError causing failure to create ledger configuration.
  
          :return: current object