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 = {
:
@@ -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