Правила соединения служат для преобразования линейного списка объектов, выдаваемых скриптом get_inventory в дерево путем организации соответствующих связей
Атрибут | Тип | Описание | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name | String | Название правило | |||||||||||||||||||||
is_builtin | Boolean | Признак синхронизации с дистрибутивом | |||||||||||||||||||||
description | String | Описание | |||||||||||||||||||||
context | List | Описание контекстов
| |||||||||||||||||||||
rules | List | Список правил
|
Алгоритм поиска совпадений:
Для каждого объекта get_inventory:
- Для всех правил, match_type которых совпадает с типом объекта:
- В случае, если scope начинается с - ищем от текущего объекта до начала списка объектов, в противном случае - от текущего и до конца. Ищем объект с типом, совпадающим с target_type. Если указан target_number, то проверяем и номер объекта. Переменная scope в контексте должна совпадать
- Если находим объект, то:
- Раскрываем имена match_connection и target_connection
- Если соответсующие connection присутсвуют на обоих объектах, соединяем их и переходим к обработке следующего объекта
- Проверяем следующее правило
Пример 1
Свич с sfp, причем sfp должны быть подключены к шасси в connection GiX_sfp, где X - номер порта.
Вывод get_inventory
Type | Number |
---|---|
CHASSIS | 1 |
XCVR | 25 |
XCVR | 26 |
Настройки context
Type | scope | reset_scopes |
---|---|---|
CHASSIS | chassis |
Правила
match_type | match_connection | scope | target_type | target_number | target_connection |
---|---|---|---|---|---|
XCVR | in | chassis | CHASSIS | Gi{N}_sfp |
При первом проходе списка объектов будут сформированы следующие значения контекстов
Type | Number | Context |
---|---|---|
CHASSIS | 1 | chassis=1,N=1 |
XCVR | 25 | chassis=1,N=25 |
XCVR | 26 | chassis=1,N=26 |
В результате правило сработает для трансиверов и будут построены следующие связи
Type | connection | Type | connection |
---|---|---|---|
XCVR 25 | in | CHASSIS 1 | Gi25_sfp |
XCVR 26 | in | CHASSIS 1 | Gi26_sfp |
Пример 2
Модульный свич
Вывод get_inventory
Type | Number |
---|---|
CHASSIS | 1 |
LC | 1 |
XCVR | 5 |
XCVR | 7 |
LC | 3 |
XCVR | 1 |
XCVR | 5 |
PSU | 1 |
PSU | 2 |
Настройки context
Type | scope | reset_scopes |
---|---|---|
CHASSIS | chassis | lc |
LC | lc |
Правила
match_type | match_connection | scope | target_type | target_number | target_connection |
---|---|---|---|---|---|
PSU | in | chassis | CHASSIS | psu{N} | |
LC | in | chassis | CHASSIS | slot{N} | |
XCVR | in | lc | LC | Gi{N}_sfp |
При первом проходе списка объектов будут сформированы следующие значения контекстов
Type | Number | Context |
---|---|---|
CHASSIS | 1 | chassis=1,N=1 |
LC | 1 | chassis=1, lc=1, N=1 |
XCVR | 5 | chasis=1, lc=1, N=5 |
XCVR | 7 | chassis=1, lc=1, N=7 |
LC | 3 | chassis=1, lc=3, N=3 |
XCVR | 1 | chassis=1,lc=3, N=1 |
XCVR | 5 | chassis=1,lc=3, N=1 |
PSU | 1 | chassis=1, lc=3, N=1 |
PSU | 2 | chassis=1, lc=3, N=2 |
В результате правило сработает для трансиверов и будут построены следующие связи
Type | connection | Type | connection |
---|---|---|---|
LC 1 | in | CHASSIS 1 | slot1 |
XCVR 5 | in | LC 1 | Gi5_sfp |
XCVR 7 | in | LC 1 | Gi7_sfp |
LC 2=3 | in | CHASSIS 1 | slot3 |
XCVR 1 | in | LC 3 | Gi1_sfp |
XCVR 5 | in | LC 3 | Gi5_sfp |
PSU 1 | in | CHASSIS 1 | psu1 |
PSU 2 | in | CHASSIS 1 | psu2 |