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)
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)
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
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()
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))
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))
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
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
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
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)
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)