Child pages
  • Descriptions в Inventory Interfaces. На примере DES-3200
Skip to end of metadata
Go to start of metadata

По следам  Pyrule для Inventory, который пригодится для FM каждого

Выставляем дескрипшены для портов по следующему условию:

  1. порты 1-4 магистрали на подъездные свичи, 
  2. магистральные порты 25-28 должны иметь в описании с имя соседа (требование руководства и коллеги).
  3. готовим базовый скрипт для дальнейшего полета информации
{% 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 имя соседа.

сохраняем результат

 

 

  • No labels