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

Пользовательские ссылки

Пользовательские ссылки позволяют пользователям отображать произвольные гиперссылки на внешний контент в представлениях объектов InfraVision. Они полезны для перекрёстных ссылок на связанные записи в системах вне InfraVision. Например, вы можете создать пользовательскую ссылку в представлении устройства, которая ведёт на текущее устройство в системе мониторинга сети (NMS).

Пользовательские ссылки создаются путём перехода в раздел Кастомизация > Пользовательские ссылки. Каждая ссылка связана с определённым типом объекта InfraVision (площадка, устройство, префикс и т.д.) и будет отображаться в соответствующих представлениях. Каждая ссылка имеет текст отображения и URL, и данные из просматриваемого элемента InfraVision могут быть включены в ссылку с помощью кода шаблона Jinja через переменную object, а пользовательские поля — через object.cf.

Например, вы можете определить ссылку следующим образом:

  • Текст: Просмотр NMS
  • URL: https://nms.example.com/nodes/?name={{ object.name }}

При просмотре устройства с именем Router4 эта ссылка будет отрендерена как:

<a href="https://nms.example.com/nodes/?name=Router4">Просмотр NMS</a>

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

Внимание

Пользовательские ссылки полагаются на созданный пользователем код для генерации произвольного HTML-вывода, что может быть опасно. Предоставляйте разрешение на создание или изменение пользовательских ссылок только доверенным пользователям.

Контекстные данные

Следующие контекстные данные доступны в шаблоне при рендеринге текста или URL пользовательской ссылки.

Переменная Описание
object Отображаемый объект InfraVision
debug Булево значение, указывающее, включена ли отладка
request Текущий WSGI-запрос
user Текущий пользователь (если аутентифицирован)
perms Разрешения, назначенные пользователю

Хотя большинство перечисленных выше контекстных переменных будут иметь согласованные атрибуты, объект будет экземпляром конкретного объекта, просматриваемого при рендеринге ссылки. Разные модели имеют разные поля и свойства, поэтому вам может потребоваться провести некоторое исследование, чтобы определить атрибуты, доступные для использования в вашем шаблоне для конкретного типа объекта.

Проверка представления объекта в REST API обычно является удобным способом определить, какие атрибуты доступны. Вы также можете напрямую обратиться к исходному коду InfraVision для получения полного списка.

Условный рендеринг

На страницу включаются только ссылки, которые рендерятся с непустым текстом. Вы можете использовать условную логику Jinja2 для управления условиями, при которых ссылка рендерится.

Например, если вы хотите отображать ссылку только для активных устройств, вы можете установить текст ссылки как

{% if object.status == 'active' %}Просмотр NMS{% endif %}

Ссылка не появится при просмотре устройства с любым статусом, кроме "active".

В качестве другого примера, если вы хотите показывать только устройства, принадлежащие определённому производителю, вы можете сделать что-то вроде этого:

{% if object.device_type.manufacturer.name == 'Cisco' %}Просмотр NMS{% endif %}

Ссылка появится только при просмотре устройства с именем производителя "Cisco".

Группы ссылок

Имена групп могут быть указаны для организации ссылок в группы. Ссылки с одинаковым именем группы будут отображаться как выпадающее меню под одной кнопкой с именем группы.

Столбцы таблицы

Пользовательские ссылки также могут быть включены в таблицы объектов путём выбора нужных ссылок в форме конфигурации таблицы. При отображении каждая ссылка будет рендериться как гиперссылка для соответствующего объекта. При экспорте (например, как данные CSV) каждая ссылка рендерит только свой URL.