def is_started(self, url=None): if not url: url = self.url client = SawtoothClient(url) sta = None try: sta = client.get_status(timeout=2) except MessageException as e: print(e.message) return False if sta is not None: return sta.get('Status', '') == 'started' return False
def is_started(self, url=None): if not url: url = self.url client = SawtoothClient(url) sta = None try: sta = client.get_status(timeout=2) except MessageException as e: print e.message return False if sta is not None: return sta.get('Status', '') == 'started' return False
def _get_quorum(gossiper, callback): """Attempts to connect gossiper to new available quorum nodes Args: gossiper (Node): The local node. callback (function): The function to call once the quorum topology update has completed. """ # find out how many we have and how many nodes we still need need count = max(0, TargetConnectivity - len(gossiper.VotingQuorum.keys())) # we have all the nodes we need; do next operation (the callback) if count <= 0: logger.debug('sufficiently connected via %s', [str(x.Name) for x in gossiper.VotingQuorum.itervalues()]) callback() return # add nodes we don't have already, in random order candidates = [x for x in gossiper.quorum_list() if gossiper.VotingQuorum.get(x.Identifier, None) is None] random.shuffle(candidates) logger.debug('trying to increase working quorum by %d from candidates %s', count, [str(x.Name) for x in candidates]) for nd in candidates: client = SawtoothClient('http://{0}:{1}'.format(nd.NetHost, nd.HttpPort)) try: status = client.get_status(timeout=2) except MessageException as e: logger.debug(e.message) continue status = status.get('Status', '') if status in ['started', "transferring ledger", "waiting for initial connections"]: # candidate node is live; add it logger.debug('adding %s to quorum', nd.Name) gossiper.add_quorum_node(nd) if nd.Identifier not in gossiper.peer_id_list(): send_connection_request(gossiper, nd) count -= 1 if count == 0: logger.debug('now sufficiently connected') break # try again (or possibly execute the piggybacked callback) reactor.callLater(TimeBetweenProbes, _get_quorum, gossiper, callback)