Suite du nettoyage. Le tri des entrées ~/.ssh/config comparait lui aussi le NOM aux noms de domaines : après le renommage de la VM, son alias « erplibre-ubuntu-2404 » ne correspondait plus à rien et a été effacé, alors qu'il menait à une machine en marche. Une entrée est conservée si son adresse est celle d'un domaine vivant, si elle porte un rebond — donc écrite pour une VM que virsh ne verra jamais — ou si son nom est une VM de l'hôte Proxmox. Et l'écran nomme ce qu'il garde, comme pour les fichiers. Même racine pour l'adresse affichée : « virsh domifaddr --source arp » remonte les passerelles des ponts, et le repli « la dernière candidate » y tombait dès que le bail portait l'ancien nom d'hôte. La VM renommée était annoncée en 192.168.122.1 au lieu de 192.168.123.170. On préfère désormais le bail, puis l'agent, puis l'ARP, et les adresses de l'hôte sont écartées. --- EN --- More of the same cleanup. Sorting ~/.ssh/config entries also compared the NAME against domain names: after the VM was renamed, its alias "erplibre-ubuntu-2404" matched nothing and was deleted, though it led to a running machine. An entry is kept if its address belongs to a live domain, if it carries a jump — hence written for a VM virsh will never see — or if its name is a VM of the Proxmox host. And the screen names what it keeps, as it does for files. Same root for the displayed address: "virsh domifaddr --source arp" returns the bridges' gateways, and falling back to "the last candidate" landed there as soon as the lease carried the old hostname. The renamed VM was announced as 192.168.122.1 instead of 192.168.123.170. The lease now wins over the agent, which wins over ARP, and the host's own addresses are excluded. Assisted-by: Claude Opus 5 |
||
|---|---|---|
| .. | ||
| auto_ask.py | ||
| database_manager.py | ||
| deploy_form_lib.py | ||
| deploy_form_plan.py | ||
| kdbx_manager.py | ||
| logo_ascii.txt | ||
| migration_form.py | ||
| migration_stats.py | ||
| migration_status.py | ||
| migration_status_tui.py | ||
| proxmox_deploy_form.py | ||
| proxmox_menu.py | ||
| qemu_access.py | ||
| qemu_deploy.py | ||
| qemu_deploy_form.py | ||
| qemu_hardware.py | ||
| qemu_install.py | ||
| qemu_install_monitor.py | ||
| qemu_manage.py | ||
| qemu_menu.py | ||
| README.base.md | ||
| README.fr.md | ||
| README.md | ||
| source_todo.sh | ||
| textual_setup.py | ||
| 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.
The mail/ package is the mail client reachable from Assistant > Mail:
several IMAP/SMTP accounts, a local cache, and a Textual TUI. See
../../doc/EMAIL.md.
Where the code lives
todo.py carries the menus and the general helpers. Everything around a
single subject sits in its own file, and the whole thing is assembled by
mixins on the TODO class — one file, one subject, its header states its
boundary.
| File | What it owns |
|---|---|
todo.py |
the menus, the configuration, the general helpers |
qemu_menu.py |
the QEMU/KVM menu, the image catalogue, the statistics |
qemu_deploy.py |
deciding then running a deployment |
qemu_install.py |
the recipes run inside a VM |
qemu_manage.py |
lifecycle, disks, hardware, cleanup, addresses |
qemu_access.py |
SSH, tunnels, consoles, Android emulator |
proxmox_menu.py |
the same, on a REMOTE Proxmox VE host |
The two deployment forms — libvirt here, Proxmox over there — ask the same questions, so they share a foundation rather than each holding a copy:
| File | What it owns |
|---|---|
deploy_form_lib.py |
pure logic (sizes, plan, totals, spec), the shared CSS, the resource-row factory, the progress view |
deploy_form_plan.py |
the plan's gestures: overrides, locks, copies, renaming, free values |
qemu_deploy_form.py |
what QEMU/KVM adds: desktops, tools, branches, install profiles |
proxmox_deploy_form.py |
what Proxmox adds: host, storage, bridge, VMID, address |
A form inherits PlanMixin and provides three hooks: which presets each
resource offers, the name a VM would fall back to, and what a lock freezes.
test_todo_deploy_form_lib.py fails if a form redefines a gesture the
foundation already carries — that is what keeps the architecture from drifting
back into two copies.