FreeSource: TZ/ServerIntegracii/Notation

Соглашения об именованиях и структуре

Структура модулей

Корневая папка проекта в системе: /usr/lib/tartarus

(В формате rpm-spec этот путь задается как %_libdir/tartarus)

Компоненты проекта делятся на ядро и модули. В данном случае под ядром следует понимать не набор ключевых сервисов системы, описанных в ТЗ (Kerberos, DNS, система пользователей и т.п.), а системную инфраструктуру для запуска компонент проекта, их инициализации и настройки

Ядро

Расположение в системе: /usr/lib/tartarus/core

Пакет: tartarus-core

Пакет устанавливает системный скрипт /etc/init.d/rc.d/tartarus для функций запуска в качестве сервиса и ряд python-скриптов для запуска, останова и мониторинга tartarus в целом.

Модули

Расположение в системе: /usr/lib/tartarus/modules/<имя модуля>

Пакет: tartarus-<имя модуля>

Имя модуля записывается в нижнем регистре без пробелов и разделителей.

Структура:

В корневой папке каждого модуля должен располагаться модуль run.py, предоставляющий функции:

1) start(objectAdapter) — запуск подсистемы

2) install — инсталляция в систему

3) reinstall — повторная инициализация и сброс в начальное состояние

4) uninstall — дополнительные действия по удалению созданных данных

Соглашения об именовании интерфейсов

Каждая подсистема может использовать разные подходы к именованию интерфейсов – посредством использования категорий или собственной системы именования «проксей».

В первом случае, к именовании категории добавляется префикс <имя подсистемы> с дефисом, например:

dns-Zone

dns-Zone File

dhcp-Server

Соответственно именем «прокси» в большинстве случаев будет являться первичный ключ сущности из базы данных или другого хранилища

Во втором случае, префикс добавляется к каждому Identity по аналогичному соглашению:

kerberos-Service

nfs-configmanager

Оба подхода можно объединять, не забывая об обеспечении глобальной уникальности Identity. Например:

Identity('dns-Virtual Server', 'ldap://server/services/dns/masterserver') (здесь создается прокси для категории Virtual Server с некоторым идентификатором из ldap)

Identity('dhcp-Server', 'dhcp-server/services/dhcp/config1')

Для каждой подсистемы одно имя является зарезервированным — имя точки входа в систему.

Оно формируется как <имя подсистемы>-manager, например:

dns-manager

kerberos-manager

dfs-manager

Для некоторых подсистем возможна ситуация наличия нескольких точек входа в систему, таким образом последнее требование является больше рекомендацией.