python-compute/README.md
2023-11-06 12:52:19 +03:00

3.3 KiB
Raw Blame History

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
    • Установка с использованием готового волюма
  • Базовое управление питанием
  • Остановка и возобновление инстансов
  • Изменение числа 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
  • Снапшоты