Перейти к основному содержимому

Автоматическое присвоение тегов к парку маршрутизаторов на сети

Немного теории


Работая с большим количеством однотипной информации хорошим решением будет фильтровать и группировать её во время работы. В этой статье рассказано как в GenieACS использовать "Tags" для фильтрации, группировки и условий срабатывания скриптов.

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

Для присвоения значений в GenieACS используется функция declare. Для добавления тега устройству, присвойте ему значение true, для удаления тега присвойте ему значение false.

Добавление и удаление тегов

В первой строке примера мы присвоим тег SNR-CPE-ME2-Lite, во второй строке показано удаление. declare("Tags.SNR-CPE-ME2-Lite", null, {value: true}); // добавление тега declare("Tags.SNR-CPE-ME2-Lite", null, {value: false}); // удаление тега

Вы можете воспользоваться подготовленным скриптом либо изменить его под ваши нужды, под логику работы вашей ACS. Этот скрипт присваивает по два тега на каждое устройство, хороший вариант запускать его при событии 0 BOOTSTRAP: первый тег с названием модели присваивается на основании значения InternetGatewayDevice.DeviceInfo.HardwareVersion модели устройства (в скрипте только для SNR-CPE), второй тег START. Если сопоставить InternetGatewayDevice.DeviceInfo.HardwareVersion со значением из скрипта не удалось, то в /var/log/genieacs/genieacs-cwmp-access.log будет записано "hardver not in the list".

Скрипт для добавления тегов
if (hardver=="SNR-CPE-MD2"){
declare("Tags.SNR-CPE-MD2", null, {value: true});
declare("Tags.START", null, {value: true});
}
else if (hardver=="SNR-CPE-ME2-Lite"){
declare("Tags.SNR-CPE-ME2-Lite", null, {value: true});
declare("Tags.START", null, {value: true});
}
else if (hardver=="SNR-CPE-ME2-SFP"){
declare("Tags.SNR-CPE-ME2-SFP", null, {value: true});
declare("Tags.START", null, {value: true});
}
else if (hardver=="SNR-CPE-ME2"){
declare("Tags.SNR-CPE-ME2", null, {value: true});
declare("Tags.START", null, {value: true});
}
else if (hardver=="SNR-CPE-ME1"){
declare("Tags.SNR-CPE-ME1", null, {value: true});
declare("Tags.START", null, {value: true});
}
else if (hardver=="SNR-CPE-MD1.1"){
declare("Tags.SNR-CPE-MD1.1", null, {value: true});
declare("Tags.START", null, {value: true});
}
else if (hardver=="SNR-CPE-W4N"){
declare("Tags.SNR-CPE-W4N", null, {value: true});
declare("Tags.START", null, {value: true});
}
else if (hardver=="SNR-CPE-ME2-SFP Lite"){
declare("Tags.SNR-CPE-ME2-SFP Lite", null, {value: true});
declare("Tags.START", null, {value: true});
}
else {log('hardver not in the list');
}

Создание предустановки


Добавьте скрипт, который будет назначать теги устройствам, для этого перейдите в раздел Admin >> Provisions >> New, вставьте скрипт и сохраните.

Создайте предустановку в Admin >> Presets и нажмите кнопку New. Задайте нужные вам параметры для предустановки, но также объясним логику данного примера:

  1. Name - здесь можно задать имя для предустановки.
  2. Channel - используется для логической группировки предустановок. При сбое одной из предустановок на канале, все другие предустновки на этом канале временно перестанут работать.
  3. Weight - предустановки с большим весом имеют приоритет т.к. нам надо присвоить теги вначале, то лучше установить вес больший чем у других предустановок.
  4. Schedule - задается время в cron формате, когда предустановка работает т.к. нам надо чтобы предустановка работала всегда, то поле оставляем пустым.
  5. Events - предустановка будет выполняться при получении указанного кода события. В логике примера используется событие "0 BOOTSTRAP", которое CPE отправит на ACS при первичной авторизации, но также .хорошим решением будет использовать событие "1 BOOT".
  6. Precondition - можно задать условие, в нашем примере предустановка сработает если тег START отсутствует.
  7. Provision - здесь выбирается скрипт с которым работает предустановка. Выбираем ранее созданный скрипт.
  8. Arguments - можно передать внешние параметры для предустановки, в этом примере не используется. Меню настройки предустановки для выдачи тегов на CPE

Теперь после настройки при подключении CPE он отправит событие "0 BOOTSTRAP" на ACS, что вызовет срабатывание нашей предустановки и будет добавлено два тега. Эти теги можно использовать для поиска CPE в общем списке и для построения логики работы других предустановок для конкретных CPE. Успешно добавленные теги на роутеры в списке устройств на ACS