Skip to content

Commit 7234d7a

Browse files
committed
fix(instance/list): Implement missing --json
1 parent 27fce58 commit 7234d7a

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

src/aleph_client/commands/instance/__init__.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
import asyncio
4-
import json
4+
import json as json_lib
55
import logging
66
import shutil
77
from decimal import Decimal
@@ -864,7 +864,25 @@ async def list_instances(
864864
raise typer.Exit(code=1)
865865

866866
execution = await client.instance.get_instance_executions_info(allocations)
867-
await show_instances(messages=instances, allocations=allocations, executions=execution)
867+
868+
if not json:
869+
await show_instances(messages=instances, allocations=allocations, executions=execution)
870+
else:
871+
# Create a single JSON array with one object per instance, combining all related data
872+
instances_data = []
873+
for message in instances:
874+
allocation = allocations.root.get(message.item_hash, None)
875+
execution_info = execution.root.get(message.item_hash, None)
876+
877+
instance_entry = {
878+
"instance": message.model_dump(),
879+
"allocation": allocation.model_dump() if allocation else None,
880+
"execution": execution_info.model_dump() if execution_info else None,
881+
}
882+
instances_data.append(instance_entry)
883+
884+
console = Console()
885+
console.print(json_lib.dumps(instances_data, indent=2, default=str))
868886

869887

870888
@app.command()
@@ -956,7 +974,7 @@ async def logs(
956974
async with VmClient(account, domain) as manager:
957975
try:
958976
async for log in manager.get_logs(vm_id=vm_id):
959-
log_data = json.loads(log)
977+
log_data = json_lib.loads(log)
960978
if "message" in log_data:
961979
echo(log_data["message"])
962980
except aiohttp.ClientConnectorError as e:

0 commit comments

Comments
 (0)