Format docker stats output
This commit is contained in:
@@ -100,16 +100,36 @@ async def dstats(msg: Message):
|
|||||||
await msg.answer("📈 Stats\n\n(no data)", reply_markup=docker_kb)
|
await msg.answer("📈 Stats\n\n(no data)", reply_markup=docker_kb)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
alias_by_name = {v: k for k, v in DOCKER_MAP.items()}
|
||||||
rows = []
|
rows = []
|
||||||
for line in lines:
|
for line in lines:
|
||||||
parts = line.split("|")
|
parts = line.split("|")
|
||||||
if len(parts) != 5:
|
if len(parts) != 5:
|
||||||
continue
|
continue
|
||||||
name, cpu, mem, net, blk = parts
|
name, cpu, mem, net, blk = [p.strip() for p in parts]
|
||||||
rows.append(f"{name}: CPU {cpu}, MEM {mem}, NET {net}, IO {blk}")
|
display = alias_by_name.get(name, name)
|
||||||
|
try:
|
||||||
|
cpu_val = float(cpu.strip("%"))
|
||||||
|
except ValueError:
|
||||||
|
cpu_val = 0.0
|
||||||
|
rows.append((cpu_val, display, cpu, mem, net, blk))
|
||||||
|
|
||||||
body = "\n".join(rows) if rows else "(no data)"
|
if not rows:
|
||||||
await msg.answer(f"📈 **Docker stats**\n```\n{body}\n```", reply_markup=docker_kb, parse_mode="Markdown")
|
await msg.answer("📈 Stats\n\n(no data)", reply_markup=docker_kb)
|
||||||
|
return
|
||||||
|
|
||||||
|
rows.sort(key=lambda r: r[0], reverse=True)
|
||||||
|
header = f"{'NAME':<18} {'CPU':>6} {'MEM':>18} {'NET':>16} {'IO':>16}"
|
||||||
|
formatted = [header]
|
||||||
|
for _cpu_val, name, cpu, mem, net, blk in rows:
|
||||||
|
formatted.append(f"{name[:18]:<18} {cpu:>6} {mem:>18} {net:>16} {blk:>16}")
|
||||||
|
|
||||||
|
body = "\n".join(formatted)
|
||||||
|
await msg.answer(
|
||||||
|
f"📈 **Docker stats**\n```\n{body}\n```",
|
||||||
|
reply_markup=docker_kb,
|
||||||
|
parse_mode="Markdown",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@dp.message(F.text, F.func(lambda msg: msg.from_user and msg.from_user.id in LOG_FILTER_PENDING))
|
@dp.message(F.text, F.func(lambda msg: msg.from_user and msg.from_user.id in LOG_FILTER_PENDING))
|
||||||
|
|||||||
Reference in New Issue
Block a user