diff --git a/networks/tests/test_audit_rows.py b/networks/tests/test_audit_rows.py index ef133e61..cc2cbe77 100644 --- a/networks/tests/test_audit_rows.py +++ b/networks/tests/test_audit_rows.py @@ -86,8 +86,6 @@ class NetworkRowTests(TestCase): self.client.post(url, {"create": "", "name": "audit-net", "forward": "nat", "subnet": "198.51.100.0/24", "dhcp4": "on"}) self.client.post(url, {"create": "", "name": "bad name!", "forward": "nat"}) # invalid form - self.client.post(url, {"create": "", "name": "lab", "forward": "nat", "subnet": "203.0.113.0/24"}) - [first, second] = rows() - self.assertEqual(first, ("Network audit-net: add", True)) - self.assertFalse(second[1]) - self.assertTrue(second[0].startswith("Network lab: add: "), second[0]) + response = self.client.post(url, {"create": "", "name": "lab", "forward": "nat", "subnet": "203.0.113.0/24"}) + self.assertIn("Network pool name already in use", [str(m) for m in get_messages(response.wsgi_request)]) + self.assertEqual(rows(), [("Network audit-net: add", True), ("Network lab: add: name already in use", False)]) diff --git a/networks/views.py b/networks/views.py index de5a32cd..f194f26e 100644 --- a/networks/views.py +++ b/networks/views.py @@ -6,7 +6,7 @@ from django.shortcuts import get_object_or_404, render from django.urls import reverse from django.utils.translation import gettext_lazy as _ from libvirt import libvirtError -from logs.audit import audit +from logs.audit import audit, failed from vrtManager.network import network_size, wvmNetwork, wvmNetworks from networks.forms import AddNetPool @@ -40,9 +40,10 @@ def networks(request, compute_id): form = AddNetPool(request.POST) if form.is_valid(): data = form.cleaned_data - if data["name"] in networks: + if data["name"] in [net["name"] for net in networks]: msg = _("Network pool name already in use") messages.error(request, msg) + failed(request, compute, f"Network {data['name']}", "add", "name already in use") errors = True if ( data["forward"] in ["bridge", "macvtap"] diff --git a/storages/tests/test_audit_rows.py b/storages/tests/test_audit_rows.py index 7bb1e8b2..f834b30e 100644 --- a/storages/tests/test_audit_rows.py +++ b/storages/tests/test_audit_rows.py @@ -161,14 +161,13 @@ class PoolAndVolumeRowTests(TransactionTestCase): url = reverse("storages", args=[self.compute.pk]) self.client.post(url, {"create": "1", "name": "audit-pool", "stg_type": "dir", "target": "/srv/audit-pool"}) self.client.post(url, {"create": "1", "name": "bad name!", "stg_type": "dir", "target": "/srv/x"}) # invalid - from libvirt import libvirtError - - # libvirt refuses a name in use (the page's own name check compares names with dicts) - self.pools.create_storage.side_effect = libvirtError("pool 'default' already exists") + self.pools.get_storages_info.return_value = [{"name": "default"}] + self.pools.create_storage.reset_mock() self.client.post(url, {"create": "1", "name": "default", "stg_type": "dir", "target": "/srv/default"}) + self.pools.create_storage.assert_not_called() self.assertEqual(rows(), [ ("Storage pool audit-pool: add", True), - ("Storage pool default: add: pool 'default' already exists", False), + ("Storage pool default: add: name already in use", False), ]) def test_volume_add_and_delete(self): diff --git a/storages/views.py b/storages/views.py index 20e49ef3..57acc98c 100644 --- a/storages/views.py +++ b/storages/views.py @@ -12,7 +12,7 @@ from django.utils.translation import gettext_lazy as _ from libvirt import libvirtError from operations import claims, jobs from operations.utils import busy_message -from logs.audit import audit +from logs.audit import audit, failed from vrtManager.util import OperationError from vrtManager.storage import wvmStorage, wvmStorages @@ -80,9 +80,10 @@ def storages(request, compute_id): form = AddStgPool(request.POST) if form.is_valid(): data = form.cleaned_data - if data["name"] in storages: + if data["name"] in [stg["name"] for stg in storages]: msg = _("Pool name already use") messages.error(request, msg) + failed(request, compute, f"Storage pool {data['name']}", "add", "name already in use") errors = True if data["stg_type"] == "rbd": if not data["secret"]: