コード例 #1
0
ファイル: stack_manager.py プロジェクト: Artemkaaas/plenum
    def connectNewRemote(self, txn, remoteName, nodeOrClientObj,
                         addRemote=True):
        # TODO: Need to handle abbreviated verkey
        verkey = cryptonymToHex(txn[TARGET_NYM])

        nodeHa = (txn[DATA][NODE_IP], txn[DATA][NODE_PORT])
        cliHa = (txn[DATA][CLIENT_IP], txn[DATA][CLIENT_PORT])

        if addRemote:
            try:
                # Override any keys found, reason being the scenario where
                # before this node comes to know about the other node, the other
                # node tries to connect to it.
                initRemoteKeys(self.name, remoteName, self.basedirpath,
                                   verkey, override=True)
            except Exception as ex:
                logger.error("Exception while initializing keep for remote {}".
                             format(ex))

        if self.isNode:
            nodeOrClientObj.nodeReg[remoteName] = HA(*nodeHa)
            nodeOrClientObj.cliNodeReg[remoteName + CLIENT_STACK_SUFFIX] = HA(*cliHa)
            logger.debug("{} adding new node {} with HA {}".format(self.name,
                                                                   remoteName,
                                                                   nodeHa))
        else:
            nodeOrClientObj.nodeReg[remoteName] = HA(*cliHa)
            logger.debug("{} adding new node {} with HA {}".format(self.name,
                                                                   remoteName,
                                                                   cliHa))
        nodeOrClientObj.nodestack.maintainConnections(force=True)
コード例 #2
0
    def connectNewRemote(self, txn_data, remoteName, nodeOrClientObj,
                         addRemote=True):
        # TODO: Need to handle abbreviated verkey
        verkey = cryptonymToHex(txn_data[TARGET_NYM])

        nodeHa = (txn_data[DATA][NODE_IP], txn_data[DATA][NODE_PORT])
        cliHa = (txn_data[DATA][CLIENT_IP], txn_data[DATA][CLIENT_PORT])

        if addRemote:
            try:
                # Override any keys found, reason being the scenario where
                # before this node comes to know about the other node, the other
                # node tries to connect to it.
                initRemoteKeys(self.name, remoteName, self.keys_dir, verkey, override=True)
            except Exception as ex:
                logger.error("Exception while initializing keep for remote {}".
                             format(ex))

        if self.isNode:
            nodeOrClientObj.nodeReg[remoteName] = HA(*nodeHa)
            nodeOrClientObj.cliNodeReg[remoteName +
                                       CLIENT_STACK_SUFFIX] = HA(*cliHa)
            logger.display("{} adding new node {} with HA {}".format(self.name, remoteName, nodeHa))
        else:
            nodeOrClientObj.nodeReg[remoteName] = HA(*cliHa)
            logger.display("{} adding new node {} with HA {}".format(self.name, remoteName, cliHa))
        nodeOrClientObj.nodestack.maintainConnections(force=True)
コード例 #3
0
def genTestClient(nodes=None,
                  nodeReg=None,
                  tmpdir=None,
                  testClientClass=TestClient,
                  identifier: Identifier = None,
                  verkey: str = None,
                  bootstrapKeys=True,
                  ha=None,
                  usePoolLedger=False,
                  name=None,
                  sighex=None) -> (TestClient, Wallet):
    if not usePoolLedger:
        nReg = nodeReg
        if nodeReg:
            assert isinstance(nodeReg, dict)
        elif hasattr(nodes, "nodeReg"):
            nReg = nodes.nodeReg.extractCliNodeReg()
        else:
            error("need access to nodeReg")
        for k, v in nReg.items():
            assert type(k) == str
            assert (type(v) == HA or type(v[0]) == HA)
    else:
        logger.debug("TestClient using pool ledger")
        nReg = None

    ha = genHa() if not ha else ha
    name = name or "testClient{}".format(ha.port)

    tc = testClientClass(name,
                         nodeReg=nReg,
                         ha=ha,
                         basedirpath=tmpdir,
                         sighex=sighex)

    if not usePoolLedger and nodes:
        for node in nodes:
            stack = node.clientstack
            # TODO: Remove this if condition once raet is removed
            if isinstance(stack, ZStack):
                initRemoteKeys(tc.name,
                               stack.name,
                               tmpdir,
                               stack.verhex,
                               override=True)

    w = None  # type: Wallet
    if bootstrapKeys and nodes:
        if not identifier or not verkey:
            # no identifier or verkey were provided, so creating a wallet
            w = Wallet("test")
            w.addIdentifier()
            identifier = w.defaultId
            verkey = w.getVerkey()
        bootstrapClientKeys(identifier, verkey, nodes)
    return tc, w
コード例 #4
0
ファイル: test_client.py プロジェクト: lovesh/indy-plenum
    async def go(ctx):
        nodestacksVersion = {k: v.ha for k, v in ctx.nodeset.nodeReg.items()}
        client1, _ = genTestClient(nodeReg=nodestacksVersion,
                                   tmpdir=ctx.tmpdir)
        for node in ctx.nodeset:
            stack = node.nodestack
            args = (client1.name, stack.name, ctx.tmpdir, stack.verhex, True)
            initRemoteKeys(*args)

        ctx.looper.add(client1)
        with pytest.raises(NotConnectedToAny):
            await client1.ensureConnectedToNodes()
