Ejemplo n.º 1
0
    def get_next_leader_stub_manager(self, group_id=None):
        """다음 리더 peer, stub manager 을 식별한다.

        :param group_id:
        :return: peer, stub manager
        """

        # TODO 피어 재시작 후의 접속하는 피어의 connected 상태 변경 확인할 것
        # connected peer 만 순회하도록 수정할 것, 현재는 확인 되지 않았으므로 전체 순회로 구현함
        # max_retry = self.get_connected_peer_count(group_id)

        if group_id is None:
            group_id = conf.ALL_GROUP_ID

        max_retry = self.get_peer_count(None)
        try_count = 0

        next_leader_peer = self.__get_next_peer(self.get_leader_peer(group_id), group_id)

        while try_count < max_retry:
            stub_manager = StubManager(next_leader_peer.target, loopchain_pb2_grpc.PeerServiceStub)
            try:
                try_count += 1
                response = stub_manager.call("GetStatus", loopchain_pb2.CommonRequest(request=""))
                logging.debug("Peer Status: " + str(response))
                return next_leader_peer, stub_manager
            except Exception as e:
                logging.debug("try another stub..." + str(e))

            next_leader_peer = self.__get_next_peer(next_leader_peer, group_id)

        logging.warning("fail found next leader stub")
        return None, None
Ejemplo n.º 2
0
    def get_next_leader_stub_manager(self, group_id=None):
        """다음 리더 peer, stub manager 을 식별한다.

        :param group_id:
        :return: peer, stub manager
        """
        util.logger.spam(f"peer_manager:get_next_leader_stub_manager")

        if group_id is None:
            group_id = conf.ALL_GROUP_ID

        max_retry = self.get_peer_count(None)
        try_count = 0

        next_leader_peer = self.__get_next_peer(self.get_leader_peer(group_id),
                                                group_id)

        while try_count < max_retry:
            stub_manager = StubManager(next_leader_peer.target,
                                       loopchain_pb2_grpc.PeerServiceStub,
                                       conf.GRPC_SSL_TYPE)
            try:
                try_count += 1
                response = stub_manager.call(
                    "GetStatus", loopchain_pb2.CommonRequest(request=""))
                logging.debug("Peer Status: " + str(response))
                return next_leader_peer, stub_manager
            except Exception as e:
                logging.debug("try another stub..." + str(e))

            next_leader_peer = self.__get_next_peer(next_leader_peer, group_id)

        logging.warning("fail found next leader stub")
        return None, None
Ejemplo n.º 3
0
 def __add_audience(self, audience_target):
     util.logger.debug(f"audience_target({audience_target})")
     if audience_target not in self.__audience:
         stub_manager = StubManager(audience_target,
                                    loopchain_pb2_grpc.PeerServiceStub,
                                    ssl_auth_type=conf.GRPC_SSL_TYPE)
         self.__audience[audience_target] = stub_manager
Ejemplo n.º 4
0
 def __create_live_data(self):
     try:
         self.__stub_manager = StubManager(self.__peer_info.target,
                                           loopchain_pb2_grpc.PeerServiceStub,
                                           conf.GRPC_SSL_TYPE)
     except Exception as e:
         logging.exception(f"Create Peer create stub_manager fail target : {self.__peer_info.target} \n"
                           f"exception : {e}")
Ejemplo n.º 5
0
def run_radio_station_as_process_and_stub_manager(port, timeout=None):
    process = run_radio_station_as_process(port)
    stub_manager = StubManager(f"localhost:{port}",
                               loopchain_pb2_grpc.RadioStationStub,
                               conf.GRPC_SSL_TYPE)
    util.request_server_in_time(stub_manager.stub.GetStatus,
                                loopchain_pb2.StatusRequest(request=""))
    return process, stub_manager
Ejemplo n.º 6
0
    def stub_manager(self):
        if not self.__stub_manager:
            try:
                self.__stub_manager = StubManager(
                    self.target, loopchain_pb2_grpc.PeerServiceStub,
                    conf.GRPC_SSL_TYPE)
            except Exception as e:
                logging.exception(
                    f"Create Peer create stub_manager fail target : {self.target} \n"
                    f"exception : {e}")

        return self.__stub_manager
