示例#1
0
    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)
示例#2
0
    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))
示例#3
0
    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
示例#4
0
    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)