mirror of
https://github.com/ivenator1/proxmox-management.git
synced 2026-07-18 11:28:21 +08:00
[PR #24] [MERGED] Add fleet web dashboard (L2): FastAPI app + fleet-dashboard entrypoint #24
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
ivenator1/proxmox-management#24
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/ivenator1/proxmox-management/pull/24
Author: @ivenator1
Created: 6/11/2026
Status: ✅ Merged
Merged: 6/11/2026
Merged by: @ivenator1
Base:
testing← Head:claude/remote-testing-branch-track-3m06yk📝 Commits (2)
6e5f239fix: defer lock dir mkdir to acquire time; bypass lock in cli/wrapper tests1ccf562Add fleet web dashboard (L2): FastAPI app, fleet-dashboard entrypoint📊 Changes
24 files changed (+1417 additions, -10 deletions)
View changed files
📝
CLAUDE.md(+25 -1)📝
README.md(+1 -0)📝
docs/FEATURE_ROADMAP.md(+8 -4)📝
proxmox_fleet/lock.py(+4 -3)➕
proxmox_fleet/web/__init__.py(+8 -0)➕
proxmox_fleet/web/app.py(+299 -0)➕
proxmox_fleet/web/main.py(+53 -0)➕
proxmox_fleet/web/runs.py(+221 -0)➕
proxmox_fleet/web/static/PICO-LICENSE.md(+21 -0)➕
proxmox_fleet/web/static/pico.classless.min.css(+4 -0)➕
proxmox_fleet/web/templates/base.html(+37 -0)➕
proxmox_fleet/web/templates/console.html(+34 -0)➕
proxmox_fleet/web/templates/history.html(+32 -0)➕
proxmox_fleet/web/templates/host.html(+33 -0)➕
proxmox_fleet/web/templates/index.html(+48 -0)➕
proxmox_fleet/web/templates/pending.html(+81 -0)➕
proxmox_fleet/web/templates/run_detail.html(+39 -0)➕
proxmox_fleet/web/templates/trigger.html(+56 -0)📝
pyproject.toml(+14 -0)📝
tests/requirements.txt(+4 -0)...and 4 more files
📄 Description
Completes the final item on
docs/FEATURE_ROADMAP.md— the L2 web dashboard. This branch also carries the L2 groundwork from the planning branch (--scan, the fleet-wide run lock, the history/pending readers) that the dashboard builds on.What's new
proxmox_fleet/web/behind a newpip install -e '.[web]'extra (fastapi + uvicorn + python-multipart), console entrypointfleet-dashboard(bindsdashboard_host:dashboard_portfrom vars.yml, default0.0.0.0:8421).--scansnapshots, incl. community-script app current→latest), run history with run-over-run deltas, per-run detail (record tables + stored briefing), per-host drill-down across runs, and the run trigger. All data is read fromfleet_history_dirvia the existinghistory.py/scan.pyreaders — the dashboard never reaches the fleet.POST /runs, bearerdashboard_tokenvia header or form field; empty token = open): launchespython -u -m proxmox_fleet.cli <flags>detached (start_new_session) with stdout todashboard-runs/<id>.log+ a JSON meta record, so a dashboard restart never kills a mid-flight run; orphaned metas are finalized on read. Live output streams via SSE by re-tailing the log.RunManager.start()probes the shared fleet run lock plus its own children, and the CLI child re-acquires the samelock.pyflock — dashboard, cron, and shell runs can never overlap.build_run_args()):--limit/--phasesfields are tokenized against[A-Za-z0-9._-]+and phase names validated; nothing user-supplied is passed raw.Tests / verification
tests/unit/test_web.py— 31 tests: fastapi.testclient against fixture history/pending dirs, auth (header/form/none), arg validation incl. shell-metacharacter rejection, RunManager with stub subprocess commands (rc capture, overlap refusal, lock refusal, orphan finalization), and an end-to-end trigger → console → SSE roundtrip. Skipped wholesale when fastapi isn't installed.-ll), yamllint all clean; wheel build verified to include templates/static.Docs: CLAUDE.md (commands, file map, dashboard section), README feature bullet,
vars.yml.exampledashboard block, roadmap marked complete.https://claude.ai/code/session_01R3JXwt4bmaKMkpGq5xn8Sd
Generated by Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
[PR #24] Add fleet web dashboard (L2): FastAPI app + fleet-dashboard entrypointto [PR #24] [MERGED] Add fleet web dashboard (L2): FastAPI app + fleet-dashboard entrypoint