v0.8.03-beta - mappen zonder compose-bestand verdwenen geruisloos
Some checks failed
Deploy server-up (dev) / deploy (push) Has been cancelled
Some checks failed
Deploy server-up (dev) / deploy (push) Has been cancelled
api_stacks sloeg elke map zonder compose-bestand over met een kale continue. Zo'n map dook daarna nergens meer op: niet in de lijst, en de containers die erbij horen belandden onder "handmatig gestart" omdat beheerd op datzelfde compose-bestand afgaat. De interface heeft er wel een weergave voor - rode stip, streepje in plaats van een status, geen knoppen - die door dat continue nooit te zien kon zijn. Ze staan er nu tussen met die waarschuwing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q9eqpADJSRs49SoGGr4NAy
This commit is contained in:
parent
e0d387c499
commit
3300d513a6
4 changed files with 60 additions and 5 deletions
15
CHANGELOG.md
15
CHANGELOG.md
|
|
@ -1,3 +1,18 @@
|
||||||
|
# v0.8.03-beta — Mappen zonder compose-bestand verdwenen geruisloos
|
||||||
|
|
||||||
|
`GET /api/stacks` sloeg elke map zonder compose-bestand over met een kale
|
||||||
|
`continue`. Staat er zo'n map in je stacks-map, dan duikt hij nergens meer op:
|
||||||
|
niet in de lijst, en de containers die erbij horen belanden onder "handmatig
|
||||||
|
gestart" omdat ook `beheerd` op datzelfde compose-bestand afgaat. Je ziet een
|
||||||
|
leeg scherm, en nergens staat waarom.
|
||||||
|
|
||||||
|
De interface hééft er een weergave voor — rode stip, een streepje in plaats van
|
||||||
|
een status, geen knoppen — maar die kon door dat `continue` nooit te zien zijn.
|
||||||
|
Dode weergavecode voor een toestand die de API niet kon opleveren.
|
||||||
|
|
||||||
|
Zulke mappen staan er nu gewoon tussen, mét die waarschuwing. Beter een app die
|
||||||
|
zegt dat er iets mis is dan een app die verdwijnt.
|
||||||
|
|
||||||
# v0.8.02-beta — Koppelingen ónder BASE_DIR
|
# v0.8.02-beta — Koppelingen ónder BASE_DIR
|
||||||
|
|
||||||
`--doctor` zei dat `/opt/serverup` netjes gekoppeld was, en dat klopte ook.
|
`--doctor` zei dat `/opt/serverup` netjes gekoppeld was, en dat klopte ook.
|
||||||
|
|
|
||||||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
||||||
0.8.02-beta
|
0.8.03-beta
|
||||||
|
|
|
||||||
|
|
@ -612,13 +612,20 @@ def api_stacks():
|
||||||
for d in sorted(lib.iterdir()):
|
for d in sorted(lib.iterdir()):
|
||||||
if not d.is_dir() or d.name.startswith("."):
|
if not d.is_dir() or d.name.startswith("."):
|
||||||
continue
|
continue
|
||||||
if not docker.has_compose(d):
|
# Een map zonder compose-bestand werd hier stilzwijgend overgeslagen.
|
||||||
continue
|
# Dan staat er een map in je stacks-map die nergens meer opduikt: niet
|
||||||
ct = docker.compose_ps(d, name=d.name)
|
# in de lijst, en de containers die erbij horen belanden onder
|
||||||
|
# "handmatig gestart". Je ziet een leeg scherm en nergens staat waarom.
|
||||||
|
#
|
||||||
|
# De interface hééft er een weergave voor — rode stip, een streepje in
|
||||||
|
# plaats van een status, geen knoppen — die door dit `continue` nooit te
|
||||||
|
# zien kon zijn. Tonen mét die waarschuwing is beter dan verzwijgen.
|
||||||
|
heeft_compose = docker.has_compose(d)
|
||||||
|
ct = docker.compose_ps(d, name=d.name) if heeft_compose else []
|
||||||
logo_url, icon = _stack_logo(d)
|
logo_url, icon = _stack_logo(d)
|
||||||
meta = _stack_meta(d)
|
meta = _stack_meta(d)
|
||||||
out.append({
|
out.append({
|
||||||
"name": d.name, "path": str(d), "has_compose": True,
|
"name": d.name, "path": str(d), "has_compose": heeft_compose,
|
||||||
"running": any(c["running"] for c in ct),
|
"running": any(c["running"] for c in ct),
|
||||||
"containers": ct,
|
"containers": ct,
|
||||||
"logo_url": logo_url, "icon": icon,
|
"logo_url": logo_url, "icon": icon,
|
||||||
|
|
|
||||||
|
|
@ -116,3 +116,36 @@ def test_viewer_mag_geen_containers_bedienen(client, host):
|
||||||
assert client.get("/api/containers").status_code == 200
|
assert client.get("/api/containers").status_code == 200
|
||||||
assert client.post("/api/containers/forgejo/stop",
|
assert client.post("/api/containers/forgejo/stop",
|
||||||
headers={"X-CSRF-Token": kijker_csrf}).status_code == 403
|
headers={"X-CSRF-Token": kijker_csrf}).status_code == 403
|
||||||
|
|
||||||
|
|
||||||
|
# ── Een map zonder compose-bestand ───────────────────────────────────────────
|
||||||
|
# Die werd stilzwijgend overgeslagen: niet in de lijst, en de containers die
|
||||||
|
# erbij hoorden belandden onder "handmatig gestart". Je zag een leeg scherm en
|
||||||
|
# nergens stond waarom.
|
||||||
|
|
||||||
|
def test_map_zonder_compose_verdwijnt_niet_uit_de_lijst(client, env):
|
||||||
|
from conftest import login
|
||||||
|
login(client)
|
||||||
|
(env["lib"] / "kapotte-app").mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
d = client.get("/api/stacks").get_json()
|
||||||
|
namen = [s["name"] for s in d]
|
||||||
|
assert "kapotte-app" in namen, f"de map is niet zichtbaar: {namen}"
|
||||||
|
s = next(s for s in d if s["name"] == "kapotte-app")
|
||||||
|
assert s["has_compose"] is False, "hij doet alsof er compose is"
|
||||||
|
assert s["containers"] == []
|
||||||
|
assert s["running"] is False
|
||||||
|
|
||||||
|
|
||||||
|
def test_een_gewone_app_blijft_gewoon_staan(client, env, monkeypatch):
|
||||||
|
from conftest import login
|
||||||
|
from core import docker
|
||||||
|
monkeypatch.setattr(docker, "compose_ps", lambda *a, **k: [])
|
||||||
|
login(client)
|
||||||
|
d = env["lib"] / "echte-app"
|
||||||
|
d.mkdir(parents=True, exist_ok=True)
|
||||||
|
(d / "docker-compose.yml").write_text("services:\n web:\n image: nginx\n")
|
||||||
|
|
||||||
|
uit = client.get("/api/stacks").get_json()
|
||||||
|
s = next(s for s in uit if s["name"] == "echte-app")
|
||||||
|
assert s["has_compose"] is True
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue