# Compute Service В этом репозитории развивается базовая библиотека для взаимодействия с libvirt и выполнения операций с виртуальными машинами. Фокус на QEMU/KVM. ## Зависимости (версии из репозитория Debian 12): - `python3-lxml` 4.9.2 - `python3-docopt` 0.6.2 - `python3-libvirt` 9.0.0 Минимальная поддерживаемая версия Python — `3.11`, потому, что можем. ## API В структуре проекта сейчас бардак, многое будет переосмыслено и переделано позже. Основная цель на текущем этапе — получить минимально работающий код, с помощью которого возможно выполнить установку виртуальной машины и как-то управлять ею. Есть набор классов, предоставляющих собой интерфейсы для взаимодействия с виртуальными машинами, стораджами, дисками и т.п. Датаклассы описывают сущности и имеют метод `to_xml()` для получения XML конфига для `libvirt`. Смысл использования датаклассов в том, чтобы иметь один объект, содержащий в себе нормальные легкочитаемые аттрибуты и XML описание сущности одновременно. ## ROADMAP - [ ] Установка инстансов - [ ] Установка с использованием эталонного образа ОС - [ ] Установка с пустым диском и загрузкой с ISO - [ ] Установка с использованием готового волюма - [x] Базовое управление питанием - [ ] Остановка и возобновление инстансов - [ ] Изменение числа vCPU на горячую - [ ] Изменение топологии процессора - [ ] Выбор типа эмуляции процессора, вендора, модели и инструкций - [ ] Изменение памяти на горячую - [ ] Ресайз дисков на горячую - [ ] Выбор между BIOS и UEFI - [ ] Редактирование параметров загрузки (boot menu, etc) - [x] Горячее подключение устройств - [ ] Горячее отключение устройств - [ ] GPU - [ ] Поддержка инстансов с разной гарантированной долей CPU - [x] Базовое управление QEMU Guest Agent - [ ] Проверка доступности и возможностей QEMU Guest Agent - [ ] Статистика потребления ресурсов - [ ] Управление SSH-ключами - [ ] Изменение пароля root - [ ] LXC - [ ] Работа с дисками QCOW2,3 - [ ] ZVOL - [ ] Сетевые диски - [ ] Создание Storage Pool на основе TOML/YAML описания - [ ] Удаление Storage Pool - [ ] Снапшоты