1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 19:26:48 +00:00
webvirtcloud/instances/tests
catborise 51d24fce30 feat(instances): migrate a VM with its disks copied into pools of the destination
A migration needed every disk on storage both hosts share: it was refused
when the destination lacked a disk file, and a file of the same name
there was taken for the VM's own disk.

The Migrate tab now lists the VM's disk files for the chosen destination.
For each disk it offers the destination's pools that keep disk files
(directory, filesystem and NFS pools). A disk on storage both hosts share
can also stay where it is.

A directory counts as shared when both hosts have it as a storage pool
and a marker file created on the source exists on the destination. A
directory the probe cannot tell is never taken as shared.

libvirt copies the chosen disks during the migration: migrate3 with
NON_SHARED_DISK for those targets, and destination and persistent
definitions naming the new paths, where libvirt creates the files.

- A shut-off VM is started paused for the copy and shut off on the
  destination; its CPUs never run. Its UEFI variables are copied first,
  as the destination would start from the firmware's template. If the
  migration fails, the VM is shut off on the source again.
- Refused before anything changes, each disk with its reason:
  - a disk neither shared nor given a pool, also one only the next
    start's definition has;
  - CD-ROM images, read-only or encrypted disks, formats other than raw
    and qcow2, and disks with a backing file;
  - a pool that is not of disk files, or that has a file of that name,
    which libvirt would reuse and overwrite;
  - two disks copied to one file.
- The job claims each copy's name in its pool, and the source volume.
- A failed or cancelled migration deletes the copies libvirt made, and
  the UEFI variables copy, unless a VM on the destination has them.
- The source files stay and are named in the log. With "Delete the
  source files of copied disks" they go, except one another VM or volume
  uses; a failed delete is logged and the migration stands.

The NVRAM sharing check uses the same probe: a shut-off move stops when
it cannot be told, and the source file stays.

