Хотел тестовый стенд - написал четыре симулятора API

Сегодня поговорим о том, как разрабатывать инфраструктурные сервисы, когда для проверки собственного кода сначала приходится добыть целый гипервизор.

«Сейчас быстренько подниму тестовый стенд» - фраза, после которой у инженера нередко появляется ещё один проект на сопровождении.

Нужно проверить коннектор к Proxmox? Найдите свободный кластер. Написать интеграцию с VMware? Поднимите ESXi. Поработать с OpenStack? Устраивайтесь поудобнее, сервисов там хватит на отдельное знакомство. А потом выяснится, что тесты тормозят, потому что сосед запустил резервное копирование и занял диски.

Ты хотел написать портал самообслуживания, а стал администратором лаборатории для разработки портала самообслуживания.

Именно с этого началась моя история симуляторов API для Proxmox, OpenStack, VMware и oVirt. Хотелось запускать нужную лабораторию локально и спокойно писать код, не выясняя, кто сегодня занял тестовый гипервизор. Сначала казалось, что достаточно научить сервер возвращать правильный JSON. Но настоящий клиент быстро объяснил, чего стоит такая имитация: «Ты сказал, что создал виртуальную машину. А где она?»

И правда. Где?

Так вместо набора заготовленных ответов появилась модель инфраструктуры: узлы, виртуальные машины, сети, хранилища, пользователи и фоновые задачи. Созданная машина появляется в списке, изменение конфигурации сохраняется, удалённый ресурс исчезает. Можно проверять последовательность операций, ошибки и конкурентные изменения, а затем повторять сценарий с одинаковым начальным состоянием.

В статье рассказываю, как небольшой эксперимент вырос в четыре проекта, почему API пришлось строить вокруг состояния объектов и как OpenAPI превратился из документации в основу архитектуры. А главное - чем такая лаборатория полезна для разработки коннекторов, Terraform-провайдеров, операторов Kubernetes и интеграционных тестов в CI.

Отдельно разбираю границы подхода: настоящую миграцию и производительность хранилища на симуляторе не проверишь, финальная проверка совместимости остаётся за реальной платформой.

Текста получилось много, зато с архитектурой, инженерными граблями и ссылками на все четыре открытых репозитория. Если сами пишете что-то вокруг платформ виртуализации - возможно, ваш следующий тестовый стенд окажется значительно легче предыдущего.

И ему хотя бы не придётся объяснять, что тесты сейчас важнее чужого резервного копирования.

Полная статья: https://devops.org.ru/how-full-featured-api-simulators-for-proxmox-openstack-vmware-and-ovirt-were-created

PS: Если захотите посмотреть код, попробовать симуляторы, покритиковать архитектуру, открыть Issue или предложить улучшения - добро пожаловать.

🟢 Proxmox API Simulator https://github.com/sergeyantropoff/proxmox-api-simulator

🔵 OpenStack API Simulator https://github.com/sergeyantropoff/openstack-api-simulator

🟠 VMware API Simulator https://github.com/sergeyantropoff/vmware-api-simulator

🔴 oVirt API Simulator https://github.com/sergeyantropoff/ovirt-api-simulator

Хотел тестовый стенд - написал четыре симулятора API | Сетка — социальная сеть от hh.ru