def get(self): try: bee_db = BeekeeperDB() node_state = bee_db.list_latest_state() bee_db.close() except Exception as e: raise ErrorResponse(f"Unexpected error: {e}" , status_code=HTTPStatus.INTERNAL_SERVER_ERROR) return { "data" : node_state }
def initialize_test_nodes(): # pragma: no cover this code is not used in production test_nodes_file = os.path.join(BASE_KEY_DIR, "test-nodes.txt") if not os.path.isfile(test_nodes_file): logger.debug(f"File {test_nodes_file} not found. (only needed in testing)") return logger.debug(f"File {test_nodes_file} found. Load test nodes into DB") ### collect info about registered nodes to prevent multiple registrations try: bee_db = BeekeeperDB() node_list = bee_db.list_latest_state() bee_db.close() except Exception as e: raise Exception(f'list_latest_state returned: {str(e)}') registered_nodes={} node_list_len = len(node_list) logger.debug(f"Got {node_list_len} nodes from beekeeper API.") for node_object in node_list: if "id" not in node_object: logger.error("Field id missing") continue node_id = node_object["id"] registered_nodes[node_id]=True # check if nodes are registered already with open(test_nodes_file) as f: for line in f: if len(line) <= 1: # skip empty lines continue if line[0]=="#": # skip comments continue node_id = line logger.debug(f"got node: {node_id}") if node_id in registered_nodes: logger.debug(f"Node {node_id} already registered.") continue # register node try: register_node(node_id, lock_tables=False) # Locking mysql tables at initialization does not work for some unclear reason except Exception as e: raise Exception(f"Node registration failed: {str(e)}") logger.debug(f"Node {node_id} registered.") return