Назначение
Автоматическая проверка конфигов при каждом изменении на соответсвие заданным политикам конфигурирования
Затронутые системы
CM
Описание
Механизм проверки конфигов позволяет:
- Формировать библиотеку проверок (как поставляющихся вместе с дистрибутивом, так и локальных)
- Объединять проверки в политики конфигурирования и настраивать их из web-интерфейса
- Применять политики конфигурирования к группам устройств
- При каждом изменении конфига проверять его на соотвествие заданным политикам и формировать уведомления о нарушении политик
- При просмотре конфига из web-интерфейса выводить список ошибок и подсвечивать соотвествующие строки в конфигах
Дизайн
Проверки
Проверки являются программным модулем, комбинирующим код на языках python и javascript с шаблонами HTML, картинками, шаблонами CSS и HTML-файлами. В простейшем случае проверка содержит только python-модуль.
Проверки располагаются в каталоге sa/profiles/<vendor>/<system>/validations/. Проверки, состоящие только из одного python-модуля располагаются в файлах sa/profiles/<vendor>/<system>/validations/<name>.py. Проверки, содержащие несколько файлов располагаются в каталоге sa/profiles/<vendor>/<system>/validations/name/ и имеют следующую структуру
Путь | Описание |
---|---|
__init__.py | Основной модуль проверки |
tests/ | Unittest'ы |
js/ | Javascript-модули |
img/ | Картинки |
css/ | CSS-файлы |
templates/ | HTML-шаблоны |
Модуль проверки (__init__.py или <name>.py) должен содержать декларацию класса python
class Check(NOCCheck): name = "<check name>" # Название проверки (например Force10.FTOS.switchport_edgeport) profile = "<profile name>" # Название профиля config = { "name": "type" # Параметры конфигурирования (make_option)? } check_version = ... # Callable с селектором допустимых версий и платформ description = { "code": "Описание" # Описание проверки } def __init__(self, **kwargs): ... # kwargs содержит значения параметров def check(self, **kwargs): ... # Генератор, возвращающий instance CheckResult
Связанные issues
3 Comments
Unknown User (mikevlz)
Это будет отлично. Просто ваять на pyRule валидатор, который надо цеплять к каждой железке(с учетом, что на тысяче длинков надо валидацию делать - это ужас. Задолбаешься даже csv править автоматически, чтоб ее потом импортировать).
Unknown User (zi)
таки что мы имеем спустя год?
Теймур
А что мы имеем спустя четыре года?