Alteratorctl

Материал из ALT Linux Wiki


Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

alteratorctl — консольное приложение, предназначенное для вызова методов интерфейсов, разработанных в рамках Alterator на D-Bus.

Назначение

Программа ADT предназначена для:

  1. Cистемных администраторов.
  2. Опытных пользователей.

alteratorctl является компонентом новой реализации проекта Альтератор, Alterator на D-Bus.

Модули alteratorctl

Приложение имеет модульную структуру. Каждый модуль предназначен для работы с определенным интерфейсом объектов на D-Bus. В настоящий момент реализовано 3 модуля:

  • manager - работает с интерфейсом ru.basealt.alterator.manager объекта /ru/basealt/alterator.
  • packages - использует интерфейсы ru.basealt.alterator.rpm1, ru.basealt.alterator.apt1, ru.basealt.alterator.repo объектов /ru/basealt/alterator/rpm, /ru/basealt/alterator/apt, /ru/basealt/alterator/repo соответственно.
  • components - использует интерфейс ru.basealt.alterator.component1 установленных компонент.

Установка

Для установки alteratorctl из задания (таски), воспользуйтесь поиском.

Команды установки

# apt-repo add <номер задания>
# apt-get update
# apt-get install alteratorctl

Посмотреть список модулей

$ alteratorctl -m 

Запуск

Запуск модуля

alteratorctl <имя_модуля> <команда_модуля>

Команда help отображает возможности модуля.


Например, запуск модуля manager с командой help

alteratorctl manager help 

Спецификация

Документация представлена на странице проекта.

Пример

Опишем типовой внутренний модуль alteratorctl и архитектуру модуля.

Внутренний клиентский модуль - объект класса, реализующего интерфейс AlteratorCtlModuleInterface по принципу, принятому в GLib для объектно-ориентированного программирования.

Интерфейс AlteratorCtlModuleInterface предполагает, что в модуле должны быть реализованы 3 метода:

  • run_with_args - запуск модуля с параметрами командной строки;
  • run - запуск модуля с контекстом;
  • print_help - вывод справки об использовании модуля.

Регистрация модуля

Модуль в alteratorctl необходимо зарегистрировать перед его использованием. Регистрация модуля осуществляется вызовом метода alterator_ctl_register_module() у объекта app типа AlteratorCtlApp в функции main.

В функцию передается указатель на объект типа AlteratorCtlApp, где происходит регистрация, и на структуру типа alterator_ctl_module_t, в которой есть указатели на конструкторы, деструкторы и id модуля.

Id модуля

Id модуля представляет собой указатель на строку, содержащую имя модуля. Именно по имени модуля alteratorctl понимает, какой модуль запустить. Модуль указывается первым после общих ключей alteratorctl в командной строке.

Например,

$ alteratorctl -v manager help

где
* -v - общий для модулей параметр
* manager - имя (id) запускаемого модуля
* help - подкоманда для модуля manager.

Конструктор модуля

Конструктор модуля - функция, возвращающая указатель на AlteratorCtlComponentsModule. Конструктор модуля принимает в виде параметров:

  • указатель на AlteratorCtlApp, в котором зарегистрирован модуль;
  • указатель на структуру типа alteratorctl_arguments_t, которая содержит общие для всех модулей параметры.

Деструктор

Деструктор - функция в структуре alterator_ctl_module_t. Принимает указатель на экземпляр класса внутреннего модуля, ресурсы которого будут освобождены.

Создание контекста модуля

  1. Метод run_with_args
    Этот метод запускает модуль, передавая ему параметры командной строки. Обычно в этом методе происходит парсинг аргументов командной строки, создается контекст модуля. И этот контекст передается в метод run.
  2. Метод run
    Метод run принимает контекст модуля и непосредственно выполняет необходимые запросы на D-Bus. Модуль должен быть выполнен таким образом, чтобы его можно было вызвать из другого модуля при инициализации контекста модуля. После выполнения метода run, контекст необходимо освободить специализированной функцией.
  3. Метод print _help
    Выводит в stdout описание команд и параметров командной строки модуля.