Полное покрытие API

Клиент дописан до всех двадцати семи эндпоинтов платформы.

Добавлено:
- регионы, образы с разбивкой на системы и готовые сборки, вторая версия API образов
- все действия над сервером: старт, стоп, перезагрузка, переустановка, смена тарифа,
  клонирование, откат, консоль, бэкапы
- снимки целиком, включая ожидание готовности и поиск поднятых из них серверов
- ключи доступа, IP-адреса с обратными записями, приватные сети, kubeconfig
- история операций, биллинг, расход в час и в сутки
- сборка и проверка slug тарифа по правилам платформы
- ошибки разложены по смыслу, чтобы ловить прицельно

Claude-Session: https://claude.ai/code/session_01Loz5stgQZH6ofBdMqTxiJu
Этот коммит содержится в:
2026-08-23 18:30:07 +09:00
родитель a106ba5b6b
Коммит 7e798bb68f
8 изменённых файлов: 831 добавлений и 259 удалений
+36
Просмотреть файл
@@ -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):
"""Не дождались нужного состояния."""