"""Список доступных тегов kindest/node (Docker Hub) для выпадающего списка в UI. Автор: Сергей Антропов Сайт: https://devops.org.ru """ from __future__ import annotations import asyncio import logging import os from fastapi import APIRouter from kindest_node_tags import fetch_kindest_node_tags logger = logging.getLogger("kind_k8s.api.versions") router = APIRouter(tags=["versions"]) @router.get("/versions", summary="Теги kindest/node") async def list_kindest_versions() -> dict[str, object]: """ Вернуть отсортированный список стабильных тегов (как при интерактивном выборе версии в UI/CLI). При ``KIND_K8S_SKIP_VERSION_LIST=1`` возвращает пустой список — UI может предложить ввод вручную. """ skip = os.environ.get("KIND_K8S_SKIP_VERSION_LIST", "").strip().lower() in ("1", "true", "yes", "да") if skip: logger.info("Список версий отключён (KIND_K8S_SKIP_VERSION_LIST)") return {"tags": [], "skipped": True, "reason": "KIND_K8S_SKIP_VERSION_LIST"} tags = await asyncio.to_thread(fetch_kindest_node_tags) logger.info("Отдано тегов kindest/node: %s", len(tags)) return {"tags": tags, "skipped": False}