Веб-UI кластера: страница деталей, kubectl по карточкам, мета 3 колонки
- Страница /cluster/<имя>: сводка, ресурсы узлов полосами, отдельные карточки на каждый kubectl get … -o json, рестарт пода. - API: overview с блоками k8s_*, POST pods/restart, расширенный набор ресурсов (-A). - Панель: спиннер загрузки, правки дашборда и стилей; документация api_routes, compose и прочие сопутствующие изменения.
This commit is contained in:
+23
@@ -22,6 +22,7 @@ from fastapi.staticfiles import StaticFiles
|
||||
from fastapi.templating import Jinja2Templates
|
||||
|
||||
from api.v1.router import api_router
|
||||
from core.cluster_lifecycle import validate_cluster_name
|
||||
from core.config import get_settings
|
||||
|
||||
_BASE = Path(__file__).resolve().parent
|
||||
@@ -75,6 +76,28 @@ async def dashboard(request: Request) -> HTMLResponse:
|
||||
)
|
||||
|
||||
|
||||
@app.get("/cluster/{cluster_name}", response_class=HTMLResponse, summary="Страница кластера")
|
||||
async def cluster_detail_page(request: Request, cluster_name: str) -> HTMLResponse:
|
||||
"""Ресурсы узлов, сводка, kubectl (поды, Deployments и др.), действия как в таблице на главной."""
|
||||
if not _templates_dir.is_dir():
|
||||
return HTMLResponse(
|
||||
content="<p>Шаблоны не найдены. Ожидается каталог app/templates/</p>",
|
||||
status_code=500,
|
||||
)
|
||||
n = cluster_name.strip()
|
||||
if not validate_cluster_name(n):
|
||||
raise HTTPException(status_code=404, detail="Некорректное имя кластера")
|
||||
return templates.TemplateResponse(
|
||||
request,
|
||||
"cluster_detail.html",
|
||||
{
|
||||
"app_title": settings.app_title,
|
||||
"nav_active": "panel",
|
||||
"cluster_name": n,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@app.get("/cluster-create", response_class=HTMLResponse, summary="Создание кластера и задания")
|
||||
async def cluster_create_page(request: Request) -> HTMLResponse:
|
||||
"""Форма создания кластера, прогресс и список последних заданий."""
|
||||
|
||||
Reference in New Issue
Block a user