Command line interface for MLOX.
This rewrite exposes a higher level interface for managing projects,
servers and services in preparation for a server/client architecture.
PROJECT_ENVVAR =
'MLOX_PROJECT_NAME'
PASSWORD_ENVVAR =
'MLOX_PROJECT_PASSWORD'
app =
<typer.main.Typer object>
project_app =
<typer.main.Typer object>
server_app =
<typer.main.Typer object>
service_app =
<typer.main.Typer object>
server_configs_app =
<typer.main.Typer object>
service_configs_app =
<typer.main.Typer object>
def
parse_kv(pairs: List[str]) -> Dict[str, str]:
Convert a list of KEY=VALUE strings into a dictionary.
def
render_table( headers: Sequence[str], rows: Sequence[Sequence[Any]], *, title: Optional[str] = None) -> None:
Render a styled table to the terminal.
@project_app.command('new')
def
project_new( name: str = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>):
@server_app.command('list')
def
server_list( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>):
List all servers registered in the project infrastructure.
@server_app.command('add')
def
server_add( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>, server_template: str = <typer.models.OptionInfo object>, ip: str = <typer.models.OptionInfo object>, port: int = <typer.models.OptionInfo object>, root_user: str = <typer.models.OptionInfo object>, root_pw: str = <typer.models.OptionInfo object>, param: List[str] = <typer.models.OptionInfo object>):
Register a new server in the current project.
@server_app.command('setup')
def
server_setup( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>, ip: str = <typer.models.ArgumentInfo object>):
Run the setup routine on a server.
@server_app.command('teardown')
def
server_teardown( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>, ip: str = <typer.models.ArgumentInfo object>):
Tear down a server and remove it from the infrastructure.
@server_app.command('save-key')
def
server_save_key( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>, ip: str = <typer.models.ArgumentInfo object>, output: str = <typer.models.OptionInfo object>):
Save a server key file for local access.
@service_app.command('list')
def
service_list( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>):
List services across all servers in the project.
@service_app.command('add')
def
service_add( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>, server_ip: str = <typer.models.OptionInfo object>, template_id: str = <typer.models.OptionInfo object>, param: List[str] = <typer.models.OptionInfo object>):
Add a new service to an existing server.
@service_app.command('setup')
def
service_setup( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>, name: str = <typer.models.ArgumentInfo object>):
Run the setup routine for a service.
@service_app.command('teardown')
def
service_teardown( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>, name: str = <typer.models.ArgumentInfo object>):
Remove a service from the infrastructure.
@service_app.command('logs')
def
service_logs( project: Optional[str] = <typer.models.ArgumentInfo object>, password: Optional[str] = <typer.models.OptionInfo object>, name: str = <typer.models.ArgumentInfo object>, label: str = <typer.models.OptionInfo object>, tail: int = <typer.models.OptionInfo object>):
Show recent logs for a service (compose service label).
If label is not provided the command will attempt to use the service's
default compose service mapping.
@server_configs_app.command('list')
def
server_configs_list():
List available server configuration templates.
@service_configs_app.command('list')
def
service_configs_list():
List available service configuration templates.