Every reachable machine ended up in virt-manager, not just the ones hosting VMs. The probe ran « for n in $(sudo virsh list --all --name 2>/dev/null) »: with no virsh, the command substitution is empty, the loop body never runs and the snippet exits 0 with no output — indistinguishable from « QEMU is here, it just has no VM ». Both read as a libvirt host. The probe now states it outright, « LIBVIRT<TAB>yes|no » as its first line, so the two cases separate: a machine WITHOUT QEMU is skipped, a machine with QEMU and no VM is still offered — that is where one would create some. Verified against the real snippet: this host answers « yes » plus its two VMs, and with virsh out of PATH it answers « no ». Then on a simulated fleet, only vm-avec-qemu and vm-qemu-sans-vm are proposed; the plain dev VM and the unreachable one are not. Also: the ~/.ssh/config blocks were missing IdentityFile. Every entry now names the private key it needs — the one cloud-init injected, or the one just deployed — with IdentitiesOnly yes beside it. Without that flag IdentityFile ADDS to the agent's identities instead of replacing them, and a slightly full agent hits « Too many authentication failures » before reaching the right key. The .pub suffix is stripped: IdentityFile wants the private half. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| database_manager.py | ||
| kdbx_manager.py | ||
| logo_ascii.txt | ||
| migration_form.py | ||
| qemu_deploy_form.py | ||
| qemu_install_monitor.py | ||
| README.base.md | ||
| README.fr.md | ||
| README.md | ||
| source_todo.sh | ||
| todo.json | ||
| todo.py | ||
| todo_example.json | ||
| todo_file_browser.py | ||
| todo_i18n.py | ||
| todo_prefs.py | ||
| todo_telemetry.py | ||
| todo_upgrade.py | ||
| version_manager.py | ||
TODO is an assistant robot to use ERPLibre
Execute it with ./script/todo/todo.py or make todo.
For a new project, copy todo_example.json to private/todo/todo_override.json | private/todo/todo_override_private.json and edit it.