コード例 #5
0
 def addRemoteKeysFromLedger(self, keys):
     for remoteName, key in keys.items():
         # If its a client then remoteName should be suffixed with
         # CLIENT_STACK_SUFFIX
         if not self.isNode:
             remoteName += CLIENT_STACK_SUFFIX
         try:
             # Override any keys found, reason being the scenario where
             # before this node comes to know about the other node, the other
             # node tries to connect to it.
             # Do it only for Nodes, not for Clients!
             # if self.isNode:
             initRemoteKeys(self.name, remoteName, self.key_path, key, override=True)
         except Exception as ex:
             logger.error("Exception while initializing keep for remote {}".
                          format(ex))
コード例 #6
0
 def addRemoteKeysFromLedger(self, keys):
     for remoteName, key in keys.items():
         # If its a client then remoteName should be suffixed with
         # CLIENT_STACK_SUFFIX
         if not self.isNode:
             remoteName += CLIENT_STACK_SUFFIX
         try:
             # Override any keys found, reason being the scenario where
             # before this node comes to know about the other node, the other
             # node tries to connect to it.
             # Do it only for Nodes, not for Clients!
             # if self.isNode:
             initRemoteKeys(self.name, remoteName, self.keys_dir, key,
                            override=True)
         except Exception as ex:
             logger.error("Exception while initializing keep for remote {}".
                          format(ex))
コード例 #7
0
    def stackKeysChanged(self, txn_data, remoteName, nodeOrClientObj):
        logger.debug("{} clearing remote role data in keep of {}".
                     format(nodeOrClientObj.nodestack.name, remoteName))
        logger.display("{} removing remote {}".format(nodeOrClientObj, remoteName))
        # Removing remote so that the nodestack will attempt to connect
        rid = self.removeRemote(nodeOrClientObj.nodestack, remoteName)

        if txn_data[VERKEY][0] == '~':  # abbreviated
            verkey = cryptonymToHex(
                txn_data[TARGET_NYM]) + cryptonymToHex(txn_data[VERKEY][1:])
        else:
            verkey = cryptonymToHex(txn_data[VERKEY])

        # Override any keys found
        initRemoteKeys(self.name, remoteName, self.keys_dir, verkey, override=True)

        # Attempt connection with the new keys
        nodeOrClientObj.nodestack.maintainConnections(force=True)
        return rid
コード例 #8
0
ファイル: stack_manager.py プロジェクト: Artemkaaas/plenum
    def stackKeysChanged(self, txn, remoteName, nodeOrClientObj):
        logger.debug("{} clearing remote role data in keep of {}".
                     format(nodeOrClientObj.nodestack.name, remoteName))
        logger.debug(
            "{} removing remote {}".format(nodeOrClientObj, remoteName))
        # Removing remote so that the nodestack will attempt to connect
        rid = self.removeRemote(nodeOrClientObj.nodestack, remoteName)

        if txn[VERKEY][0] == '~':  # abbreviated
            verkey = cryptonymToHex(txn[TARGET_NYM]) + cryptonymToHex(txn[VERKEY][1:])
        else:
            verkey = cryptonymToHex(txn[VERKEY])

        # Override any keys found
        initRemoteKeys(self.name, remoteName, self.basedirpath,
                               verkey, override=True)

        # Attempt connection with the new keys
        nodeOrClientObj.nodestack.maintainConnections(force=True)
        return rid
コード例 #9
0
    def stackKeysChanged(self, txn, remoteName, nodeOrClientObj):
        logger.debug("{} clearing remote role data in keep of {}".format(
            nodeOrClientObj.nodestack.name, remoteName))
        logger.debug("{} removing remote {}".format(nodeOrClientObj,
                                                    remoteName))
        # Removing remote so that the nodestack will attempt to connect
        rid = self.removeRemote(nodeOrClientObj.nodestack, remoteName)

        verkey = txn[VERKEY]
        try:
            # Override any keys found
            initRemoteKeys(self.name,
                           remoteName,
                           self.basedirpath,
                           verkey,
                           override=True)
        except Exception as ex:
            logger.error(
                "Exception while initializing keep for remote {}".format(ex))

        nodeOrClientObj.nodestack.maintainConnections(force=True)
        return rid
コード例 #10
0
 def initRemoteKeysMock(name, *args, **kwargs):
     if name in [node.name for node in txnPoolNodeSet]:
         raise OSError(TEST_EXCEPTION_MESSAGE)
     else:
         return initRemoteKeys(name, *args, **kwargs)
コード例 #11
0
 def initRemoteKeysMock(name, *args, **kwargs):
     if name in [node.name for node in txnPoolNodeSet]:
         raise OSError(TEST_EXCEPTION_MESSAGE)
     else:
         return initRemoteKeys(name, *args, **kwargs)