Skip to content

Commit

Permalink
refactor: Use async cmd_main
Browse files Browse the repository at this point in the history
  • Loading branch information
jopemachine committed Dec 5, 2024
1 parent 7b4f4ef commit 7f19126
Showing 1 changed file with 42 additions and 29 deletions.
71 changes: 42 additions & 29 deletions src/ai/backend/client/cli/session/lifecycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -848,48 +848,61 @@ def logs(session_id: str, kernel: str | None) -> None:

@session.command()
@pass_ctx_obj
@click.argument("session_id", metavar="SESSID", type=SessionId)
@click.argument("session_id", metavar="SESSID")
def status_history(ctx: CLIContext, session_id: SessionId) -> None:
"""
Shows the status transition history of the compute session.
\b
SESSID: Session ID or its alias given when creating the session.
"""
with Session() as session:
print_wait("Retrieving status history...")
kernel = session.ComputeSession.from_session_id(session_id)
try:
status_history = kernel.get_status_history().get("result")
prev_time = None

for status_record in status_history:
timestamp = datetime.fromisoformat(status_record["timestamp"])
async def cmd_main() -> None:
async with AsyncSession() as session:
print_wait("Retrieving status history...")

if prev_time:
time_diff = timestamp - prev_time
status_record["time_elapsed"] = str(time_diff)
kernel = session.ComputeSession(str(session_id))
try:
resp = await kernel.get_status_history()
status_history = resp["result"]

prev_time = timestamp
prev_time = None

ctx.output.print_list(
status_history,
[FieldSpec("status"), FieldSpec("timestamp"), FieldSpec("time_elapsed")],
)
for status_record in status_history:
timestamp = datetime.fromisoformat(status_record["timestamp"])

if (preparing := get_lastest_timestamp_for_status(status_history, "PREPARING")) is None:
elapsed = timedelta()
elif (
terminated := get_lastest_timestamp_for_status(status_history, "TERMINATED")
) is None:
elapsed = datetime.now(tzutc()) - preparing
else:
elapsed = terminated - preparing
if prev_time:
time_diff = timestamp - prev_time
status_record["time_elapsed"] = str(time_diff)

print_done(f"Actual Resource Allocation Time: {elapsed.total_seconds()}")
except Exception as e:
print_error(e)
sys.exit(ExitCode.FAILURE)
prev_time = timestamp

ctx.output.print_list(
status_history,
[FieldSpec("status"), FieldSpec("timestamp"), FieldSpec("time_elapsed")],
)

if (
preparing := get_lastest_timestamp_for_status(status_history, "PREPARING")
) is None:
elapsed = timedelta()
elif (
terminated := get_lastest_timestamp_for_status(status_history, "TERMINATED")
) is None:
elapsed = datetime.now(tzutc()) - preparing
else:
elapsed = terminated - preparing

print_done(f"Actual Resource Allocation Time: {elapsed.total_seconds()}")
except Exception as e:
print_error(e)
sys.exit(ExitCode.FAILURE)

try:
asyncio.run(cmd_main())
except Exception as e:
print_error(e)
sys.exit(ExitCode.FAILURE)


@session.command()
Expand Down

0 comments on commit 7f19126

Please sign in to comment.