Working on jobs CLI group

This commit is contained in:
Michael Woods
2025-02-19 23:01:11 -05:00
parent 66cfef161f
commit b9a6f35582

View File

@@ -4,9 +4,9 @@ import os
import click import click
from persistent.mapping import default from persistent.mapping import default
from packetserver.client import Client from packetserver.client import Client
from packetserver.client.jobs import JobSession from packetserver.client.jobs import JobSession, get_job_id, get_user_jobs, send_job, send_job_quick, JobWrapper
import datetime import datetime
from packetserver.client.cli.util import exit_client from packetserver.client.cli.util import exit_client, format_list_dicts
@click.group() @click.group()
@click.pass_context @click.pass_context
@@ -16,15 +16,43 @@ def job(ctx):
@click.command() @click.command()
@click.pass_context @click.pass_context
def start(): def start(ctx):
"""Start a job on the BBS server.""" """Start a job on the BBS server."""
pass pass
@click.command() @click.command()
@click.argument('job_id', required=False, type=int)
@click.option("--all-jobs", "-a", is_flag=True, default=False, help="Get all of your jobs.")
@click.option("--no-data", '-n', is_flag=True, default=True,
help="Don't fetch job result data, just metadata.")
@click.pass_context @click.pass_context
def get(): def get(ctx, job_id, all_jobs, no_data): # TODO decide what to do with output and artifacts in a cli tool force full JSON?
"""Retrieve a job""" """Retrieve your jobs. Pass either '-a' or a job_id."""
pass
fetch_data = not no_data
if job_id is None:
job_id = ""
job_id = job_id.strip()
if all_jobs and (job_id != ""):
click.echo("Can't use --all and specify a job_id.")
client = ctx.obj['client']
try:
if all_jobs:
jobs_out = get_user_jobs(client, ctx.obj['bbs'], get_data=fetch_data)
else:
jobs_out = [get_job_id(client,ctx.obj['bbs'], get_data=fetch_data)]
dicts_out = []
for j in jobs_out:
except Exception as e:
click.echo(str(e), err=True)
exit_client(ctx.obj, 1)
@click.command() @click.command()
@click.option("--transcript", "-T", default="", help="File to write command transcript to if desired.") @click.option("--transcript", "-T", default="", help="File to write command transcript to if desired.")
@@ -54,7 +82,9 @@ def quick_session(ctx, transcript):
else: else:
try: try:
job_result = js.send_quick(['bash', '-c', cmd], db=next_db) job_result = js.send_quick(['bash', '-c', cmd], db=next_db)
output = job_result.output_str + "\n" + "Errors: " + job_result.errors_str output = job_result.output_str + "\n"
if job_result.errors_str != "":
output = output + "Errors: " + job_result.errors_str
session_transcript.append((datetime.datetime.now(), "r", output)) session_transcript.append((datetime.datetime.now(), "r", output))
click.echo(output) click.echo(output)
except Exception as e: except Exception as e: