Веб-UI кластера: страница деталей, kubectl по карточкам, мета 3 колонки
- Страница /cluster/<имя>: сводка, ресурсы узлов полосами, отдельные карточки на каждый kubectl get … -o json, рестарт пода. - API: overview с блоками k8s_*, POST pods/restart, расширенный набор ресурсов (-A). - Панель: спиннер загрузки, правки дашборда и стилей; документация api_routes, compose и прочие сопутствующие изменения.
This commit is contained in:
@@ -140,3 +140,87 @@ class ClusterWorkloadsResponse(BaseModel):
|
||||
pods_rc: int | None = None
|
||||
pods_output: str | None = None
|
||||
error: str | None = None
|
||||
|
||||
|
||||
class K8sListJsonBlock(BaseModel):
|
||||
"""Фрагмент ответа ``kubectl get … -o json`` (items) для таблицы в UI."""
|
||||
|
||||
ok: bool = True
|
||||
rc: int | None = Field(default=None, description="Код выхода kubectl")
|
||||
items: list[dict[str, Any]] = Field(default_factory=list)
|
||||
message: str | None = Field(default=None, description="Ошибка kubectl или разбора JSON")
|
||||
|
||||
|
||||
class PodRestartRequest(BaseModel):
|
||||
"""Тело POST: перезапуск пода через ``kubectl delete pod`` (воссоздание контроллером)."""
|
||||
|
||||
namespace: str = Field(..., min_length=1, max_length=253, description="Namespace пода")
|
||||
pod: str = Field(..., min_length=1, max_length=253, description="Имя пода (metadata.name)")
|
||||
|
||||
|
||||
class PodRestartResponse(BaseModel):
|
||||
"""Результат запроса на удаление/рестарт пода."""
|
||||
|
||||
cluster_name: str
|
||||
namespace: str
|
||||
pod: str
|
||||
rc: int
|
||||
message: str
|
||||
|
||||
|
||||
class ClusterOverviewResponse(BaseModel):
|
||||
"""Сводка для страницы кластера: мета, ресурсы узлов, kubectl (поды, workloads)."""
|
||||
|
||||
cluster_name: str
|
||||
registered_in_kind: bool = False
|
||||
kind_nodes_running: bool = False
|
||||
has_local_kubeconfig: bool = False
|
||||
has_provision_log: bool = False
|
||||
meta: dict[str, Any] = Field(default_factory=dict)
|
||||
resources_error: str | None = Field(default=None, description="Ошибка сбора docker/podman stats")
|
||||
cluster_resources: KindClusterResources = Field(
|
||||
default_factory=lambda: KindClusterResources(cluster_name="", nodes=[], note=None),
|
||||
)
|
||||
aggregate_resources: AggregateResourcesSummary = Field(default_factory=AggregateResourcesSummary)
|
||||
kubeconfig_error: str | None = Field(default=None, description="Нет kubeconfig или ошибка kubectl")
|
||||
nodes_rc: int | None = None
|
||||
nodes_output: str | None = None
|
||||
pods_rc: int | None = None
|
||||
pods_output: str | None = None
|
||||
deployments_rc: int | None = None
|
||||
deployments_output: str | None = None
|
||||
statefulsets_rc: int | None = None
|
||||
statefulsets_output: str | None = None
|
||||
daemonsets_rc: int | None = None
|
||||
daemonsets_output: str | None = None
|
||||
services_rc: int | None = None
|
||||
services_output: str | None = None
|
||||
ingresses_rc: int | None = None
|
||||
ingresses_output: str | None = None
|
||||
k8s_nodes: K8sListJsonBlock = Field(default_factory=K8sListJsonBlock, description="kubectl get nodes -o json")
|
||||
k8s_pods: K8sListJsonBlock = Field(default_factory=K8sListJsonBlock, description="kubectl get pods -A -o json")
|
||||
k8s_deployments: K8sListJsonBlock = Field(default_factory=K8sListJsonBlock)
|
||||
k8s_statefulsets: K8sListJsonBlock = Field(default_factory=K8sListJsonBlock)
|
||||
k8s_daemonsets: K8sListJsonBlock = Field(default_factory=K8sListJsonBlock)
|
||||
k8s_services: K8sListJsonBlock = Field(default_factory=K8sListJsonBlock)
|
||||
k8s_ingresses: K8sListJsonBlock = Field(default_factory=K8sListJsonBlock)
|
||||
k8s_namespaces: K8sListJsonBlock = Field(
|
||||
default_factory=K8sListJsonBlock,
|
||||
description="kubectl get namespaces -o json",
|
||||
)
|
||||
k8s_replicasets: K8sListJsonBlock = Field(
|
||||
default_factory=K8sListJsonBlock,
|
||||
description="kubectl get replicasets -A -o json",
|
||||
)
|
||||
k8s_jobs: K8sListJsonBlock = Field(
|
||||
default_factory=K8sListJsonBlock,
|
||||
description="kubectl get jobs -A -o json",
|
||||
)
|
||||
k8s_cronjobs: K8sListJsonBlock = Field(
|
||||
default_factory=K8sListJsonBlock,
|
||||
description="kubectl get cronjobs -A -o json",
|
||||
)
|
||||
k8s_pvcs: K8sListJsonBlock = Field(
|
||||
default_factory=K8sListJsonBlock,
|
||||
description="kubectl get pvc -A -o json",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user