Журнал: пагинация 30 записей на страницу, API offset/total_pages
- job_journal: collect_recent_journal_entries_page_sync(limit, offset) - GET /api/v1/journal/recent: limit по умолчанию 30, offset, total, page, total_pages - journal.html/js: навигация Первая/Назад/номера/Вперёд/Последняя, стили - app/docs/api_routes.md: описание query и пример ответа - Прочие изменения UI/API (аддоны, helm, job_journal в кластерах) в том же коммите
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
"""Справочник версий Helm-чартов для страницы аддонов (``helm search repo … --versions``).
|
||||
|
||||
Автор: Сергей Антропов
|
||||
Сайт: https://devops.org.ru
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from fastapi import APIRouter, HTTPException
|
||||
|
||||
from core.helm_addons import HelmAddonError, helm_addon_chart_versions_all, require_helm_binary
|
||||
from models.schemas import HelmAddonChartVersionsResponse
|
||||
|
||||
logger = logging.getLogger("kind_k8s.api.helm_charts")
|
||||
|
||||
router = APIRouter(tags=["helm-charts"])
|
||||
|
||||
|
||||
@router.get(
|
||||
"/helm/chart-versions",
|
||||
response_model=HelmAddonChartVersionsResponse,
|
||||
summary="Версии чартов аддонов (для выпадающих списков)",
|
||||
)
|
||||
async def get_helm_addon_chart_versions() -> HelmAddonChartVersionsResponse:
|
||||
"""
|
||||
Выполняет ``helm repo update`` и для каждого аддона — ``helm search repo <chart> --versions``.
|
||||
|
||||
Результат кэшируется на ``KIND_K8S_HELM_VERSIONS_CACHE_SEC`` (по чарту).
|
||||
Пустой список — если helm недоступен или репозиторий не ответил.
|
||||
"""
|
||||
try:
|
||||
require_helm_binary()
|
||||
except HelmAddonError as e:
|
||||
logger.warning("helm недоступен для списка версий: %s", e)
|
||||
raise HTTPException(status_code=503, detail=str(e)) from e
|
||||
try:
|
||||
data = await asyncio.to_thread(helm_addon_chart_versions_all)
|
||||
except HelmAddonError as e:
|
||||
logger.exception("Ошибка получения версий чартов")
|
||||
raise HTTPException(status_code=500, detail=str(e)) from e
|
||||
return HelmAddonChartVersionsResponse(**data)
|
||||
Reference in New Issue
Block a user