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 |