Удаление машины больше не стирает вставленный установочный ISO: вместо --remove-all-storage удаляются только диски машины из папки машин
Этот коммит содержится в:
@@ -55,16 +55,44 @@ def test_vm_action_success_redirects_without_error(logged_in, data_dirs, monkeyp
|
||||
|
||||
|
||||
def test_vm_delete_undefines_uefi_machines(logged_in, data_dirs, monkeypatch):
|
||||
import core
|
||||
|
||||
calls = recording(monkeypatch, app)
|
||||
core_calls = recording(monkeypatch, core)
|
||||
disk = data_dirs["images"] / "web01.qcow2"
|
||||
disk.write_bytes(b"QFI\xfb")
|
||||
response = logged_in.post("/vm/web01/delete", follow_redirects=False)
|
||||
assert response.headers["location"].startswith("/?message=")
|
||||
assert find(calls, "virsh", "destroy", "web01")
|
||||
undefine = find(calls, "virsh", "undefine", "web01")[0]
|
||||
assert "--nvram" in undefine and "--remove-all-storage" in undefine and "--snapshots-metadata" in undefine
|
||||
undefine = find(core_calls, "virsh", "undefine", "web01")[0]
|
||||
assert "--nvram" in undefine and "--snapshots-metadata" in undefine
|
||||
assert not disk.exists() and find(core_calls, "virsh", "pool-refresh", "virtuality-images")
|
||||
|
||||
|
||||
def test_vm_delete_keeps_installer_iso_and_foreign_disks(logged_in, data_dirs, monkeypatch):
|
||||
"""--remove-all-storage удалял вставленный ISO: загруженные образы пропадали вместе с машиной."""
|
||||
import core
|
||||
|
||||
iso = data_dirs["iso"] / "smk-server-_1.iso"
|
||||
iso.write_bytes(b"ISO")
|
||||
disk = data_dirs["images"] / "web01.qcow2"
|
||||
disk.write_bytes(b"QFI\xfb")
|
||||
foreign = data_dirs["disk_images"] / "shared.raw"
|
||||
foreign.write_bytes(b"raw")
|
||||
listing = f" Type Device Target Source\n----\n file disk vda {disk}\n file disk vdb {foreign}\n file cdrom sda {iso}\n"
|
||||
recording(monkeypatch, app)
|
||||
core_calls = recording(monkeypatch, core, [(["virsh", "domblklist"], conftest.fake_result(listing))])
|
||||
response = logged_in.post("/vm/web01/delete", follow_redirects=False)
|
||||
assert not disk.exists() and iso.exists() and foreign.exists()
|
||||
assert "--remove-all-storage" not in find(core_calls, "virsh", "undefine", "web01")[0]
|
||||
assert str(foreign) in unquote(response.headers["location"])
|
||||
|
||||
|
||||
def test_vm_delete_failure_is_reported(logged_in, data_dirs, monkeypatch):
|
||||
recording(monkeypatch, app, [(["virsh", "undefine"], conftest.fake_result(ok=False, stderr="error: Requested operation is not valid: cannot undefine domain with nvram"))])
|
||||
import core
|
||||
|
||||
recording(monkeypatch, app)
|
||||
recording(monkeypatch, core, [(["virsh", "undefine"], conftest.fake_result(ok=False, stderr="error: Requested operation is not valid: cannot undefine domain with nvram"))])
|
||||
response = logged_in.post("/vm/web01/delete", follow_redirects=False)
|
||||
assert response.headers["location"].startswith("/vm/web01?error=")
|
||||
|
||||
@@ -73,9 +101,9 @@ def test_vm_delete_stops_paused_machine_first(logged_in, data_dirs, monkeypatch)
|
||||
import core
|
||||
|
||||
calls = recording(monkeypatch, app)
|
||||
recording(monkeypatch, core, [(["virsh", "domstate"], conftest.fake_result("paused"))])
|
||||
core_calls = recording(monkeypatch, core, [(["virsh", "domstate"], conftest.fake_result("paused"))])
|
||||
logged_in.post("/vm/web01/delete", follow_redirects=False)
|
||||
assert find(calls, "virsh", "destroy", "web01") and find(calls, "virsh", "undefine", "web01")
|
||||
assert find(calls, "virsh", "destroy", "web01") and find(core_calls, "virsh", "undefine", "web01")
|
||||
|
||||
|
||||
def test_vm_delete_waits_for_running_task(logged_in, data_dirs, monkeypatch):
|
||||
|
||||
Ссылка в новой задаче
Block a user