diff --git a/VERSION b/VERSION index 42de7df..cce16a2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.5.43-beta +0.5.44-beta diff --git a/server-up/app.py b/server-up/app.py index 2c9aaab..e03b2fe 100644 --- a/server-up/app.py +++ b/server-up/app.py @@ -1392,9 +1392,13 @@ def api_networks(): entry["next_ip"] = networks.next_free_ip(n, _reserved_ips()) out.append(entry) gedetecteerd = networks.detect_host_networks() - # Al geconfigureerde subnetten niet nog een keer voorstellen. + # Gedetecteerde netwerken blijven altijd staan, ook als er al een netwerk op + # dat subnet bestaat: je kunt er prima een tweede aanmaken met een andere + # range, en de gegevens zijn sowieso handig om te kunnen naslaan. Ze worden + # alleen gemarkeerd als 'al toegevoegd'. bestaand = {n.get("subnet") for n in defined if isinstance(n, dict)} - voorstellen = [n for n in gedetecteerd["networks"] if n["subnet"] not in bestaand] + voorstellen = [{**n, "configured": n["subnet"] in bestaand} + for n in gedetecteerd["networks"]] return jsonify(networks=out, detected=voorstellen, detect_error=gedetecteerd.get("error", ""), diff --git a/server-up/templates/index.html b/server-up/templates/index.html index 2699b42..cb9324e 100644 --- a/server-up/templates/index.html +++ b/server-up/templates/index.html @@ -910,7 +910,8 @@ tailwind.config = {
- Gebruiken + Gebruiken
:
@@ -926,6 +927,12 @@ tailwind.config = {

+ +

+ + +

diff --git a/server-up/translations/en.json b/server-up/translations/en.json index 03e39ef..03db41f 100644 --- a/server-up/translations/en.json +++ b/server-up/translations/en.json @@ -239,5 +239,7 @@ "to": "to", "range_ruim": "covers all", "range_krap": "fits inside", - "range_count": "{count} addresses" + "range_count": "{count} addresses", + "already_added": "already added", + "detect_empty": "No network with a default route was found on this server. Fill in the details below manually." } diff --git a/server-up/translations/nl.json b/server-up/translations/nl.json index 3601e93..b84aa8b 100644 --- a/server-up/translations/nl.json +++ b/server-up/translations/nl.json @@ -239,5 +239,7 @@ "to": "tot", "range_ruim": "dekt alles", "range_krap": "past binnen", - "range_count": "{count} adressen" + "range_count": "{count} adressen", + "already_added": "al toegevoegd", + "detect_empty": "Er is geen netwerk met een default route gevonden op deze server. Vul de gegevens hieronder handmatig in." } diff --git a/tests/test_network_detect.py b/tests/test_network_detect.py index 8e38041..dc12e52 100644 --- a/tests/test_network_detect.py +++ b/tests/test_network_detect.py @@ -349,3 +349,31 @@ def test_range_endpoint(client): d = r.get_json() assert d["ok"] is True assert d["options"][0]["cidr"] == "10.0.20.192/26" + + +def test_gedetecteerd_netwerk_blijft_zichtbaar_na_toevoegen(client, monkeypatch): + """Een al geconfigureerd subnet werd uit de suggesties gefilterd, waardoor + het hele 'gevonden op deze server'-blok verdween zodra je het netwerk had + aangemaakt. Nu blijft het staan, gemarkeerd als al toegevoegd.""" + from conftest import login + from core import networks as nw + csrf = login(client) + monkeypatch.setattr(nw, "detect_host_networks", lambda force=False: { + "networks": [{"interface": "ens18", "subnet": "10.0.20.0/24", + "gateway": "10.0.20.1", "suggested_range": "10.0.20.240/28", + "driver": "macvlan", "name": "lan"}], "error": ""}) + monkeypatch.setattr(nw, "exists", lambda naam: False) + monkeypatch.setattr(nw, "create", lambda net: (True, "ok")) + monkeypatch.setattr(nw, "used_ips", lambda naam: set()) + + assert client.get("/api/networks").get_json()["detected"][0]["configured"] is False + + client.post("/api/networks", + json={"name": "lan", "driver": "macvlan", "parent": "ens18", + "subnet": "10.0.20.0/24", "gateway": "10.0.20.1", + "ip_range": "10.0.20.240/28"}, + headers={"X-CSRF-Token": csrf}) + + detected = client.get("/api/networks").get_json()["detected"] + assert len(detected) == 1, "suggestie mag niet verdwijnen" + assert detected[0]["configured"] is True