def node_schains_list(): logger.debug(request) node_id = config.id if node_id is None: return construct_err_response(HTTPStatus.BAD_REQUEST, ['No node installed']) schains_list = skale.schains_data.get_schains_for_node(node_id) return construct_ok_response(schains_list)
def get_schain_config_route(): logger.debug(request) schain_name = request.args.get('schain-name') # todo: handle - if schain name is empty or invalid schain_config = get_schain_config(schain_name) skale_schain_config = schain_config['skaleConfig'] return construct_ok_response(skale_schain_config)
def register_node(): logger.debug(request) if not request.json: abort(400) ip = request.json.get('ip') public_ip = request.json.get('publicIP') port = request.json.get('port') name = request.json.get('name') is_node_name_available = skale.nodes_data.is_node_name_available(name) if not is_node_name_available: error_msg = f'Node name is already taken: {name}' logger.error(error_msg) return construct_err_response(HTTPStatus.BAD_REQUEST, [error_msg]) is_node_ip_available = skale.nodes_data.is_node_ip_available(ip) if not is_node_ip_available: error_msg = f'Node IP is already taken: {ip}' logger.error(error_msg) return construct_err_response(HTTPStatus.BAD_REQUEST, [error_msg]) res = node.register(ip, public_ip, port, name) if res['status'] != 1: return construct_err_response(HTTPStatus.INTERNAL_SERVER_ERROR, res['errors']) return construct_ok_response(res['data'])
def owner_schains(): logger.debug(request) schains = skale.schains_data.get_schains_for_owner(skale.wallet.address) for schain in schains: nodes = skale.schains_data.get_nodes_for_schain_config(schain['name']) schain['nodes'] = nodes return construct_ok_response(schains)
def status(): logger.debug(request) if is_ssl_folder_empty(): return construct_ok_response({'status': 0}) cert_file = os.path.join(SSL_CERTIFICATES_FILEPATH, 'ssl_cert') cert = crypto.load_certificate(crypto.FILETYPE_PEM, open(cert_file).read()) subject = cert.get_subject() issued_to = subject.CN expiration_date_raw = cert.get_notAfter() expiration_date = parser.parse(expiration_date_raw).strftime( '%Y-%m-%dT%H:%M:%S') return construct_ok_response({ 'issued_to': issued_to, 'expiration_date': expiration_date, 'status': 1 })
def sgx_status(): logger.debug(request) sgx = SgxClient(SGX_SERVER_URL, SGX_CERTIFICATES_FOLDER) try: status = sgx.get_server_status() except Exception: # todo: catch specific error - edit sgx.py status = 1 res = { 'status': status, 'status_name': SGXStatus(status).name, 'sgx_server_url': SGX_SERVER_URL } return construct_ok_response(res)
def get_metrics(): since = convert_to_date(request.args.get('since')) till = convert_to_date(request.args.get('till')) limit = request.args.get('limit') fast = request.args.get('fast') == 'True' wei = request.args.get('wei') == 'True' if fast: metrics, total_bounty = get_metrics_from_db( since, till, limit, wei) else: metrics, total_bounty = get_metrics_from_events( since, till, limit, wei) return construct_ok_response({ 'metrics': metrics, 'total': total_bounty })
def about_node(): logger.debug(request) node_about = { 'libraries': { 'javascript': 'N/A', # get_js_package_version(), 'skale.py': pkg_resources.get_distribution(SKALE_LIB_NAME).version }, 'contracts': { 'token': skale.token.address, 'manager': skale.manager.address, }, 'network': { 'endpoint': ENDPOINT }, } return construct_ok_response(node_about)
def upload(): request_json = json.loads(request.form['json']) force = request_json.get('force') is True if not is_ssl_folder_empty() and not force: return construct_bad_req_response(CERTS_UPLOADED_ERR_MSG) if SSL_KEY_NAME not in request.files or SSL_CRT_NAME not in request.files: return construct_bad_req_response(NO_REQUIRED_FILES_ERR_MSG) ssl_key = request.files[SSL_KEY_NAME] ssl_cert = request.files[SSL_CRT_NAME] ssl_key.save(os.path.join(SSL_CERTIFICATES_FILEPATH, SSL_KEY_NAME)) ssl_cert.save(os.path.join(SSL_CERTIFICATES_FILEPATH, SSL_CRT_NAME)) docker_utils.restart_all_schains() return construct_ok_response()
def dkg_status(): logger.debug(request) _all = request.args.get('all') == 'True' dkg_statuses = SChainRecord.get_statuses(_all) return construct_ok_response(dkg_statuses)
def schains_containers_list(): logger.debug(request) _all = request.args.get('all') == 'True' containers_list = docker_utils.get_all_schain_containers(all=_all, format=True) return construct_ok_response(containers_list)
def containers_healthcheck(): logger.debug(request) containers_list = docker_utils.get_all_skale_containers(all=all, format=True) return construct_ok_response(containers_list)
def check_node_name(): logger.debug(request) node_name = request.args.get('nodeName') res = skale.nodes_data.is_node_name_available(node_name) return construct_ok_response(res)
def uninstall_node(): logger.debug(request) res = node.uninstall() return construct_ok_response(res)
def node_info(): logger.debug(request) return construct_ok_response(node.info)
def load_wallet(): logger.debug(request) res = wallet_with_balance(skale) return construct_ok_response(res)
def check_node_ip(): logger.debug(request) node_ip = request.args.get('nodeIp') res = skale.nodes_data.is_node_ip_available(node_ip) return construct_ok_response(res)
def get_rpc_credentials(): logger.debug(request) rpc_credentials = { 'endpoint': ENDPOINT } return construct_ok_response(rpc_credentials)