The API's migrate call takes disk_pools ({target: pool}) and
delete_source.
2026-10-29 19:46:31 +03:00
..
js feat(interfaces): the interface pages on Bootstrap's cards, tables and dialogs 2026-10-29 10:09:52 +03:00
__init__.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
create_page.py fix(instances): a new VM's CPU is a mode or a model the host offers, checked by libvirt 2026-10-29 11:17:38 +03:00
livetest.py docs: a running VM can be cloned 2026-10-16 16:52:38 +03:00
test_addresses.py fix(instances): the IP search asks a guest agent with a timeout 2026-10-25 16:15:18 +03:00
test_api_parity.py fix(api): VM API answers as the VM pages do 2026-10-26 17:47:18 +03:00
test_audit_rows.py feat(logs): every VM operation writes an audit row the VM's Logs tab finds by UUID 2026-10-24 14:14:53 +03:00
test_change_network.py fix(instances): boot order, root password and NIC changes say what they did 2026-10-26 13:49:37 +03:00
test_change_xml.py fix(instances): the XML dialog keeps the edit and defines only this VM 2026-10-24 20:03:20 +03:00
test_clone_disks.py feat(instances): VM clone runs as a job 2026-10-15 09:28:43 +03:00
test_clone_job.py feat(instances): a running VM can be cloned 2026-10-16 16:52:38 +03:00
test_clone_permission.py feat(instances): VM clone runs as a job 2026-10-15 09:28:43 +03:00
test_cloud_init_create.py fix(instances): a new VM's CPU is a mode or a model the host offers, checked by libvirt 2026-10-29 11:17:38 +03:00
test_console_listener.py feat(instances): PCI devices of the host given to a shut-off VM 2026-10-29 14:20:34 +03:00
test_console_rule.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_console_settings_access.py feat(instances): PCI devices of the host given to a shut-off VM 2026-10-29 14:20:34 +03:00
test_cpu_mode.py fix(instances): a new VM's CPU is a mode or a model the host offers, checked by libvirt 2026-10-29 11:17:38 +03:00
test_create_dialog_cpu.py feat(instances): the new-VM dialog shows what each host has given its VMs 2026-10-25 13:13:40 +03:00
test_create_form_input.py fix(instances): a new VM's CPU is a mode or a model the host offers, checked by libvirt 2026-10-29 11:17:38 +03:00
test_create_instance.py fix(instances): a new VM's CPU is a mode or a model the host offers, checked by libvirt 2026-10-29 11:17:38 +03:00
test_create_job.py fix(instances): a new VM's CPU is a mode or a model the host offers, checked by libvirt 2026-10-29 11:17:38 +03:00
test_create_page_js.py fix(instances): a dependent list on the create pages shows only the latest choice 2026-10-24 12:22:46 +03:00
test_create_rollback.py fix(instances): a new VM's CPU is a mode or a model the host offers, checked by libvirt 2026-10-29 11:17:38 +03:00
test_create_wizard_url.py fix(instances): a dependent list on the create pages shows only the latest choice 2026-10-24 12:22:46 +03:00
test_destroy.py fix(api): VM API answers as the VM pages do 2026-10-26 17:47:18 +03:00
test_detail_reads.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_detail_unreachable.py feat(operations): jobs page 2026-10-14 23:27:57 +03:00
test_disk_isolation.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_drbd_target.py fix(instances): a VM's DRBD status counts only its own resources 2026-10-26 13:49:37 +03:00
test_error_handling.py feat(instances): the XML editor shows a change before saving it 2026-10-24 19:40:46 +03:00
test_find_address.py feat(instances): the address search finds a VM by its MAC address too 2026-10-24 22:45:47 +03:00
test_find_address_js.py fix(instances): the address search shows host names as they are 2026-10-25 21:33:41 +03:00
test_gstfsd.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_host_devices.py feat(instances): PCI devices hot-plugged into a running VM 2026-10-29 14:54:36 +03:00
test_index.py feat(tables): tables sort with tablesort, the grouped VM list within each host 2026-10-24 19:02:51 +03:00
test_index_host_alerts.py fix(instances): VM list columns, hosts for viewers, flavor units 2026-10-26 16:14:37 +03:00
test_list_rpc.py fix(instances): the VM list searches its VMs, collapses its hosts together and says when it is empty 2026-10-27 22:40:49 +03:00
test_list_unreachable.py 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
test_live_clone.py docs: a running VM can be cloned 2026-10-16 16:52:38 +03:00
test_live_create.py feat(instances): VM create runs as a job, also in the API 2026-10-15 09:28:43 +03:00
test_live_dataloss.py test(instances): the live suite expects vCPUs to wait for a shut-off VM 2026-10-27 13:53:06 +03:00
test_live_disk_resize.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_live_guest.py docs: snapshot create and revert run as jobs 2026-10-15 14:21:32 +03:00
test_live_iscsi.py test: a LUN of an iSCSI pool attaches live as a block disk 2026-10-18 21:32:52 +03:00
test_live_iso.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_live_jobs.py feat(instances): migrate a VM with its disks copied into pools of the destination 2026-10-29 19:46:31 +03:00
test_live_lvm.py fix(instances): a disk on an LVM pool is not resized, the page says so instead of failing 2026-10-18 21:10:06 +03:00
test_live_snapshots.py feat(instances): external snapshot delete runs as a job 2026-10-14 23:27:57 +03:00
test_live_xml.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_live_xml_effects.py feat(instances): choose VNC or the serial console on the VM page 2026-10-17 19:48:58 +03:00
test_migrate_form.py feat(instances): migration runs as a job 2026-10-16 07:57:02 +03:00
test_migrate_job.py feat(instances): migrate a VM with its disks copied into pools of the destination 2026-10-29 19:46:31 +03:00
test_migration_bookkeeping.py feat(instances): migrate a VM with its disks copied into pools of the destination 2026-10-29 19:46:31 +03:00
test_migration_log.py feat(instances): migrate a VM with its disks copied into pools of the destination 2026-10-29 19:46:31 +03:00
test_missing_fields.py feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00
test_moved_while_waiting.py feat(instances): VM clone runs as a job 2026-10-15 09:28:43 +03:00
test_new_disk_name.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_page_controls.py feat(instances): PCI devices of the host given to a shut-off VM 2026-10-29 14:20:34 +03:00
test_paused_block.py fix(instances): an owner cannot power a VM an administrator paused 2026-10-26 13:49:37 +03:00
test_pending_edits.py feat(instances): PCI devices of the host given to a shut-off VM 2026-10-29 14:20:34 +03:00
test_quota.py feat(instances): PCI devices of the host given to a shut-off VM 2026-10-29 14:20:34 +03:00
test_quota_lock.py fix(instances): the Resize tab changes only what was asked 2026-10-26 13:49:37 +03:00
test_resize_input.py fix(instances): the Resize tab changes only what was asked 2026-10-26 13:49:37 +03:00
test_root_pass.py fix(instances): a timed-out root password or SSH key change says it may still be made 2026-10-25 18:51:56 +03:00
test_security_mutations.py feat(instances): migration runs as a job 2026-10-16 07:57:02 +03:00
test_snapshot_delete_job.py feat(logs): every VM operation writes an audit row the VM's Logs tab finds by UUID 2026-10-24 14:14:53 +03:00
test_snapshot_jobs.py feat(instances): USB devices of the host given to a VM 2026-10-29 13:33:23 +03:00
test_snapshot_views.py feat(instances): PCI devices of the host given to a shut-off VM 2026-10-29 14:20:34 +03:00
test_states.py feat(instances): PCI devices of the host given to a shut-off VM 2026-10-29 14:20:34 +03:00
test_stats_sample.py build: Chart.js 4.5.1 2026-10-17 13:19:43 +03:00
test_table_filter_js.py fix(templates): the list pages search their rows as text, with one script 2026-10-25 23:08:42 +03:00
test_template_flag.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_template_quota.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_template_rules.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_update_console.py feat(instances): choose VNC or the serial console on the VM page 2026-10-17 19:48:58 +03:00
test_views.py docs: snapshot create and revert run as jobs 2026-10-15 14:21:32 +03:00
test_vm_audit_rows.py fix(console): small console settings and page fixes 2026-10-26 20:41:46 +03:00
test_vm_report.py feat(instances): a report of every VM with its addresses and OS, as an Excel file 2026-10-24 22:30:07 +03:00
test_xss.py feat(instances): migrate a VM with its disks copied into pools of the destination 2026-10-29 19:46:31 +03:00