def register_node(name, p2p_ip, public_ip, port, domain_name): if not is_node_inited(): print(TEXTS['node']['not_inited']) return # todo: add name, ips and port checks json_data = { 'name': name, 'ip': p2p_ip, 'publicIP': public_ip, 'port': port, 'domain_name': domain_name } status, payload = post_request(blueprint=BLUEPRINT_NAME, method='register', json=json_data) if status == 'ok': msg = TEXTS['node']['registered'] logger.info(msg) print(msg) else: error_msg = payload logger.error(f'Registration error {error_msg}') error_exit(error_msg, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def get_schain_firewall_rules(schain: str) -> None: status, payload = get_request(blueprint=BLUEPRINT_NAME, method='firewall-rules', params={'schain_name': schain}) if status == 'ok': print_firewall_rules(payload['endpoints']) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def show_config(name: str) -> None: status, payload = get_request(blueprint=BLUEPRINT_NAME, method='config', params={'schain_name': name}) if status == 'ok': pprint.pprint(payload) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def describe(schain: str, raw=False) -> None: status, payload = get_request(blueprint=BLUEPRINT_NAME, method='get', params={'schain_name': schain}) if status == 'ok': print_schain_info(payload, raw=raw) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def toggle_schain_repair_mode(schain: str) -> None: status, payload = post_request(blueprint=BLUEPRINT_NAME, method='repair', json={'schain_name': schain}) if status == 'ok': print('Schain has been set for repair') else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def inner(*args, **kwargs): if not is_user_valid(): g_conf_user = get_g_conf_user() current_user = get_system_user() error_msg = f'You couldn\'t execute this command from user {current_user}. \ Allowed: {g_conf_user} or root.' error_exit(error_msg, exit_code=CLIExitCodes.BAD_USER_ERROR) return f(*args, **kwargs)
def get_wallet_info(_format): status, payload = get_request(BLUEPRINT_NAME, 'info') if status == 'ok': if _format == 'json': print(json.dumps(payload)) else: print_wallet_info(payload) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def show_dkg_info(all_: bool = False) -> None: params = {'all': all_} status, payload = get_request(blueprint=BLUEPRINT_NAME, method='dkg-statuses', params=params) if status == 'ok': print_dkg_statuses(payload) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def send_eth(address: str, amount: float): json_data = {'address': address, 'amount': amount} status, payload = post_request(BLUEPRINT_NAME, 'send-eth', json=json_data) if status == 'ok': msg = TEXTS['wallet']['successful_transfer'] logger.info(msg) print(msg) else: logger.error(f'Sending error {payload}') error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def get_containers(_all): status, payload = get_request( blueprint=BLUEPRINT_NAME, method='containers', params={'all': _all} ) if status == 'ok': print_containers(payload) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def show_schains() -> None: status, payload = get_request(blueprint=BLUEPRINT_NAME, method='list') if status == 'ok': schains = payload if not schains: print('No sChains found') return print_schains(schains) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def set_domain_name(domain_name): print(f'Setting new domain name: {domain_name}') status, payload = post_request(blueprint=BLUEPRINT_NAME, method='set-domain-name', json={'domain_name': domain_name}) if status == 'ok': msg = TEXTS['node']['domain_name_changed'] logger.info(msg) print(msg) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def start(): status, payload = post_request( blueprint=BLUEPRINT_NAME, method='exit/start' ) if status == 'ok': msg = TEXTS['exit']['start'] logger.info(msg) print(msg) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def set_maintenance_mode_off(): print('Setting maintenance mode off...') status, payload = post_request(blueprint=BLUEPRINT_NAME, method='maintenance-off') if status == 'ok': msg = TEXTS['node']['maintenance_off'] logger.info(msg) print(msg) else: error_msg = payload logger.error(f'Remove from maintenance mode error {error_msg}') error_exit(error_msg, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def check(key_path, cert_path, port, no_client, type_, no_wss): status, payload = check_cert( cert_path, key_path, port=port, check_type=type_, no_client=no_client, no_wss=no_wss ) if status == 'ok': print(TEXTS['ssl']['check_passed']) else: error_exit(payload, exit_code=CLIExitCodes.OPERATION_EXECUTION_ERROR)
def get_node_info(format): status, payload = get_request(blueprint=BLUEPRINT_NAME, method='info') if status == 'ok': node_info = payload['node_info'] if format == 'json': print(node_info) elif node_info['status'] == NodeStatuses.NOT_CREATED.value: print(TEXTS['service']['node_not_registered']) else: print_node_info(node_info, get_node_status(int(node_info['status']))) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def status(format): status, payload = get_request( blueprint=BLUEPRINT_NAME, method='exit/status' ) if status == 'ok': exit_status = payload if format == 'json': print(exit_status) else: print_exit_status(exit_status) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def get_schains_checks(json_format: bool = False) -> None: status, payload = get_request( blueprint=BLUEPRINT_NAME, method='schains' ) if status == 'ok': if not payload: print('No sChains found') return if json_format: print(json.dumps(payload)) else: print_schains_healthchecks(payload) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def restore(backup_path, env_filepath): env = get_node_env(env_filepath) if env is None: return save_env_params(env_filepath) env['SKALE_DIR'] = SKALE_DIR env['BACKUP_RUN'] = 'True' # should be str restored_ok = restore_op(env, backup_path) if not restored_ok: error_exit('Restore operation failed', exit_code=CLIExitCodes.OPERATION_EXECUTION_ERROR) return time.sleep(RESTORE_SLEEP_TIMEOUT) logger.info('Generating resource allocation file ...') update_resource_allocation(env['DISK_MOUNTPOINT'], env['ENV_TYPE']) print('Node is restored from backup')
def get_sgx_info(): status, payload = get_request( blueprint=BLUEPRINT_NAME, method='sgx' ) if status == 'ok': data = payload table_data = [ ['SGX info', ''], ['Server URL', data['sgx_server_url']], ['SGXWallet Version', data['sgx_wallet_version']], ['Node SGX keyname', data['sgx_keyname']], ['Status', data['status_name']] ] table = SingleTable(table_data) print(table.table) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def status(): status, payload = get_request( blueprint=BLUEPRINT_NAME, method='status' ) if status == 'ok': if payload.get('is_empty'): print(TEXTS['ssl']['no_cert']) else: table_data = [ ['Issued to', payload['issued_to']], ['Expiration date', payload['expiration_date']] ] table = SingleTable(table_data) print('SSL certificates status:') print(table.table) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def init(env_filepath): env = get_node_env(env_filepath) if env is None: return inited_ok = init_op(env_filepath, env) if not inited_ok: error_exit('Init operation failed', exit_code=CLIExitCodes.OPERATION_EXECUTION_ERROR) return logger.info('Waiting for containers initialization') time.sleep(TM_INIT_TIMEOUT) if not is_base_containers_alive(): error_exit('Containers are not running', exit_code=CLIExitCodes.OPERATION_EXECUTION_ERROR) return logger.info('Generating resource allocation file ...') update_resource_allocation(env['DISK_MOUNTPOINT'], env['ENV_TYPE']) logger.info('Init procedure finished')
def upload(key_path, cert_path, force): status, payload = upload_cert(cert_path, key_path, force) if status == 'ok': print(TEXTS['ssl']['uploaded']) else: error_exit(payload, exit_code=CLIExitCodes.BAD_API_RESPONSE)
def inner(*args, **kwargs): if not is_node_inited(): error_exit(TEXTS['node']['not_inited'], exit_code=CLIExitCodes.NODE_STATE_ERROR) return f(*args, **kwargs)