Модель платформы
Всё в ZennoHosting строится вокруг проектов и принадлежащих им ресурсов. Если сразу заложить в клиент эту схему, поведение платформы становится предсказуемым: справочные данные отделены от живых ресурсов, а последующие операции остаются в пределах одного проекта.
Справочные данные для создания
Образы
Задают операционную систему, с которой машина создаётся.
Тарифы
Задают коммерческие условия для машины и отдельно для публичного адреса.
Конфигурации
Показывают доступные сочетания ядер, памяти и диска, а вместе с ними — есть ли сейчас под них мощности.
Доступ и плагины
Доступ задаётся публичными ключами в запросе или ссылками на ключи проекта; плагины подключаются на этапе создания.
Живые ресурсы
Проекты
Владеют машинами, SSH-ключами, сетями, публичными адресами и резервными копиями. В ответе проекта есть
resourceCounts — счётчики машин, сетей и адресов.
Виртуальные машины
Основной вычислительный ресурс. В ответе — идентификаторы, размеры, сетевые подключения и поле
status с текущим состоянием.
Сети
Приватные сети уровня проекта, к которым машины подключают и перенастраивают.
Адреса и копии
Публичные адреса принадлежат проекту, а резервные копии — конкретной машине.
Границы проекта
- Сначала проект, потом SSH-ключи, сети, публичные адреса и машины.
Держите
projectIdпервичным идентификатором в своей модели данных.- Переиспользуйте ресурсы проекта, а не создавайте их заново под каждую машину.
Не считайте публичный адрес частью жизненного цикла приватной сети: они связаны, но существуют независимо.
Что решить до создания машины
Запрос на создание собирается из живых данных. Заранее определите образ, тариф машины и то, нужен ли публичный адрес. Если он нужен, помните: цена публичного адреса — отдельное решение, а не свойство тарифа машины.
Проверьте и границы: квоты аккаунта в GET /limits и доступность мощностей под выбранную конфигурацию.
Это две разные причины отказа, и обе видны заранее.
Что хранить в клиенте
Считайте projectId, vmId, networkId и publicIpId стабильными
ссылками — на них держится почти каждый последующий запрос. Поле vmCount у проекта помечено устаревшим:
используйте resourceCounts.vms.
Связанные эндпоинты
/projectsПолучить список проектов вместе со счётчиками ресурсов.
/limitsУзнать квоты аккаунта и текущее потребление.
/configurationsПосмотреть конфигурации машин и их доступность.
/imagesПосмотреть доступные образы.
/projects/{projectId}/vmsСоздать виртуальную машину.
/projects/{projectId}/vms/{vmId}Прочитать состояние машины после асинхронной операции.