Клиент дописан до всех двадцати семи эндпоинтов платформы. Добавлено: - регионы, образы с разбивкой на системы и готовые сборки, вторая версия API образов - все действия над сервером: старт, стоп, перезагрузка, переустановка, смена тарифа, клонирование, откат, консоль, бэкапы - снимки целиком, включая ожидание готовности и поиск поднятых из них серверов - ключи доступа, IP-адреса с обратными записями, приватные сети, kubeconfig - история операций, биллинг, расход в час и в сутки - сборка и проверка slug тарифа по правилам платформы - ошибки разложены по смыслу, чтобы ловить прицельно Claude-Session: https://claude.ai/code/session_01Loz5stgQZH6ofBdMqTxiJu
37 строки
1.1 KiB
Python
37 строки
1.1 KiB
Python
"""Ошибки клиента. Разделены по смыслу, чтобы их можно было ловить прицельно."""
|
|
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):
|
|
"""Не дождались нужного состояния."""
|