From 34a7ac65fb955a7b46fe8be5e7fbd27ac7f56e23 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Fri, 14 Mar 2025 04:11:55 +0100 Subject: [PATCH 1/2] feat(instances): display scheduler decisions on listing --- src/aleph_client/commands/instance/__init__.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/aleph_client/commands/instance/__init__.py b/src/aleph_client/commands/instance/__init__.py index 85b3fdc2..86b012b6 100644 --- a/src/aleph_client/commands/instance/__init__.py +++ b/src/aleph_client/commands/instance/__init__.py @@ -864,6 +864,17 @@ async def _show_instances(messages: builtins.list[InstanceMessage]): aleph_price = Text.assemble(psec, " | ", phour, " | ", pday, " | ", pmonth, style="violet") cost = Text.assemble("\n$ALEPH: ", aleph_price) + additional_infos = [] + if is_hold: + # XXX error management + async with aiohttp.ClientSession() as session: + request = await session.get("http://[2a01:240:ad00:2:be24:11ff:fece:9d3d]/api/v0/decisions") + decisions = await request.json() + decision = decisions["tasks_decisions"][str(item_hash_link)]["decision"] + description = decisions["tasks_decisions"][str(item_hash_link)]["description"] + decision_text = Text.assemble(f"[{decision}] {description}", style="yellow") + additional_infos.append(Text.assemble("\nScheduler: ", decision_text)) + instance = Text.assemble( "Item Hash ↓\t Name: ", name, @@ -877,6 +888,7 @@ async def _show_instances(messages: builtins.list[InstanceMessage]): created_at, payer, cost, + *additional_infos, ) # 2nd Column From 165bdcd168e6e521e5ddb0d5fba25d0fdca3b403 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Wed, 19 Mar 2025 18:23:40 +0100 Subject: [PATCH 2/2] feat(instances): display information from CRN on instance listing --- src/aleph_client/commands/instance/__init__.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/aleph_client/commands/instance/__init__.py b/src/aleph_client/commands/instance/__init__.py index 86b012b6..2e140de9 100644 --- a/src/aleph_client/commands/instance/__init__.py +++ b/src/aleph_client/commands/instance/__init__.py @@ -875,6 +875,22 @@ async def _show_instances(messages: builtins.list[InstanceMessage]): decision_text = Text.assemble(f"[{decision}] {description}", style="yellow") additional_infos.append(Text.assemble("\nScheduler: ", decision_text)) + async with aiohttp.ClientSession() as session: + request = await session.get(f'{info["crn_url"]}/about/executions/records') + running_instances = await request.json() + for running_instance in running_instances: + if running_instance.get("vm_hash") == item_hash_link.plain: + additional_infos.append( + Text.assemble( + "\nCRN: ", Text.assemble(f"started at {running_instance['time_started']}", style="blue") + ) + ) + break + else: + additional_infos.append( + Text.assemble("\nCRN: ", Text.assemble("not listed on the CRN", style="orange1")) + ) + instance = Text.assemble( "Item Hash ↓\t Name: ", name,