Files
felhom.eu/documentation/audits/storage-identity-2026-10-15/tools/summarize.py
T
admin 3038b23ec7
gates / gates (push) Successful in 6m43s
Storage that knows its physical disks: design draft 16 + spike; R-1074..R-1079; STATUS D10
Spike (read-only probe, tools/physdisk_probe.py): the agent-side walk (partition -> disk, dm/LVM
slaves, loop -> backing file) names the right physical disk for one-disk boxes, two disks, two
partitions of one disk and a pass-through USB bridge; inside a VM (Tester 1) every disk is "unknown".
Today's agent lists whole disks only and calls an empty partition table "data-bearing"; the
controller's Tier-2 "different disk" is st_dev. sys_drive is a folder of mp0 (backup=1), so the
design gives one-disk boxes a separate internal data place outside the whole-guest copy instead.
Draft only; waits on the operator's rulings D1-D6 (16 section 12). 07 section 6.1's stale mp1 cell
corrected. Register 163 -> 169. Scratch loop disk and Tester 1 scratch disk removed.

Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
2026-10-15 20:08:08 +02:00

9 lines
522 B
Python

import json,sys
d=json.load(open(sys.argv[1]))
print(f"# host {d['host']} virt={d['virt']}")
for p in d['places']:
if 'error' in p: print(f"{p['place']:<55} ERROR {p['error']}"); continue
ds=p.get('disks',[])
print(f"{p['place'][:55]:<55} src={p.get('source','')[:40]:<40} -> {','.join(p['physical_disks']) or '-'} [{p['identity']}] {'; '.join(p['why_unknown'])}")
for x in ds: print(f"{'':<8}{x['disk']:<8} {x['vendor'][:10]:<10} {x['model'][:28]:<28} bus={x['bus']:<5} {x['size_gb']}GB via: {x['via']}")