Symptôme : ~/.ssh/config (et l'install) pointaient sur .31 alors que la VM était joignable sur .32 -> SSH KO (« No route to host »), console OK. Cause : au boot, une image cloud demande d'abord une IP DHCP avec son hostname par défaut (« ubuntu ») -> 1er bail ; puis cloud-init fixe le vrai hostname et le client redemande -> 2e bail (IP différente). La MÊME MAC a donc DEUX baux ; le 1er (« ubuntu ») devient périmé. Le code retenait aveuglément le PREMIER IPv4 de « virsh domifaddr » = le bail périmé. Plus visible sur s390x/arm64 émulé (boot lent -> les deux baux coexistent). Fix : - todo._qemu_vm_ip : renvoie en priorité l'IP dont le bail dnsmasq porte le hostname == nom de la VM (bail définitif), sinon une IP JOIGNABLE (sshd up, test TCP:22), sinon le dernier bail — jamais le 1er au hasard. Attente portée à 10 min (boot émulé lent). Helpers _qemu_lease_candidates / _qemu_ip_reachable / _qemu_lease_ip_for_host. - deploy_qemu.wait_for_ip : même logique (IP joignable, sinon la plus récente) pour l'IP affichée en fin de déploiement standalone. Validé sur la VM s390x réelle : candidats [.31, .32] -> choisit .32 (hostname-match + seule joignable) ; ssh via alias OK. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| database_manager.py | ||
| kdbx_manager.py | ||
| logo_ascii.txt | ||
| 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_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.