1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 19:26:48 +00:00
webvirtcloud/instances/templates
catborise 02412b7ea5 feat(jobs): deleting a VM is a job that recovery finishes
The delete ran in the request: undefine, then the VM's record, then its
disk files. A request that died in between (a gunicorn worker past its
timeout, OOM, a restart), or a database write that failed after the
undefine, left a record that later showed as removed outside the panel,
and the disk files the user asked to delete were never deleted.

Deleting a VM is now an instance.delete job. It holds the compute
exclusively, as the request did, so no other VM attaches a file it is
about to delete. The job chooses the files before it stops the VM (a host
that cannot be checked still stops nothing) and records them first. It
then stops and undefines the VM, removes its record, and deletes the
files, each with its own Logs row. Recovery decides from libvirt: a VM
still on its host means the delete failed; a VM gone means libvirt did
it, so recovery removes the record and deletes the recorded files that
are still there.

The page queues the job and returns to the VM page, where the job panel
follows it and opens the VM list when it ends; disks that were kept are
the result's warning. The API's delete answers 202 with the job and
needs a submission_key. backing_path moves to wvmConnect, as recovery
has no domain to ask.
2026-11-06 09:49:31 +03:00
..
instances feat(jobs): deleting a VM is a job that recovery finishes 2026-11-06 09:49:31 +03:00
add_instance_cdrom.html feat(instances): a CD-ROM is added on the bus chosen, with its ISO 2026-11-01 16:27:39 +03:00
add_instance_network_block.html refactor(instances): the VM page's scripts load from static files 2026-11-02 09:04:29 +03:00
add_instance_owner_block.html feat(instances): the VM page's add dialogs in the panel's dialog look 2026-10-31 18:35:09 +03:00
add_instance_volume.html refactor(instances): the VM lists' scripts load from static files 2026-11-02 09:35:07 +03:00
allinstances.html perf(instances): VM lists read each host once, not three calls a VM 2026-11-04 20:54:11 +03:00
allinstances_index_grouped.html refactor(instances): the VM lists' scripts load from static files 2026-11-02 09:35:07 +03:00
allinstances_index_nongrouped.html feat(instances): the VM list on Bootstrap's pills, badges and menus, its actions by the user's rights 2026-10-28 13:55:46 +03:00
create_flavors.html feat(templates): every confirmation asks in the page's own dialog 2026-10-31 20:44:39 +03:00
create_flavors_reply.html fix(instances): adding or deleting a flavor keeps the unfinished VM form 2026-10-24 11:12:07 +03:00
create_inst_block.html feat(instances): the VM list on Bootstrap's pills, badges and menus, its actions by the user's rights 2026-10-28 13:55:46 +03:00
create_instance_w1.html refactor(instances): the VM create pages' scripts load from static files 2026-11-02 09:26:39 +03:00
create_instance_w2.html refactor(instances): the VM create pages' scripts load from static files 2026-11-02 09:26:39 +03:00
create_presets.html fix(instances): adding or deleting a flavor keeps the unfinished VM form 2026-10-24 11:12:07 +03:00
create_steps.html refactor(templates): Bootstrap's components instead of the panel's own CSS for capacity, steps and disclosures 2026-10-27 17:05:03 +03:00
instance.html refactor(instances): the VM page's scripts load from static files 2026-11-02 09:04:29 +03:00
instance_actions.html refactor(instances): the VM lists' scripts load from static files 2026-11-02 09:35:07 +03:00
instance_name_cell.html feat(instances): the VM list on Bootstrap's pills, badges and menus, its actions by the user's rights 2026-10-28 13:55:46 +03:00
instance_state.html feat(instances): the VM list on Bootstrap's pills, badges and menus, its actions by the user's rights 2026-10-28 13:55:46 +03:00