Перейти к содержанию

Connection Rules

Правила соединения служат для преобразования линейного списка объектов, выдаваемых скриптом get_inventory в дерево путем организации соответствующих связей.

АтрибутТипОписание
nameStringНазвание правило
is_builtinBooleanПризнак синхронизации с дистрибутивом
descriptionStringОписание
contextListОписание контекстов
typeStringтип объекта (возвращается get_inventory)
scopeStringНазвание типа области, ассоциированной с данным типом
reset_scopesStringListСписок названий областей, которые необходимо сбрасывать
rules ListObjectСписок правил
match_typeStringТип, для которого применимо правило
match_connectionStringНазвание connection'а, которое будет соединено с другим объектом при срабатывании правила. В фигурных скобках могут быть указаны переменные контекста, которые будут включены в название
scopeStringОбласть действия, в которой осуществляется поиск совпадения. По умолчанию поиск осуществляется к началу списка get_inventory. Если название scope начинается с минуса, поиск осуществляется в обратном направлении
target_typeStringТип объекта, с которым необходимо соединить данный объект
target_numberStringЕсли указано, соединять объект не с первым попавшимся, а с имеющим конкретный номер
target_connectionStringНазвание connection'а с другой стороны, которое будет соединено при срабатывании правила. В фигурных скобках могут быть указаны переменные контекста, которые будут включены в название

Алгоритм поиска совпадений:

Для каждого объекта get_inventory:

  • Для всех правил, match_type которых совпадает с типом объекта:
    • В случае, если scope начинается с - ищем от текущего объекта до начала списка объектов, в противном случае - от текущего и до конца. Ищем объект с типом, совпадающим с target_type. Если указан target_number, то проверяем и номер объекта. Переменная scope в контексте должна совпадать
    • Если находим объект, то:
      • Раскрываем имена match_connection и target_connection
      • Если соответствующие connection присутсвуют на обоих объектах, соединяем их и переходим к обработке следующего объекта
    • Проверяем следующее правило

Примеры

Свич с sfp, причем sfp должны быть подключены к шасси в connection GiX_sfp, где X - номер порта.

Вывод get_inventory:

TypeNumber
CHASSIS1
XCVR25
XCVR26

Настройки context

TypeScopeReset Scope
CHASSISchassis

Правила

match_typematch_connectionscopetarget_typetarget_numbertarget_connection
XCVRinchassisCHASSISGi{N}_sfp

При первом проходе списка объектов будут сформированы следующие значения контекстов:

TypeNumberContext
CHASSIS1chassis=1,N=1
XCVR25chassis=1,N=25
XCVR26chassis=1,N=26

В результате правило сработает для трансиверов и будут построены следующие связи

TypeconnectionTypeconnection
XCVR 25inCHASSIS 1Gi25_sfp
XCVR 26inCHASSIS 1Gi26_sfp