Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 6139 - Написать модуль для управления сервисами   Make a simular bug
Summary: Написать модуль для управления сервисами
Status: CLOSED FIXED
Alias: None
Product: Tartarus
Classification: Свободные проекты (Open source projects)
Component: Settingsd (show other bugs)
Version: не указана
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: Devaev Maxim
QA Contact: Vitaly Lipatov
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 5903
  Show dependency treegraph
 
In work:
Reported: 2010-10-06 21:44 MSD by Devaev Maxim
Modified: 2010-11-28 23:00 MSK (History)
3 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Devaev Maxim 2010-10-06 21:44:27 MSD
Нужна реализация dbus-ного api для service и chkconfig.
Comment 1 Devaev Maxim 2010-10-08 21:54:25 MSD
Реализовал прототип управления сервисами. В специальном пространстве имен располагаются дбасные объекты, которые имееют методы on(), off(), start(), stop() и status(). on() и off() имеют аргумент, который позволяют включить сервис на конкретном ранлевеле.
Comment 2 Devaev Maxim 2010-10-11 21:12:47 MSD
Написал модуль. Предоставляется дерево объектов, каждый из которых является сервисом с определенным набором методов, например:
-----------------------------
/org/etersoft/settingsd/functions/services/NetworkManager
/org/etersoft/settingsd/functions/services/acpid
/org/etersoft/settingsd/functions/services/atd
/org/etersoft/settingsd/functions/services/auditd
......
/org/etersoft/settingsd/functions/services/sshd
/org/etersoft/settingsd/functions/services/sysstat
/org/etersoft/settingsd/functions/services/udev_post
/org/etersoft/settingsd/functions/services/vboxdrv
/org/etersoft/settingsd/functions/services/vboxweb_service
/org/etersoft/settingsd/functions/services/vnstat
/org/etersoft/settingsd/functions/services/winbind
/org/etersoft/settingsd/functions/services/wpa_supplicant
/org/etersoft/settingsd/functions/services/xfs
/org/etersoft/settingsd/functions/services/ypbind
/org/etersoft/settingsd/functions/services/zvbid
-----------------------------

Каждый объект имеет такой набор методов, для /org/etersoft/settingsd/functions/services/sshd:
-----------------------------
method QString org.freedesktop.DBus.Introspectable.Introspect()
method QString org.etersoft.settingsd.functions.service.description()
method QString org.etersoft.settingsd.functions.service.levelsMap()
method int org.etersoft.settingsd.functions.service.off(QString levels)
method int org.etersoft.settingsd.functions.service.on(QString levels)
method QString org.etersoft.settingsd.functions.service.shortDescription()
method int org.etersoft.settingsd.functions.service.start()
method int org.etersoft.settingsd.functions.service.status()
method int org.etersoft.settingsd.functions.service.stop()
-----------------------------

start(), stop() и status() используются для запуска сервиса, останова и получения статуса соответственно. Возвращаемым значением является код завершения команды /etc/init.d/<servicename> <command>.

on() и off() позволяют включать и выключать сервис либо с параметрами по умолчанию, либо, если указано, на конкретных ранлевелах.

levelsMap() возвращает строку из семи символов, каждый из которых является 1 или 0 и обозначает состояние сервиса для конкретного ранлевела. Например, для sshd levelsMap() у меня на ноуте возвращает 0011110, что означает, что сервис будет запускаться на уровнях 2345 (по индексу позиции в строке).
Методы description() и shortDescription() нужны для получения описания сервиса по стандарту LSB. Сейчас парсеры для них не реализованы, поэтому возвращаемым значением является пустая строка. Помечены как TODO. Пока что, для коробочки, они не нужны.