Connection Rules¶
Правила соединения служат для преобразования линейного списка объектов, выдаваемых скриптом get_inventory
в дерево путем организации соответствующих связей.
Атрибут | Тип | Описание |
---|---|---|
name | String | Название правило |
is_builtin | Boolean | Признак синхронизации с дистрибутивом |
description | String | Описание |
context | List | Описание контекстов |
type | String | тип объекта (возвращается get_inventory) |
scope | String | Название типа области, ассоциированной с данным типом |
reset_scopes | StringList | Список названий областей, которые необходимо сбрасывать |
rules | ListObject | Список правил |
match_type | String | Тип, для которого применимо правило |
match_connection | String | Название connection'а, которое будет соединено с другим объектом при срабатывании правила. В фигурных скобках могут быть указаны переменные контекста, которые будут включены в название |
scope | String | Область действия, в которой осуществляется поиск совпадения. По умолчанию поиск осуществляется к началу списка get_inventory. Если название scope начинается с минуса, поиск осуществляется в обратном направлении |
target_type | String | Тип объекта, с которым необходимо соединить данный объект |
target_number | String | Если указано, соединять объект не с первым попавшимся, а с имеющим конкретный номер |
target_connection | String | Название connection'а с другой стороны, которое будет соединено при срабатывании правила. В фигурных скобках могут быть указаны переменные контекста, которые будут включены в название |
Алгоритм поиска совпадений:¶
Для каждого объекта get_inventory
:
- Для всех правил, match_type которых совпадает с типом объекта:
- В случае, если scope начинается с - ищем от текущего объекта до начала списка объектов, в противном случае - от текущего и до конца. Ищем объект с типом, совпадающим с target_type. Если указан target_number, то проверяем и номер объекта. Переменная scope в контексте должна совпадать
- Если находим объект, то:
- Раскрываем имена match_connection и target_connection
- Если соответствующие connection присутсвуют на обоих объектах, соединяем их и переходим к обработке следующего объекта
- Проверяем следующее правило
Примеры¶
Свич с sfp
, причем sfp
должны быть подключены к шасси в connection
GiX_sfp
, где X
- номер порта.
Вывод get_inventory
:
Type | Number |
---|---|
CHASSIS | 1 |
XCVR | 25 |
XCVR | 26 |
Настройки context
Type | Scope | Reset Scope |
---|---|---|
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 |