예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
    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)
예제 #7
0
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)
예제 #8
0
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)
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
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)
예제 #14
0
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)
예제 #15
0
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)
예제 #16
0
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)
예제 #17
0
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)
예제 #18
0
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)
예제 #19
0
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')
예제 #20
0
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)
예제 #21
0
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)
예제 #22
0
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')
예제 #23
0
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)
예제 #24
0
 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)