Ejemplo n.º 7
0
def run_peer_server_as_process_and_stub_manager(
        port,
        radiostation_port=conf.PORT_RADIOSTATION,
        group_id=None,
        score=None,
        timeout=None):
    process = run_peer_server_as_process(port, radiostation_port, group_id,
                                         score)
    stub_manager = StubManager(f"localhost:{port}",
                               loopchain_pb2_grpc.PeerServiceStub,
                               ssl_auth_type=conf.GRPC_SSL_TYPE)
    return process, stub_manager
Ejemplo n.º 8
0
 def get_peer_stub_manager(self, peer, group_id=None):
     if group_id is None:
             group_id = conf.ALL_GROUP_ID
     try:
         return self.peer_stub_managers[group_id][peer.peer_id]
     except KeyError:
         try:
             self.__init_peer_group(peer.group_id)
             stub_manager = StubManager(peer.target, loopchain_pb2_grpc.PeerServiceStub)
             self.peer_stub_managers[group_id][peer.peer_id] = stub_manager
             return stub_manager
         except Exception as e:
             logging.debug("try get peer stub except: " + str(e))
             logging.warning("fail make peer stub: " + peer.target)
             return None
Ejemplo n.º 9
0
 def __create_live_data(self):
     """create live data that can't serialized"""
     # TODO live data 생성 실패 때 정책 설정 필요
     try:
         self.__stub_manager = StubManager(
             self.__peer_info.target, loopchain_pb2_grpc.PeerServiceStub)
     except Exception as e:
         logging.exception(
             f"Create Peer create stub_manager fail target : {self.__peer_info.target} \n"
             f"exception : {e}")
     try:
         self.__cert_verifier = PublicVerifier(self.peer_info.cert)
     except Exception as e:
         logging.exception(
             f"create cert verifier error : {self.__peer_info.cert} \n"
             f"exception {e}")
Ejemplo n.º 10
0
    def __create_live_data(self):
        """create live data that can't serialized

        :param channel: channel_name
        """
        try:
            self.__stub_manager = StubManager(
                self.__peer_info.target, loopchain_pb2_grpc.PeerServiceStub,
                conf.GRPC_SSL_TYPE)
        except Exception as e:
            logging.exception(
                f"Create Peer create stub_manager fail target : {self.__peer_info.target} \n"
                f"exception : {e}")
        try:
            self.__cert_verifier = IcxVerifier()
            self.__cert_verifier.init_and_verify_address(
                pubkey=self.peer_info.cert, address=self.peer_info.peer_id)
        except Exception as e:
            logging.exception(
                f"create cert verifier error : {self.__channel} {self.__peer_info.cert} \n"
                f"exception {e}")
Ejemplo n.º 11
0
    def __create_live_data(self):
        """create live data that can't serialized

        :param channel: channel_name
        """
        try:
            self.__stub_manager = StubManager(self.__peer_info.target,
                                              loopchain_pb2_grpc.PeerServiceStub,
                                              conf.GRPC_SSL_TYPE)
        except Exception as e:
            logging.exception(f"Create Peer create stub_manager fail target : {self.__peer_info.target} \n"
                              f"exception : {e}")
        try:
            if conf.CHANNEL_OPTION[self.__channel]["send_tx_type"] == conf.SendTxType.icx:
                self.__cert_verifier = IcxVerifier()
                self.__cert_verifier.init_and_verify_address(pubkey=self.peer_info.cert,
                                                             address=self.peer_info.peer_id)
            else:
                self.__cert_verifier = PublicVerifier(self.__channel)
                self.__cert_verifier.load_public_for_tx_verify(self.peer_info.cert)
        except Exception as e:
            logging.exception(f"create cert verifier error : {self.__channel} {self.__peer_info.cert} \n"
                              f"exception {e}")
Ejemplo n.º 12
0
 def set_stub_port(self, port):
     self.__stub_to_rs_service = StubManager(
         conf.IP_LOCAL + ':' + str(port),
         loopchain_pb2_grpc.RadioStationStub,
         ssl_auth_type=conf.GRPC_SSL_TYPE)
Ejemplo n.º 13
0
 def set_stub_port(self, port, IP_address):
     IP_address = conf.IP_LOCAL
     self.__stub_to_peer_service = StubManager(
         IP_address + ':' + str(port), loopchain_pb2_grpc.PeerServiceStub, conf.GRPC_SSL_TYPE)