Alterator-manager, модули remote и backend3 (Иван Савин, OSSDEVCONF-2025)

Материал из 0x1.tv

(перенаправлено с «20251005G»)
Докладчик
Иван Савин.jpg
Иван Савин

Alterator-manager — это модульный сервис для управления операционной системой. Доклад посвящён двум его новым модулям — remote и backend3. Remote предназначен для работы с D-Bus методами alterator-manager’а на удалённой машине. Backend3 предназначен для использования бэкендов «старого» alterator’а.

Видео[править вики-текст]

Презентация[править вики-текст]

Alterator-manager, модули remote и backend3 (Иван Савин, OSSDEVCONF-2025).pdf Alterator-manager, модули remote и backend3 (Иван Савин, OSSDEVCONF-2025).pdf Alterator-manager, модули remote и backend3 (Иван Савин, OSSDEVCONF-2025).pdf Alterator-manager, модули remote и backend3 (Иван Савин, OSSDEVCONF-2025).pdf Alterator-manager, модули remote и backend3 (Иван Савин, OSSDEVCONF-2025).pdf Alterator-manager, модули remote и backend3 (Иван Савин, OSSDEVCONF-2025).pdf Alterator-manager, модули remote и backend3 (Иван Савин, OSSDEVCONF-2025).pdf

Thesis[править | править вики-текст]

Ключевые слова: altlinux, alterator, D-Bus.

Alterator-manager — это сервис с интерфейсом на D-Bus для управления операционной системой. Его функционал реализуется в модулях, первым из которых был executor. Executor на основе специальных конфигурационных файлов создаёт интерфейс на D-Bus для запуска исполняемых файлов. Например, поместив в директорию /usr/share/alterator/backends/user/ файл example1.backend со следующим содержимым:

type = "Backend"
module = "executor"
name = "executor"
interface = "Example1"
[methods.Hexdump]
execute = "hexdump -C {file_name}"
stdout_strings = true

и выполнив команду

systemctl --user start alterator-manager.service

мы увидим на сессионной шине по адресу org.altlinux.alterator объект /org/altlinux/alterator/executor и интерфейс org.altlinux.alterator.Example1 с методом Hexdump, который запускает hexdump -C:

2025-savin-img001.png

Backend3[править | править вики-текст]

Новый модуль backend3 предназначен для использования бэкендов alterator’а. Этот модуль похож на executor. D-Bus интерфейсы, использующие его, описываются в конфигурационных файлах с расширением .backend. Один такой файл описывает один интерфейс. Для описания используется язык TOML. Ниже приведён пример описания объекта /org/altlinux/alterator/example1 и интерфейса org.altlinux.alterator.Backend3 с методом MenuList:

type = "Backend"
module = "backend3"
name = "example1"
interface = "org.altlinux.alterator.Backend3"
action_id = "org.altlinux.alterator"
[methods.MenuList]
backend3 = "menu"
_objects = "avail_modules"
language = "ru_RU"
action = "list"

Поле backend3 — обязательное, в нём указывается имя бэкенда из директории /usr/lib/alterator/backend3/. Остальные поля необязательные. Поле _objects содержит то же, что одноимённая переменная в бэкендах из backend3. (Ещё можно встретить название path, например, в данном случае этот path был бы /menu/avail_modules, но в _objects первая часть не записывается). В поле language указывается локаль. В поле action указывается действие: list, write, read и прочее.

Методы, которые создаёт этот модуль, имеют один входной параметр — массив пар ключ–значение. В этом параметре задаются строковые пары, которые ожидает получить backend3 на свой stdin. Возвращаемое значение методов — массив массивов пар ключ–значение; такую структуру возвращает backend3 alterator’а.

Пример работы метода, описанного выше:

2025-savin-img002.png
2025-savin-img003.png

Remote[править | править вики-текст]

Модуль remote даёт возможность подключиться к удалённой машине по ssh и вызывать D-Bus методы её alterator-manager’а у себя на локальной машине как свои собственные. Интерфейс модуля состоит из трёх методов на D-Bus объекте /org/altlinux/alterator/remote в интерфейсе org.altlinux.alterator.remote.

Метод Connect — подключение к удалённой машине. Параметры метода: 1) адрес удалённой машины (<name>@<ip>) 2) имя соединения 3) D-Bus-адрес password-agent’а. Когда на удалённой машине polkit запросит пароль для подтверждения прав на выполнение метода, на локальной машине этот запрос отобразит данный агент. 4) pty для password-agent’а (необязательно).

Метод Disconnect — отключение соединения. Параметр: имя соединения.

Метод GetConnections — показывает список соединений.

После подключения в дереве D-Bus alterator-manager’а на локальной машине (/org/altlinux/alterator) появится поддерево alterator-manager’а удалённой машины (/org/altlinux/alterator/connection/<connection_name>). Методы в этом поддереве вызываются так же, как и любые другие, за исключением того, что для подтверждения прав на выполнение будет вызван не polkit-agent, а password-agent, D-Bus-адрес которого был передан параметром в методе Connect.

2025-savin-img004.png
2025-savin-img005.png


Alterator-manager, модули remote и backend3 (Иван Савин, OSSDEVCONF-2025)!.jpg

Примечания и ссылки[править вики-текст]