Назначение

Автоматическая проверка конфигов при каждом изменении на соответсвие заданным политикам конфигурирования

Затронутые системы

CM

Описание

Механизм проверки конфигов позволяет:

  1. Формировать библиотеку проверок (как поставляющихся вместе с дистрибутивом, так и локальных)
  2. Объединять проверки в политики конфигурирования и настраивать их из web-интерфейса
  3. Применять политики конфигурирования к группам устройств
  4. При каждом изменении конфига проверять его на соотвествие заданным политикам и формировать уведомления о нарушении политик
  5. При просмотре конфига из 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

Unable to locate Jira server for this macro. It may be due to Application Link configuration.

  • No labels

3 Comments

  1. Unknown User (mikevlz)

    Это будет отлично. Просто ваять на pyRule валидатор, который надо цеплять к каждой железке(с учетом, что на тысяче длинков надо валидацию делать - это ужас. Задолбаешься даже csv править автоматически, чтоб ее потом импортировать).

  2. Unknown User (zi)

    таки что мы имеем спустя год?

  3. А что мы имеем спустя четыре года?