Exemplo n.º 1
0
def rollback_for_platon(dataPath):
    platon_cfg_path = os.path.join(g_dict_dir_config["conf_dir"], 'platon.cfg')
    if not os.path.exists(platon_cfg_path):
        cust_print('The node is not initialized, please check!:{}'.format(g_current_dir), fg='r')
        sys.exit(1)

    platon_cfg = get_local_platon_cfg()
    # 进程是否在运行
    pid = get_pid(PLATON_NAME, int(platon_cfg['rpcport']))
    if pid:
        confirm = input('PlatON is running, rpc port:{}, Whether or not to continue? [Y|y/N|n]: '.
                        format(int(platon_cfg['rpcport'])))
        # 关闭进程
        if confirm == 'Y' or confirm == 'y':
            shutdown_node()
        else:
            cust_print('Failed to rollback platon data!:{}'.format(g_current_dir), fg='r')
            return

    confirm = input('Current CLI workspace directory:{},  do you want to continue? [Y|y/N|n]: '.
                    format(g_current_dir))
    # 关闭进程
    if confirm != 'Y' and confirm != 'y':
        cust_print('Failed to rollback platon data!:{}'.format(g_current_dir), fg='r')
        return

    cust_print('start to rollback node data...:{}'.format(g_current_dir), fg='g')
    # delete data dir of platon
    old_data_dir = os.path.join(g_dict_dir_config["platon_dir"], "data")
    remove(old_data_dir)
    shutil.move(dataPath, old_data_dir)

    # 重启节点
    startup_node()
    cust_print("Rollback success...", bg='y')
Exemplo n.º 2
0
def update_for_platon(bin_path):
    platon_cfg_path = os.path.join(g_dict_dir_config["conf_dir"], 'platon.cfg')
    if not os.path.exists(platon_cfg_path):
        cust_print('The node is not initialized, please check!:{}'.format(
            g_current_dir),
                   fg='r')
        sys.exit(1)

    platon_cfg = get_local_platon_cfg()
    # 进程是否在运行
    pid = get_pid(PLATON_NAME, int(platon_cfg['rpcport']))
    if pid:
        confirm = input(
            'PlatON is running, rpc port:{}, Whether or not to continue? [Y|y/N|n]: '
            .format(int(platon_cfg['rpcport'])))
        # 关闭进程
        if confirm == 'Y' or confirm == 'y':
            shutdown_node()
        else:
            cust_print(
                'Failed to upgrade platon node!:{}'.format(g_current_dir),
                fg='r')
            return

    # 开始下载,替换
    # download_file(download_path, g_dict_dir_config["platon_dir"])

    # 已下载到本地,直接替换
    old_bin_dir = os.path.join(g_dict_dir_config["platon_dir"], PLATON_NAME)
    remove(old_bin_dir)
    shutil.move(bin_path, g_dict_dir_config["platon_dir"])
    # 重启节点
    startup_node()
Exemplo n.º 3
0
def stop():
    """
    this is node submodule stop command.
    """
    confirm = input('Current workspace: {}, continue Y/N? (Y|y/N|n): '.format(
        g_current_dir))

    if confirm == 'Y' or confirm == 'y':
        shutdown_node()
Exemplo n.º 4
0
def is_continue(platon_cfg, running_dir):
    # 进程是否在运行
    pid = get_pid(PLATON_NAME, int(platon_cfg['rpcport']))
    if pid:
        confirm = input(
            'PlatON is running, rpc port:{}, Whether or not to continue? [Y|y/N|n]: '
            .format(int(platon_cfg['rpcport'])))
        # 关闭进程
        if confirm == 'Y' or confirm == 'y':
            shutdown_node()
        else:
            cust_print('Failed to move block data!:{}'.format(running_dir),
                       fg='r')
            return False

    return True
Exemplo n.º 5
0
def blockinput(zipFile):
    """
    this is node submodule blockinput command.
    """
    if not os.path.exists(zipFile) or not zipFile.endswith(".zip"):
        cust_print(
            "Invalid address, please enter zip file path: {}".format(zipFile),
            fg='r')
        return

    platon_cfg = get_local_platon_cfg()
    # 进程是否在运行
    pid = get_pid(PLATON_NAME, int(platon_cfg['rpcport']))
    if pid:
        confirm = input(
            'PlatON is running, rpc port:{}, Whether or not to continue? [Y|y/N|n]: '
            .format(int(platon_cfg['rpcport'])))
        # 关闭进程
        if confirm == 'Y' or confirm == 'y':
            shutdown_node()
        else:
            cust_print('Failed to input block data!:{}'.format(g_current_dir),
                       fg='r')
            return

    # node is deploy
    data_dir = os.path.join(g_dict_dir_config["platon_dir"], "data")
    if os.path.exists(data_dir):
        # delete old chain data
        cust_print("start to remove old chain data: {}.".format(data_dir),
                   fg='g')
        remove(data_dir)
        cust_print("remove old chain data succeed.", fg='g')

    cust_print('start to input the block data:{}.'.format(zipFile), fg='g')
    # unzip
    un_zip(zipFile, g_dict_dir_config["platon_dir"])

    cust_print('input the block data successfully.', fg='g')
