Source code for jobflow_remote.cli.batch

from typing import Annotated, Optional

import typer

from jobflow_remote.cli.formatting import get_batch_processes_table
from jobflow_remote.cli.jf import app
from jobflow_remote.cli.jfr_typer import JFRTyper
from jobflow_remote.cli.types import verbosity_opt
from jobflow_remote.cli.utils import (
    exit_with_warning_msg,
    get_config_manager,
    get_job_controller,
    out_console,
)
from jobflow_remote.jobs.batch import RemoteBatchManager

app_batch = JFRTyper(
    name="batch", help="Helper utils handling batch jobs", no_args_is_help=True
)
app.add_typer(app_batch)


[docs] @app_batch.command(name="list") def processes_list( worker: Annotated[ Optional[str], typer.Option( "--worker", "-w", help="Select the worker.", ), ] = None, verbosity: verbosity_opt = 0, ) -> None: """ Show the list of processes being executed on the batch workers. Increasing verbosity will require connecting to the host. """ jc = get_job_controller() batch_processes = jc.get_batch_processes(worker) if not batch_processes or not any(wbc for wbc in batch_processes.values()): exit_with_warning_msg("No batch processes running") cm = get_config_manager() project = cm.get_project() workers = project.workers running_jobs = {} if verbosity > 0: for worker_name in batch_processes: worker_config = workers[worker_name] host = worker_config.get_host() host.connect() remote_batch_manager = RemoteBatchManager( host, worker_config.batch.jobs_handle_dir ) running_jobs[worker_name] = remote_batch_manager.get_running() table = get_batch_processes_table( batch_processes=batch_processes, workers=workers, running_jobs=running_jobs, verbosity=verbosity, ) out_console.print(table)