Page tree
Skip to end of metadata
Go to start of metadata

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

Работая с большим количеством однотипной информации хорошим решением будет фильтровать и группировать её во время работы. В этой статье рассказано как в 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".

var hardver=declare("InternetGatewayDevice.DeviceInfo.HardwareVersion",{value:1}).value[0];
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 он отправит событие "0 BOOTSTRAP" на ACS, что вызовет срабатывание нашей предустановки и будет добавлено два тега.

Эти теги можно использовать для поиска CPE  в общем списке и для построения логики работы других предустановок для конкретных CPE.

  • No labels