По следам Pyrule для Inventory, который пригодится для FM каждого
Выставляем дескрипшены для портов по следующему условию:
- порты 1-4 магистрали на подъездные свичи,
- магистральные порты 25-28 должны иметь в описании с имя соседа (требование руководства и коллеги).
- готовим базовый скрипт для дальнейшего полета информации
{% load python %} {% var cmd internal %} {% var Client str %} {% var po str %} {% var id str %} {% var speed str %} {% python %} from noc.inv.models import * from noc.sa.models import * from noc.ip.models import * from noc.vc.models import * from noc.lib.ip import IP from noc.lib.text import split_alnum interface = Interface.objects.filter(managed_object=context["object"].id, type="physical") context["cmd"]="\n" for i in interface: if int(i.name) < 5: context["cmd"]+="config ports " + i.name + " description uplink\n" if i.link: nei_link = str(i.link) nei_obj = str(context["object"].name) + ':' + ' ' + i.name + ',' if nei_obj in nei_link: nei_link = str(i.link).split(',')[1].split(')')[0] else: nei_link = str(i.link).split(',')[0].split('(')[1] context["cmd"]+="config ports " + i.name + " description uplink " + nei_link + "\n" context["cmd"]+="save all\n" {% endpython %} {{cmd}}
Операция планируется как разовая, поэтому делал через снипет-ы
строка 14 - выбираем все интерфейсы для данного коммутатора
строка 16-26 - непосредственно работа с полученными данными
строка 17-18 - выполняем первое требование, порты 1-4 получают дескрипшен
19-26 выставляем дескрипшены для портов у которых есть линк.
строки 22-25 выдергиваем из i.link имя соседа.
сохраняем результат