Каталог — это раздел DDP (портала), который содержит список всех ресурсов, их параметров и связей, а также предоставляет пользователям возможность запускать сценарии для сущностей ресурсов.
Наполнение каталога возможно в ручном режиме, либо автоматически с использованием источников данных или вебхуков.
Ресурсы
Ресурс — это шаблон или тип сущности в каталоге портала. Ресурс определяет структуру данных, параметры и свойства, которые будут наследовать все сущности данного типа. Например, ресурс «Репозитории GitLab» описывает структуру данных для репозиториев GitLab, а каждая конкретная сущность этого ресурса представляет отдельный репозиторий.
Основной принцип, заложенный в портал, заключается в том, что модель данных настраивается администратором портала. Администратор может самостоятельно создавать те ресурсы, которые ему необходимы.
Именование ресурсов
При именовании ресурсов следуйте правилам:
- «Название ресурса» может быть любым и не требует специальных префиксов или разделителей.
- «Идентификатор ресурса» должен быть уникальным в пределах всего портала.
Группировка ресурсов
Ресурсы в каталоге могут быть организованы в иерархическую структуру. Это позволяет логически группировать связанные ресурсы и улучшает навигацию в каталоге.
Для создания группы ресурсов необходимо:
- «Создать ресурсы» — создать все необходимые ресурсы, которые будут входить в группу. Например, ресурс «GitLab» может быть родительским для ресурсов «Репозитории», «Группы» и т. д.
- «Связать дочерние ресурсы с родительскими» — в нижней части сайдбара каталога включите переключатель «Изменить порядок ресурсов», затем перетащите дочерний ресурс на родительский. Дочерние ресурсы будут автоматически привязаны к родительскому и отобразятся в интерфейсе как вложенные элементы.
- «Настроить отображение» — в сайдбаре каталога родительские ресурсы отображаются с иконкой раскрытия/сворачивания, позволяющей показывать или скрывать дочерние элементы.
Для изменения порядка и группировки ресурсов (перетаскивания в сайдбаре каталога) требуется глобальное разрешение update:resources-order. Включите переключатель «Изменить порядок ресурсов» в нижней части сайдбара, чтобы активировать режим перетаскивания. Подробнее о правах доступа — в разделе «Ролевая модель».
Для просмотра дочернего ресурса у пользователя должны быть права на просмотр (read:resources) всей иерархии родительских ресурсов. Подробнее о правах доступа — в разделе «Ролевая модель».
Отображение полного пути
В интерфейсе портала (селекторы ресурсов, теги, графы связей) отображается полный путь ресурса с цепочкой родительских ресурсов, разделённых символом /. Например, если ресурс «Репозитории» является дочерним для ресурса «GitLab», то в интерфейсе будет отображаться «GitLab / Репозитории».
Страница ресурса
По умолчанию после создания ресурса на его странице будет отображаться таблица с сущностями ресурса. При клике на сущность в таблице можно перейти на её страницу.
Под заголовком страницы выводится первый абзац описания ресурса. Кнопка «Создать» в заголовке открывает форму новой сущности.
Дашборды
В форме редактирования ресурса задаются три независимых варианта использования дашбордов:
- «Использовать дашборд на странице ресурса» — выбранный дашборд выводится на странице ресурса вместо таблицы или карточек сущностей.
- «Использовать дашборд на странице сущности» — выбранный дашборд выводится на странице сущности вместо встроенного содержимого вкладки «Обзор».
- «Дополнительные вкладки с дашбордами» — дополнительные дашборды в виде вкладок на странице каждой сущности ресурса. Порядок отображения дашбордов зависит от порядка в конфигурации ресурса, доступно изменение порядка перетаскиванием. Один и тот же дашборд нельзя добавить несколько раз для одного и того же ресурса.
Список сущностей
Когда на странице ресурса отображается список сущностей, над списком расположена панель с переключателем вида, поиском и фильтрами:
- переключатель «Вид» — отображение сущностей таблицей или карточками;
- поле поиска — поиск по названию, идентификатору, описанию, значениям параметров, владельцу и команде-владельцу сущностей;
- фильтр по статусу — «Все», «В норме», «С проблемами», «Ошибка» или «Неизвестно»;
- фильтр «Команда-владелец» — сущности выбранной команды; без выбора отображаются сущности любой команды.
Поиск и фильтры действуют в обоих видах. После перехода на страницу сущности и возврата к ресурсу они сохраняются до перезагрузки страницы. Выбранный вид сохраняется в браузере отдельно для каждого ресурса.
Если сущностей нет, отображается сообщение «Сущностей пока нет». Если сущности есть, но не подходят под поиск и фильтры, отображается сообщение «Ничего не найдено. Измените поиск или фильтры».
Таблица
В таблице отображаются столбцы:
- «Название» — название сущности со ссылкой на её страницу, идентификатор и начало описания;
- «Статус» — статус сущности и число пройденных проверок, например «Проверки: 2 из 3»;
- столбцы параметров — значения параметров ресурса, кроме скрытых;
- «Владелец» — пользователь и команда, владеющие сущностью;
- «Обновлено» — дата изменения сущности и дата её создания;
- «Действия» — кнопка «Открыть» и меню сущности.
Таблицу можно отсортировать по столбцам «Название» и «Обновлено». При выборе строк внизу страницы появляется панель с числом выбранных сущностей и кнопкой «Удалить» для массового удаления.
Карточки
Каждая карточка содержит статус сущности с результатом проверок, название, идентификатор, описание, значения параметров, владельца и дату изменения. На карточке отображаются первые шесть параметров ресурса, кроме скрытых. Остальные открываются по ссылке «Ещё N параметров», которая ведёт на страницу сущности.
Нажатие на карточку открывает страницу сущности; с зажатой клавишей Ctrl (⌘ в macOS) страница открывается в новой вкладке браузера. Следующие карточки подгружаются при прокрутке страницы.
Связи между ресурсами
Каждый ресурс может быть связан с другим ресурсом или сам с собой двусторонней связью. Связи настраиваются администратором портала. После настройки связей для ресурса каждая сущность данного ресурса может быть связана с одной либо несколькими сущностями другого ресурса.
Допускается создание как вертикальных связей (сущность из одного ресурса связывается с сущностью из другого ресурса), так и горизонтальных (связываются сущности в рамках одного ресурса).
У каждой связи можно указать параметры родительского и дочернего ресурса, через которые будут связаны сущности. Данные параметры будут отображаться на графе связей при нажатии на соединительную линию между карточками ресурсов или сущностей.
Сущности
Сущность — это конкретная единица каждого ресурса. Например, если ресурс называется «Группы» и является дочерним для ресурса «GitLab», то каждая группа в GitLab, зарегистрированная в портале, является сущностью этого ресурса.
Сущности наследуют параметры ресурсов, при этом возможно задание параметров отдельно для каждой сущности.
Именование сущностей
При именовании сущностей следуйте правилам:
- «Название сущности» может быть любым и не требует специальных префиксов или разделителей.
- «Идентификатор сущности» должен быть уникальным в пределах ресурса.
Создание и редактирование сущности
Чтобы создать сущность, на странице ресурса нажмите «Создать». Чтобы изменить сущность, выберите «Редактировать» в её меню.
Форма сущности состоит из вкладок «Основная информация», «Параметры» и «Связи». Форма не сохраняется в следующих случаях:
- не заполнено название, идентификатор или обязательный параметр — под пустым параметром отображается «Поле не может быть пустым»;
- значение параметра типа «Number» или «Percentage» не является числом — под полем отображается «Значение должно быть числом»;
- название, идентификатор или описание не соответствуют регулярному выражению из настроек ресурса.
При ошибке форма открывает вкладку с первым полем, которое нужно исправить.
Создание сущности требует разрешения create:entities — глобального или для ресурса. Изменение сущности требует разрешения update:entities — глобального или для ресурса — либо разрешения update:entity для сущности. Без разрешения кнопка «Создать» на странице ресурса недоступна, а поля формы и кнопка «Сохранить» недоступны для изменения.
При изменении сущности кнопка «Сохранить» становится доступной после правки полей. При закрытии формы с несохранёнными изменениями портал запрашивает подтверждение.
Страница сущности
В заголовке страницы сущности отображаются её название, статус и способ создания, а также кнопки «Показать связи», «Добавить в избранное» и меню сущности.
Под заголовком выводятся описание сущности, команда и владелец. Длинное описание свёрнуто до трёх строк, полностью оно раскрывается по кнопке «Показать полностью».
Ниже расположены встроенные вкладки и вкладки с дашбордами. Встроенные вкладки:
- «Обзор» — блоки «Параметры», «Запуск» и «Связи».
- «Процессы» — блок «Что можно запустить» с процессами, доступными для сущности, и таблица «История запусков» с запусками процессов.
- «Действия» — блок «Что можно запустить» с действиями, доступными для сущности, и таблица «История выполнения» с запусками действий.
- «События» — события, сгенерированные для сущности.
- «История параметров» — изменения параметров сущности.
Вкладки с дашбордами из поля «Дополнительные вкладки с дашбордами» в настройках ресурса отображаются между вкладками «Обзор» и «Процессы»; порядок вкладок соответствует порядку в настройках ресурса. Если в настройках ресурса выбран дашборд для страницы сущности, на вкладке «Обзор» вместо блоков выводится этот дашборд.
Блок «Параметры»
Блок «Параметры» показывает значения параметров ресурса, кроме скрытых. В заголовке блока отображается заполненность параметров; подсказка к ней перечисляет пустые параметры.
Короткие значения выводятся сеткой. Нажатие на значение открывает его полностью: текст можно выделить или скопировать кнопкой «Копировать». У параметров типов «URL» и «Users» значение открывается значком, который появляется при наведении на параметр.
Параметры типов «JSON», «YAML», «Markdown» и «Object» выводятся отдельной строкой «Документы». Значение такого параметра открывается в окне просмотра; в нём также доступна кнопка «Копировать».
При наведении на параметр рядом с его названием появляется значок часов — он открывает историю изменений параметра. Кнопка «На момент времени» в заголовке блока показывает значения всех параметров на выбранный момент. Подробнее — в разделе «История параметров».
Блок «Запуск»
Блок «Запуск» показывает процессы или действия, доступные для сущности. Переключатель в заголовке блока выбирает список «Процессы» или «Действия» и показывает число элементов в каждом.
В блоке отображается до пяти элементов: сначала недавно запускавшиеся для этой сущности, затем остальные по названию. Для каждого элемента отображаются цвет статуса последнего запуска и время, прошедшее с него, или подпись «не запускался».
Кнопка «Запустить» открывает окно запуска выбранного процесса или действия. Если последний запуск ещё выполняется, вместо неё отображается кнопка «Открыть», которая переводит на вкладку с историей запусков. Ссылки «Все процессы и история запусков» и «Все действия и история запусков» открывают вкладки «Процессы» и «Действия».
Для запуска процессов требуется разрешение control:processes, для запуска действий — run:actions: глобальное, для ресурса или для сущности. Без разрешения кнопка «Запустить» недоступна, а подсказка к ней сообщает «Нет права на запуск». Подробнее о правах доступа — в разделе «Ролевая модель».
Блок «Связи»
Блок «Связи» показывает связанные сущности, сгруппированные по связям ресурса. Для каждой группы отображаются название связи, число связанных сущностей и первые пять из них со статусом. Название сущности ведёт на её страницу.
Ссылка «Открыть таблицей» или «Показать все N» в заголовке группы открывает окно с таблицей всех сущностей группы; в таблице доступно меню каждой сущности. Кнопка «Граф» открывает граф связей сущности.
Если у сущности нет связей, в блоке отображается сообщение «Связанных сущностей нет».
Связи между сущностями
Связи сущности отображаются на её странице в блоке «Связи» и на графе связей. Каждая сущность может быть связана с одной или несколькими сущностями того же или другого ресурса, в зависимости от настроенных связей между ресурсами.
Связи между сущностями могут создаваться в ручном режиме либо автоматически при помощи источников данных или вебхуков.
События
При создании, удалении либо изменении спецификации любой сущности генерируется событие соответствующего типа: ENTITY_CREATED, ENTITY_DELETED, ENTITY_UPDATED. Эти события нужны для следующих целей:
- «Аудит» — фиксация изменений, происходящих с сущностью в течение её жизненного цикла.
- «Настройка автоматизированных реакций» — настройка реакций на изменения спецификации сущности.
Время хранения событий ограничено и может быть настроено через файл конфигурации портала.
События сущности отображаются на вкладке «События» её страницы. В таблице событий отображаются столбцы «Тип события», «Изменённые поля», «Кем» и «Дата создания», записи отсортированы от новых к старым. Для событий изменения в столбце «Изменённые поля» перечислены изменённые название, описание, владелец, команда, статус и названия изменённых параметров.
Над таблицей доступны фильтры:
- поле поиска — поиск по событиям, включая содержимое спецификации сущности;
- фильтр по типу — «Все», «Создание», «Изменение» или «Удаление»;
- период — «Начало периода» и «Конец периода».
Кнопка «Сравнить» у события изменения открывает сравнение прежней и новой спецификации сущности в формате JSON. У событий создания и удаления эта кнопка называется «Открыть».
История параметров
Портал сохраняет историю изменений параметров каждой сущности. Для каждого изменения фиксируются прежнее и новое значение, источник изменения, дата и пользователь, выполнивший изменение. В отличие от событий, история фиксирует каждое изменение отдельного параметра, а не факт изменения спецификации сущности в целом.
Для работы истории параметров порталу требуется ClickHouse. Если ClickHouse не подключён, история не сохраняется, а вкладка «История параметров» и диалог «Параметры на момент времени» остаются пустыми. Подробнее — в разделе «ClickHouse».
Просмотр истории доступен на странице сущности:
- Вкладка «История параметров» — полный список изменений всех параметров сущности.
- Значок часов рядом с названием параметра в блоке «Параметры» — история изменений выбранного параметра в отдельном диалоговом окне. Значок появляется при наведении на параметр.
- Кнопка «На момент времени» в заголовке блока «Параметры» — значения всех параметров сущности на выбранную дату и время.
Таблица истории
В таблице истории отображаются столбцы «Параметр», «Изменение», «Источник», «Кем изменено» и «Дата изменения», записи отсортированы от новых к старым. В столбце «Изменение» прежнее и новое значение показаны кратко: список — числом элементов, например «Список · 3», объект — надписью «JSON». Кнопка «Сравнить» открывает сравнение полных значений в формате JSON.
Столбец «Кем изменено» заполняется, если изменение выполнил пользователь. Для изменений, выполненных без участия пользователя (например, при синхронизации источника данных или обработке вебхука), в столбце отображается «—».
В столбце «Источник» возможны значения:
- «Вручную» — изменение пользователем в интерфейсе.
- «Действие» — изменение при выполнении действия.
- «Источник данных» — изменение при синхронизации источника данных.
- «Вебхук» — изменение при обработке вебхука.
- «Система» — автоматическое изменение порталом.
На вкладке «История параметров» записи можно отфильтровать:
- по параметру — выберите параметр в списке «Все параметры»;
- по времени изменения — задайте «Начало периода» и «Конец периода».
В диалоговом окне с историей одного параметра доступен только фильтр по времени изменения: записи в нём всегда относятся к выбранному параметру.
Параметры на момент времени
В диалоге «Параметры на момент времени» выберите «Дату и время» и нажмите «Показать». Таблица покажет значения всех параметров сущности на выбранный момент.
Параметр не попадёт в таблицу, если на выбранный момент он ещё не существовал или его значение было удалено.
Выбрать момент в будущем нельзя. Если на выбранный момент данных нет, отображается сообщение «Нет данных на выбранный момент».
Если выбранный момент раньше срока хранения истории, таблица покажет состояние на начало сохранившейся истории, а над ней появится сообщение «Показано состояние на <дата>: за более ранний период история не хранится».
Хранение истории
По умолчанию история параметров хранится 180 дней. Срок задаётся параметром clickhouse.propertyHistory.retentionDays в ModuleConfig development-platform или в веб-интерфейсе Deckhouse Platform; значение 0 отключает удаление по сроку, и тогда история хранится бессрочно. Записи удаляются целыми календарными месяцами, поэтому фактически история хранится на срок до месяца дольше заданного.
Если на вкладке «История параметров» в фильтре указано «Начало периода» раньше срока хранения, над таблицей появляется сообщение «История за период до <дата> не хранится»: пустой список в этом случае не означает, что параметры не менялись.
Кроме срока хранения, история не переживает удаление объекта, к которому относится:
- при удалении сущности удаляется вся история её параметров;
- при удалении параметра из настроек ресурса удаляется история этого параметра у всех сущностей ресурса.
В обоих случаях историю удаляет фоновая очистка, а не само удаление объекта.
Для просмотра истории параметров требуется право на просмотр сущности: глобальное разрешение read:entities, разрешение read:entities для ресурса или разрешение read:entity для сущности. Подробнее о правах доступа — в разделе «Ролевая модель».
Избранное
Пользователь может добавить любую сущность в избранное. Для этого на странице сущности нажмите на круглую кнопку со всплывающей подсказкой «Добавить в избранное» рядом с названием сущности. Посмотреть добавленные в избранное сущности можно в разделе каталога «Избранное». Сущности в нём отображаются карточками с названием ресурса; над списком доступен поиск.
Каждый пользователь видит в разделе «Избранное» только добавленные им сущности.
Выгрузка сущностей в CSV
Портал предоставляет возможность выгрузки сущностей в CSV-файл для последующего анализа и обработки данных.
Выгрузка сущностей одного ресурса
Для выгрузки сущностей конкретного ресурса:
Откройте страницу ресурса в каталоге.
Рядом с названием ресурса нажмите на круглую кнопку со всплывающей подсказкой «Выгрузить сущности ресурса в CSV».
В выгруженный файл будут включены все сущности ресурса с учётом применённых фильтров, сортировки и пагинации.
Выгрузка сущностей нескольких ресурсов
Для выгрузки сущностей из нескольких ресурсов одновременно:
В нижней части сайдбара каталога нажмите кнопку «Выгрузить сущности».
В открывшемся диалоге выберите один или несколько ресурсов.
Нажмите кнопку «Скачать .csv».
Все сущности выбранных ресурсов будут объединены в один CSV-файл.
Для выгрузки сущностей требуется глобальное разрешение read:entities. Подробнее о правах доступа — в разделе «Ролевая модель».