1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 19:26:48 +00:00
webvirtcloud/vrtManager/tests
catborise 7f8e5cd618 feat(instances): move a VM's disk to another storage pool of its host
The Disks tab has a Move button for each disk: it opens a dialog to
choose another storage pool of the same host, and the move runs as a job.

- Running or paused VM: libvirt copies the disk with a block job
  (TRANSIENT_JOB, as the VM is persistent) into a file it creates in the
  pool, then pivots. The pivot names the copy in both the running and
  the next start's definition.
- Shut-off VM: the volume is copied into the pool and the copy named in
  the definition.

The source file goes then, unless a VM or volume of any compute uses it
(shared storage holds it for every host that mounts it), a compute
cannot be read, or the delete fails: the job lists such a file under
"Left behind", and the move stands.

A disk moves when:
- the VM is defined and running, paused or shut off, without snapshots,
  a saved state or a block job;
- the disk is a writable, unshared, unencrypted raw or qcow2 file of a
  storage pool, without a backing file, and the same file in both
  definitions;
- the pool keeps disk files, is another directory, and has no file of
  that name (libvirt would write into it).
Otherwise it is refused with the reason before anything changes.

The job claims the VM and the file's name in both pools. A cancel aborts
the block copy, and ends the job cancelled once the VM is back on its
file. A failed move deletes the copy it made, unless a definition names
it (a lost reply after the pivot); a file there before the copy began is
never deleted. Recovery after a stopped worker
ends a copy left mirroring, matched by its destination, and reads the
outcome from the definitions.

Superusers only, like the other disk edits.
2026-10-29 21:30:26 +03:00
..
__init__.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_agent_access.py feat(instances): a running VM gets its root password and SSH key through its guest agent 2026-10-25 15:37:37 +03:00
test_change_network.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_clone_nvram.py feat(instances): VM clone runs as a job 2026-10-15 09:28:43 +03:00
test_cloud_init_seed.py feat(instances): a new VM can get a cloud-init seed with its hostname and SSH keys 2026-10-25 19:57:15 +03:00
test_connection.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_connection_threads.py feat(operations): the job worker 2026-10-14 23:27:57 +03:00
test_console_setters.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_device_edits.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_disk_copy_migration.py feat(instances): migrate a VM with its disks copied into pools of the destination 2026-10-29 19:46:31 +03:00
test_disk_move.py feat(instances): move a VM's disk to another storage pool of its host 2026-10-29 21:30:26 +03:00
test_external_snapshots.py feat(instances): a new VM can get a cloud-init seed with its hostname and SSH keys 2026-10-25 19:57:15 +03:00
test_host_reads.py fix(interfaces): interface changes roll back as one, a running one is not deleted, each interface is read once 2026-10-29 10:09:40 +03:00
test_instance_getters.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_interface_addresses.py fix(instances): Guest Info says when the agent fails and keeps what it answered 2026-10-26 13:49:37 +03:00
test_iso_media.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_live_clone.py fix(instances): a quiesced snapshot or live clone stops early on a silent guest agent 2026-10-25 17:42:01 +03:00
test_live_connection.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_live_nvram.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_migration.py feat(instances): migrate a VM with its disks copied into pools of the destination 2026-10-29 19:46:31 +03:00
test_network_ip.py fix(networks): a network's addresses are read as libvirt writes them, and its changes keep each other 2026-10-29 10:09:14 +03:00
test_persistent_edits.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_read_cache.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_remove_nvram.py feat(instances): migrate a VM with its disks copied into pools of the destination 2026-10-29 19:46:31 +03:00
test_resize_disk.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_rwlock.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_usage.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_util.py test: each app keeps its tests in a tests package 2026-10-12 15:17:30 +03:00
test_volume_in_use.py fix(storages): keep volumes a VM still needs 2026-10-13 09:13:02 +03:00
test_xml_safety.py feat(instances): VM clone runs as a job 2026-10-15 09:28:43 +03:00
test_xpath_values.py fix(nwfilters): a filter in use is not deleted, and a change replaces no other filter 2026-10-29 10:10:17 +03:00