def nodeServicesChanged(self, txn): nodeNym = txn[TARGET_NYM] _, nodeInfo = self.getNodeInfoFromLedger(nodeNym) nodeName = nodeInfo[DATA][ALIAS] oldServices = set(nodeInfo[DATA].get(SERVICES, [])) newServices = set(txn[DATA].get(SERVICES, [])) if oldServices == newServices: logger.debug( "Node {} not changing {} since it is same as existing".format( nodeNym, SERVICES)) return else: if self.name != nodeName: if VALIDATOR in newServices.difference(oldServices): # If validator service is enabled self.updateNodeTxns(nodeInfo, txn) self.connectNewRemote(nodeInfo, nodeName, self.node) self.node.nodeJoined(txn) if VALIDATOR in oldServices.difference(newServices): # If validator service is disabled del self.node.nodeReg[nodeName] del self.node.cliNodeReg[nodeName + CLIENT_STACK_SUFFIX] try: rid = TxnStackManager.removeRemote( self.node.nodestack, nodeName) if rid: self.node.nodestack.outBoxes.pop(rid, None) except RemoteNotFound: logger.debug( '{} did not find remote {} to remove'.format( self, nodeName)) self.node.nodeLeft(txn) self.node_about_to_be_disconnected(nodeName)
def nodeServicesChanged(self, txn_data): nodeNym = txn_data[TARGET_NYM] _, nodeInfo = self.getNodeInfoFromLedger(nodeNym) remoteName = nodeInfo[DATA][ALIAS] + CLIENT_STACK_SUFFIX oldServices = set(nodeInfo[DATA].get(SERVICES, [])) newServices = set(txn_data[DATA].get(SERVICES, [])) if oldServices == newServices: logger.debug( "Client {} not changing {} since it is same as existing" .format(nodeNym, SERVICES)) return else: if VALIDATOR in newServices.difference(oldServices): # If validator service is enabled self.updateNodeTxns(nodeInfo, txn_data) self.connectNewRemote(nodeInfo, remoteName, self) if VALIDATOR in oldServices.difference(newServices): # If validator service is disabled del self.nodeReg[remoteName] try: rid = TxnStackManager.removeRemote( self.nodestack, remoteName) if rid: self.nodestack.outBoxes.pop(rid, None) except RemoteNotFound: logger.info('{} did not find remote {} to remove'.format(self, remoteName))
def nodeServicesChanged(self, txn_data) -> bool: nodeNym = txn_data[TARGET_NYM] nodeName = self.getNodeName(nodeNym) oldServices = set(self._ordered_node_services.get(nodeNym, [])) newServices = set(txn_data[DATA].get(SERVICES, [])) if oldServices == newServices: logger.info( "Node {} not changing {} since it is same as existing".format( nodeNym, SERVICES)) return False node_count_changed = False if VALIDATOR in newServices.difference(oldServices): node_count_changed = True # If validator service is enabled node_info = self.write_manager.get_node_data(nodeNym) self.node.nodeReg[nodeName] = HA(node_info[NODE_IP], node_info[NODE_PORT]) self.node.cliNodeReg[nodeName + CLIENT_STACK_SUFFIX] = HA( node_info[CLIENT_IP], node_info[CLIENT_PORT]) self.updateNodeTxns({ DATA: node_info, }, txn_data) if self.name != nodeName: self.connectNewRemote({ DATA: node_info, TARGET_NYM: nodeNym }, nodeName, self.node) else: logger.debug("{} adding itself to node registry".format( self.name)) if VALIDATOR in oldServices.difference(newServices): node_count_changed = True # If validator service is disabled del self.node.nodeReg[nodeName] del self.node.cliNodeReg[nodeName + CLIENT_STACK_SUFFIX] if self.name != nodeName: try: rid = TxnStackManager.removeRemote(self.node.nodestack, nodeName) if rid: self.node.nodestack.outBoxes.pop(rid, None) except RemoteNotFound: logger.info('{} did not find remote {} to remove'.format( self, nodeName)) self.node_about_to_be_disconnected(nodeName) return node_count_changed
def nodeServicesChanged(self, txn_data): nodeNym = txn_data[TARGET_NYM] nodeName = self.getNodeName(nodeNym) oldServices = set(self._ordered_node_services.get(nodeNym, [])) newServices = set(txn_data[DATA].get(SERVICES, [])) if oldServices == newServices: logger.info("Node {} not changing {} since it is same as existing".format(nodeNym, SERVICES)) return else: if VALIDATOR in newServices.difference(oldServices): # If validator service is enabled node_info = self.reqHandler.getNodeData(nodeNym) self.node.nodeReg[nodeName] = HA(node_info[NODE_IP], node_info[NODE_PORT]) self.node.cliNodeReg[nodeName + CLIENT_STACK_SUFFIX] = HA(node_info[CLIENT_IP], node_info[CLIENT_PORT]) self.updateNodeTxns({DATA: node_info, }, txn_data) self.node.nodeJoined(txn_data) if self.name != nodeName: self.connectNewRemote({DATA: node_info, TARGET_NYM: nodeNym}, nodeName, self.node) if VALIDATOR in oldServices.difference(newServices): # If validator service is disabled del self.node.nodeReg[nodeName] del self.node.cliNodeReg[nodeName + CLIENT_STACK_SUFFIX] self.node.nodeLeft(txn_data) if self.name != nodeName: try: rid = TxnStackManager.removeRemote( self.node.nodestack, nodeName) if rid: self.node.nodestack.outBoxes.pop(rid, None) except RemoteNotFound: logger.info('{} did not find remote {} to remove'.format(self, nodeName)) self.node_about_to_be_disconnected(nodeName)