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
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
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
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}")
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
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
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
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
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}")
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}")
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}")
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)
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)