Создание машины: диск больше свободного места создаётся только с подтверждением, в шаге «Мощность» видно свободное место; раньше установка падала с ошибкой virt-install
Этот коммит содержится в:
@@ -196,3 +196,27 @@ def test_uploader_collects_file_before_disabling_input():
|
||||
assert "input.disabled = active" in uploader
|
||||
assert uploader.index("new FormData(form)") < uploader.index("setActive(true)")
|
||||
assert "xhr.send(data)" in uploader
|
||||
|
||||
|
||||
def test_vm_create_disk_bigger_than_free_space_needs_confirmation(logged_in, data_dirs, monkeypatch):
|
||||
"""virt-install отказывал с английской ошибкой; теперь панель предупреждает сама и создаёт только с подтверждением."""
|
||||
iso = data_dirs["iso"] / "smk.iso"
|
||||
iso.write_bytes(b"iso")
|
||||
started = []
|
||||
monkeypatch.setattr(app, "start_background_operation", lambda operation, cmd: started.append(cmd))
|
||||
monkeypatch.setattr(app.network_core, "create_nat_network", lambda: {})
|
||||
monkeypatch.setattr(app, "images_free_bytes", lambda: 25 * 1024 ** 3)
|
||||
form = {"name": "smk", "memory": 4096, "vcpus": 2, "disk_size": 40, "iso_path": str(iso), "source_type": "iso", "network_mode": "nat"}
|
||||
|
||||
page = logged_in.get("/vm/create").text
|
||||
assert "Свободно на сервере: 25" in page and 'name="allow_overcommit"' not in page
|
||||
response = logged_in.post("/vm/create", data=form)
|
||||
assert response.status_code == 400 and started == []
|
||||
assert "Диск на 40 ГБ больше, чем свободно на сервере" in response.text and 'name="allow_overcommit"' in response.text
|
||||
|
||||
response = logged_in.post("/vm/create", data={**form, "allow_overcommit": "1"}, follow_redirects=False)
|
||||
assert response.status_code == 303, response.text[:300]
|
||||
assert started[0][-2:] == ["--check", "disk_size=off"]
|
||||
|
||||
response = logged_in.post("/vm/create", data={**form, "name": "small", "disk_size": 20}, follow_redirects=False)
|
||||
assert response.status_code == 303 and "--check" not in started[1]
|
||||
|
||||
Ссылка в новой задаче
Block a user