You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
* chore(mcs, scripts): extra/columnstore_review.sh with scripts/columnstore_review.sh with 1.4.13 version * feat(mcs): add review command to the Tools section. It's the wrapper for columnstore_review.sh * feat(mcs): add review command implementation to tools.py file + constansts.py * chore(mcs): add separator argument to cook_sh_arg function * docs(mcs): updated README.md and mcs.1 man file
89 lines
2.7 KiB
Python
89 lines
2.7 KiB
Python
import logging
|
|
import subprocess
|
|
import sys
|
|
|
|
import typer
|
|
|
|
from cmapi_server.logging_management import dict_config, add_logging_level, enable_console_logging
|
|
from mcs_cluster_tool import (
|
|
cluster_app, cmapi_app, backup_commands, restore_commands, tools_commands
|
|
)
|
|
from mcs_cluster_tool.constants import MCS_CLI_LOG_CONF_PATH
|
|
|
|
|
|
# don't show --install-completion and --show-completion options in help message
|
|
app = typer.Typer(
|
|
add_completion=False,
|
|
help=(
|
|
'The MCS Command Line Interface is a unified tool to manage your '
|
|
'MCS services'
|
|
),
|
|
rich_markup_mode='rich',
|
|
)
|
|
app.add_typer(cluster_app.app)
|
|
# keep this only for potential backward compatibility and userfriendliness
|
|
app.add_typer(cluster_app.app, name='cluster', hidden=True)
|
|
app.add_typer(cmapi_app.app, name='cmapi')
|
|
app.command(
|
|
'backup', rich_help_panel='Tools commands'
|
|
)(backup_commands.backup)
|
|
app.command(
|
|
'dbrm_backup', rich_help_panel='Tools commands'
|
|
)(backup_commands.dbrm_backup)
|
|
app.command(
|
|
'restore', rich_help_panel='Tools commands'
|
|
)(restore_commands.restore)
|
|
app.command(
|
|
'dbrm_restore', rich_help_panel='Tools commands'
|
|
)(restore_commands.dbrm_restore)
|
|
app.command(
|
|
'cskeys', rich_help_panel='Tools commands',
|
|
short_help=(
|
|
'Generates a random AES encryption key and init vector and writes '
|
|
'them to disk.'
|
|
)
|
|
)(tools_commands.cskeys)
|
|
app.command(
|
|
'cspasswd', rich_help_panel='Tools commands',
|
|
short_help='Encrypt a Columnstore plaintext password.'
|
|
)(tools_commands.cspasswd)
|
|
app.command(
|
|
'bootstrap-single-node', rich_help_panel='Tools commands',
|
|
)(tools_commands.bootstrap_single_node)
|
|
app.command(
|
|
'review', rich_help_panel='Tools commands',
|
|
short_help=(
|
|
'Provides useful functions to review and troubleshoot the MCS cluster.'
|
|
)
|
|
)(tools_commands.review)
|
|
|
|
|
|
@app.command(
|
|
name='help-all', help='Show help for all commands in man page style.',
|
|
add_help_option=False
|
|
)
|
|
def help_all():
|
|
# Open the man page in interactive mode
|
|
subprocess.run(['man', 'mcs'])
|
|
|
|
@app.callback()
|
|
def main(verbose: bool = typer.Option(False, '--verbose', '-v', help='Enable verbose logging to console')):
|
|
'''Add a -v option and setup logging in every subcommand'''
|
|
setup_logging(verbose)
|
|
|
|
|
|
def setup_logging(verbose: bool = False) -> None:
|
|
add_logging_level('TRACE', 5)
|
|
dict_config(MCS_CLI_LOG_CONF_PATH)
|
|
if verbose:
|
|
enable_console_logging(logging.getLogger())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
logger = logging.getLogger('mcs_cli')
|
|
# add separator between cli commands logging
|
|
logger.debug(f'{"-":-^80}')
|
|
cl_args_line = ' '.join(sys.argv[1:])
|
|
logger.debug(f'Called "mcs {cl_args_line}"')
|
|
app(prog_name='mcs')
|