`node-agent` должен стать обычным DEB-пакетом. Вместе с самим приложением пойдут вспомагательные утилиты:
- **na-vmctl** "Своя" версия virsh, которая дёргает код из Node Agent. Базовые операции с VM и также установка и миграция ВМ. Реализована частично.
- **na-vmexec**. Обёртка для вызова QEMU guest agent на машинах, больше нчего уметь не должна. Реализована целиком.
- **na-volctl**. Предполагается здесь оставить всю работу с дисками. Не реализовано.
Этими утилитами Нет цели заменять virsh, нужно реализовать только специфичные для Node Agent вещи.
Зависимости (версии из APT репозитория Debian 12):
-`python3-lxml` 4.9.2
-`python3-docopt` 0.6.2
-`python3-libvirt` 9.0.0 (актуальная новее)
# Классы
Весь пакет разбит на модули, а основной функционал на классы.
## `ConfigLoader`
Наследуется от `UserDict`. Принимает в конструктор путь до файла, после чего экземпляром `ConfigLoader` можно пользоваться как обычным словарём. Вызывается внутри `LibvirtSession` при инициализации.
## `LibvirtSession`
Устанавливает сессию с libvirtd и создаёт объект virConnect. Класс умеет принимать в конструктор один аргумент — путь до файла конфигурации, но его можно опустить.
Класс для базового управления виртуалкой. В конструктор принимает объект LibvirtSession, который в себе содержит объект virConnect и конфиг в виде словаря.
Минимальный рабочий XML: https://access.redhat.com/documentation/ru-ru/red_hat_enterprise_linux/6/html/virtualization_administration_guide/section-libvirt-dom-xml-example