Панель: редактирование конфига кластера, reapply при старте, UI и таблица
- PUT/GET конфигурации кластера, страница редактирования и модалка после сохранения - После смены kind-config: флаг в meta и start_cluster_reapply (kind delete + create) - Старт/стоп: полноэкранный спиннер до завершения job; модалки и документация API - Таблица кластеров: колонка Имя 40% при table-layout fixed; чекбоксы без width 100% - Карточки ресурсов узлов на странице кластера: до 3 в ряд; прочие правки стилей и dashboard.js
This commit is contained in:
+22
@@ -98,6 +98,28 @@ async def cluster_detail_page(request: Request, cluster_name: str) -> HTMLRespon
|
||||
)
|
||||
|
||||
|
||||
@app.get("/cluster/{cluster_name}/edit", response_class=HTMLResponse, summary="Редактирование конфигурации кластера")
|
||||
async def cluster_edit_page(request: Request, cluster_name: str) -> HTMLResponse:
|
||||
"""Форма: версия/workers, полный kind-config.yaml, описание в meta; сохранение через PUT /api/v1/clusters/{name}/config."""
|
||||
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_edit.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