50 lines
3.3 KiB
Markdown
50 lines
3.3 KiB
Markdown
# 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
|
||
- [ ] Снапшоты
|