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
|
||||
|
||||
`--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()):
|
||||
if not d.is_dir() or d.name.startswith("."):
|
||||
continue
|
||||
if not docker.has_compose(d):
|
||||
continue
|
||||
ct = docker.compose_ps(d, name=d.name)
|
||||
# Een map zonder compose-bestand werd hier stilzwijgend overgeslagen.
|
||||
# Dan staat er een map in je stacks-map die nergens meer opduikt: niet
|
||||
# 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)
|
||||
meta = _stack_meta(d)
|
||||
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),
|
||||
"containers": ct,
|
||||
"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.post("/api/containers/forgejo/stop",
|
||||
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