Exemplo n.º 6
0
def blockexport(savePath):
    """
    this is node submodule blockexport command.
    """
    if not os.path.exists(savePath):
        cust_print("invalid path: {}".format(savePath), fg='r')
        return

    # 节点数据
    data_dir = os.path.join(g_dict_dir_config["platon_dir"], "data")
    if not os.path.exists(data_dir):
        cust_print("Data file not found: {}".format(data_dir), fg='r')
        return

    platon_cfg = get_local_platon_cfg()
    # 进程是否在运行
    pid = get_pid(PLATON_NAME, int(platon_cfg['rpcport']))
    if pid:
        confirm = input(
            'PlatON is running, rpc port:{}, Whether or not to continue? [Y|y/N|n]: '
            .format(int(platon_cfg['rpcport'])))
        # 关闭进程
        if confirm == 'Y' or confirm == 'y':
            shutdown_node()
        else:
            cust_print('Failed to export block data!:{}'.format(g_current_dir),
                       fg='r')
            return

    cust_print('Start exporting the block data.', fg='g')
    # make zip
    zip_name = "data_" + get_time_stamp() + ".zip"
    zip_path = os.path.join(savePath, zip_name)
    make_zip(data_dir, zip_path)

    cust_print('Export block data successfully.', fg='g')
Exemplo n.º 7
0
def reset_node(clearFlag):
    platon_cfg_path = os.path.join(g_dict_dir_config["conf_dir"], 'platon.cfg')
    if not os.path.exists(platon_cfg_path):
        cust_print('The node is not initialized, please check!:{}'.format(g_current_dir), fg='r')
        sys.exit(1)

    platon_cfg = get_local_platon_cfg()
    hrp = platon_cfg['hrp']
    network_type = "PlatON"
    if 'atp' == hrp or 'atx':
        network_type = "Alaya"
    # 判断是否已安装
    if not check_install_valid(network_type):
        cust_print('Node binary not installed, please check!:{}'.format(g_current_dir), fg='r')
        sys.exit(1)

    # 进程是否在运行
    pid = get_pid(PLATON_NAME, int(platon_cfg['rpcport']))
    if pid:
        confirm = input('PlatON is running, rpc port:{}, Whether or not to continue? [Y|y/N|n]: '.
                        format(int(platon_cfg['rpcport'])))
        # 关闭进程
        if confirm == 'Y' or confirm == 'y':
            shutdown_node()
        else:
            cust_print('Failed to reset platon node!:{}'.format(g_current_dir), fg='r')
            return

    # 再次提示
    confirm = input('Whether to consider data backup? [Y|y/N|n]: ')
    if confirm == 'Y' or confirm == 'y':
        cust_print('Please do a manual backup of the data you need.', fg='g')
        return

    # 删除data数据
    data_path = os.path.join(g_dict_dir_config["platon_dir"], "data")
    if os.path.exists(data_path):
        remove(data_path)
        cust_print('The data directory was deleted successfully:{}.'.format(data_path), fg='g')

    if clearFlag:
        # 删除key数据
        nodeKey_path = g_dict_dir_config["nodekey_dir"]
        blsKey_path = g_dict_dir_config["blskey_dir"]
        if os.path.exists(nodeKey_path):
            remove(nodeKey_path)
            cust_print('The nodekey directory was deleted successfully:{}.'.format(nodeKey_path), fg='g')

        if os.path.exists(blsKey_path):
            remove(blsKey_path)
            cust_print('The blskey directory was deleted successfully:{}.'.format(blsKey_path), fg='g')

        # 删除log日志
        log_path = platon_cfg['logfile']
        if os.path.exists(log_path):
            remove(log_path)
            cust_print('The log file was deleted successfully:{}.'.format(log_path), fg='g')
    try:
        cust_print('Reset platon node successfully.', fg='g')
    except Exception as e:
        cust_print('Unable to reset platon node: {}'.format(e), fg='r')