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