Полное покрытие API
Клиент дописан до всех двадцати семи эндпоинтов платформы. Добавлено: - регионы, образы с разбивкой на системы и готовые сборки, вторая версия API образов - все действия над сервером: старт, стоп, перезагрузка, переустановка, смена тарифа, клонирование, откат, консоль, бэкапы - снимки целиком, включая ожидание готовности и поиск поднятых из них серверов - ключи доступа, IP-адреса с обратными записями, приватные сети, kubeconfig - история операций, биллинг, расход в час и в сутки - сборка и проверка slug тарифа по правилам платформы - ошибки разложены по смыслу, чтобы ловить прицельно Claude-Session: https://claude.ai/code/session_01Loz5stgQZH6ofBdMqTxiJu
Этот коммит содержится в:
@@ -0,0 +1,36 @@
|
||||
"""Ошибки клиента. Разделены по смыслу, чтобы их можно было ловить прицельно."""
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
class RegCloudError(RuntimeError):
|
||||
"""Общая ошибка платформы."""
|
||||
|
||||
def __init__(self, message: str, status: int = 0, code: str = "", payload: dict | None = None):
|
||||
super().__init__(message)
|
||||
self.status = status
|
||||
self.code = code
|
||||
self.payload = payload or {}
|
||||
|
||||
|
||||
class AuthError(RegCloudError):
|
||||
"""Токен не принят."""
|
||||
|
||||
|
||||
class NotFound(RegCloudError):
|
||||
"""Ресурса нет."""
|
||||
|
||||
|
||||
class Locked(RegCloudError):
|
||||
"""Ресурс занят другой операцией. Обычно проходит само за полминуты."""
|
||||
|
||||
|
||||
class ValidationError(RegCloudError):
|
||||
"""Платформа не приняла параметры. В payload лежит её объяснение."""
|
||||
|
||||
|
||||
class InsufficientFunds(RegCloudError):
|
||||
"""Не хватает денег на счету."""
|
||||
|
||||
|
||||
class Timeout(RegCloudError):
|
||||
"""Не дождались нужного состояния."""
|
||||
Ссылка в новой задаче
Block a user