Произвольные связи между ресурсами (расширение logical inventory)
Одним из необходмых элементов логического inventory является возможность организовывать типизированные связи между различными логическими ресурсами. На настоящий момент NOC поддерживает следующие типы логических ресурсов:
- ManagedObject
- Address
- Prefix
- Interface
- SubInterface
- Service
- Subscriber
- VLAN
- VPN
- Peer
- DNS Zone
Каждый тип логических ресурсов (в короткой перспективе) находится в одном из конечных состояний и интегрируется с workflow
Технология
Абстракция, определяющая тип связи и область его применимости. Стартовый набор технологий поставляется в коллекциях.
Коллекця technologies:
- id
- name
- uuid
- description
-
service_model
- название модели ресурса (i.e. sa.ManagedObject), которые учевствуют в оказании сервиса. Пустое значение - запрет на включение в роли сервиса -
client_model
- название модели ресурса (по аналогии с .service_model), которые потребляют сервис. Пустое значение - запрет на включение в ролии ресурса -
single_service
- сервисный ресурс может быть только в одной группе с данной технологией -
single_client
- клиентский ресурс может быть только в одной группе с данной технологией -
allow_children
- может быть группирующим элементом
Технологию можно сформулировать как утверждение:
Набор
service_model
делаетname
для набораclient_model
Или, в вырожденном случае (пустой client_model
:
Набор
service_model
делаетname
Группировка ресурсов
Ресурсы объединяются в группы (ResourceGroup). Ресурс может входить в группу либо как сервисный (модель совпадает с .service_model
), либо как клиентский (модель совпадает с .client_model
), но не в обеих ролях сразу. С учетом ограничений single_*
ресурс может входить в произвольное количество групп. Ресурс может входить в группу как статически (руками или через выгрузку), так и динамически (через правила классификации)
Для удобства навигации группы могут образовывать иерархию (лес) через группирующие элементы
Модель ResourceGroup
- id
- name
- description
- parent - ссылка на родителя
- technology - ссылка на технологиию
- alarm_weight
- threshold - Порог
- weight - аварийный вес
Расчитывается количество рабочих ресурсов из service_model
, не затронутых аварией и сравнивается с порогом. При количестве, меньшем порога, аварии присваивается соответсвующий аварийный вес.
Правила классификации
Используются для вычисления динамических групп @todo
Интеграция ресурсов и групп
Все модели ресурсов, подлежащих группировке, должны иметь следующие поля
-
.static_service_groups
- массив групп, заданный вручную. Ресурс выступает как сервис -
.static_client_groups
- массив групп, заданный вручную. Ресурс выступает как клиент -
.dynamic_service_groups
- массив групп, посчитанный по правилам классификации. Ресурс выступает как сервис -
.dynamic_client_groups
- массив групп, посчитанный по правилам классификации. Ресурс выступает как клиент -
.effective_service_groups
- эффективный массиив для сервисных групп, включая группирующие элементы. Просчитывается автоматически при сохранении -
.effective_client_groups
- эффективный массиив для клиентских групп, включая группирующие элементы. Просчитывается автоматически при сохранении
Статические группы имеют приоритет над динамическиими при просчете ограничений
Примеры технологий
Group
Группирующий элемент
Поле | Значение |
---|---|
service_model | None |
client_model | None |
single_service | False |
single_client | False |
allow_children | True |
Network | Traffic Group
Группировка трафика для задач планирования
Поле | Значение |
---|---|
service_model | sa.ManagedObject |
client_model | None |
single_service | False |
single_client | False |
allow_children | True |
Допустимы иерархиии групп трафика
Access | User
Группировка прав доступа к MO
Поле | Значение |
---|---|
service_model | sa.ManagedObject |
client_model | main.User |
single_service | False |
single_client | False |
allow_children | True |
Допустимы иерархии групп доступа
Access | Group
Группировка прав доступа к MO
Поле | Значение |
---|---|
service_model | sa.ManagedObject |
client_model | main.Group |
single_service | False |
single_client | False |
allow_children | True |
Допустимы иерархии групп доступа
Network | Segment
Иерархия сегментов
Поле | Значение |
---|---|
service_model | sa.ManagedObject |
client_model | None |
single_service | True |
single_client | False |
allow_children | True |
Network | IPoE Termination
Терминациия IPoE (Коммутатор доступа -> BRAS)
Поле | Значение |
---|---|
service_model | sa.ManagedObject |
client_model | sa.ManagedObject |
single_service | False |
single_client | False |
allow_children | False |
Network | PPPoE Termination
Терминациия PPPoE (Коммутатор доступа -> BRAS)
Поле | Значение |
---|---|
service_model | sa.ManagedObject (BRAS) |
client_model | sa.ManagedObject (Коммутатор) |
single_service | False |
single_client | False |
allow_children | False |
Network | SNAT Terination
Терминация Source NAT (Коммутатор доступа -> BRAS)
Поле | Значение |
---|---|
service_model | sa.ManagedObject (NAT) |
client_model | sa.ManagedObject (Коммутатор) |
single_service | False |
single_client | False |
allow_children | False |
Network | DPI Termination
Терминация Source NAT (Коммутатор доступа -> DPI)
Поле | Значение |
---|---|
service_model | sa.ManagedObject (DPI) |
client_model | sa.ManagedObject (Коммутатор) |
single_service | False |
single_client | False |
allow_children | False |
Network | Controller
Связь Контроллер-CPE
Поле | Значение |
---|---|
service_model | sa.ManagedObject (Контроллер) |
client_model | sa.ManagedObject (CPE) |
single_service | false |
single_client | True |
allow_children | False |