Системные настройки и наследование в группах#
Это проект общей модели для настроек, которые администратор меняет во время работы IR. В базе хранятся два переключателя и 12 числовых параметров Change Intelligence. Все они действуют для всей установки. Справочник настроек описывает диапазоны и момент применения значений. Для этапа 2.4 второй итерации Change Intelligence первым групповым параметром выбрано окно корреляции. Его определяет группа сервиса выбранного эпизода алерта, с наследованием системного значения. Реализация запланирована в архитектуре Change Intelligence.
Как выбирается значение#
Каждый параметр по умолчанию системный. При добавлении группового переопределения разработчик явно указывает, для какого параметра оно разрешено, кто вправе его менять и когда потребитель применяет новое значение.
| Состояние параметра | Какое значение применяет IR |
|---|---|
| Параметр системный | Системное значение для всех групп. API отклоняет попытку переопределения. |
| Для параметра разрешено переопределение, группа наследует | Текущее системное значение. Изменение системной настройки действует и для этой группы. |
| Группа задала своё значение | Значение группы, даже если оно равно системному. Дальнейшие изменения системной настройки на эту группу не влияют. |
| Группа выбрала «Наследовать» | Переопределение удаляется. Со следующего чтения снова действует текущее системное значение. |
Например, для логического параметра явное false остаётся выбором группы, даже если системное значение позже сменится на true. Для фонового задания группу определяет принадлежность обрабатываемого объекта. Выбор группы в интерфейсе влияет только на то, какую группу администратор просматривает. Операция уровня установки читает системное значение.
Хранение и изменение#
Таблица system_settings содержит одну строку с типизированными полями. Глобальный администратор редактирует их в разделе Администрирование → Системные настройки. Для групповых переопределений запланирована отдельная таблица с внешним ключом на Group и максимум одной строкой на группу. В ней предусмотрены поля только для разрешённых групповых параметров. Отсутствие строки или NULL в поле означает наследование. Это оставляет false и 0 доступными явными значениями там, где они допустимы. Новая группа сразу наследует настройки, без копирования системных значений.
Общий сервис возвращает действующее значение и его источник — «система» или «группа». В групповом интерфейсе для каждого разрешённого параметра доступны явный выбор и возврат к наследованию. Глобальный администратор управляет системными значениями. Право менять групповой параметр делегируется явно и проверяется на сервере для конкретной активной группы с учётом ролей IR.
Изменение затрагивает только переданные поля. В той же транзакции аудит сохраняет автора, область действия, идентификатор группы для групповой правки и переход между прежним и новым состояниями. Переход от наследования к явному значению фиксируется даже при совпадении действующих значений. Повтор той же операции вторую запись не создаёт.
Когда появится первый групповой параметр#
Добавить таблицу переопределений вместе с первым потребителем. Для выбранного параметра указать, как потребитель определяет группу и в какой момент читает значение. При переносе из файла сохранить прежнее действующее значение на системном уровне, а группы первоначально оставить в режиме наследования.
Проверки на SQLite и PostgreSQL должны охватить две группы с разными настройками, изменение системного значения, сброс к наследованию, явное значение, совпадающее с системным, и отказ при попытке изменить чужую группу или системный параметр через групповой API. Отдельно проверить параллельные правки разных полей и откат настройки при ошибке аудита.