nocproject.org
03:40
dvolodin: столько интересного закоммитил вчера :)
03:40
теперь бы чуть подробнее про Connection Rules, в идеале - как про интерфейсы описание
03:40
что есть context, что scope и т.д.
03:47
а ещё у asr'ки само шасси не нашлось
03:53
насчёт последнего понял: не обязательно шасси начинается на слово cisco
03:54
а на 6504 - вообще пустой результат, регэксп править надо, похоже
03:56
там скрипт тилить надо
03:56
возможно - первая строка - всегда шасси
03:57
connection rule просто понять, если смотреть на вывод get_inventory
04:02
или "chassis" in descr.lower()
04:04
а обычные, не модульные, железки сами тоже как chassis должны определяться?
04:06
если да, то, правда лучший вариант - по первой строке
04:23
да
04:23
шасси обязательно
04:23
от него все раскручивается
04:32
в общем, куча всего ещё вываливается по unknown - пилить и пилить ещё
04:37
на кисках смотришь?
04:48
lexus-omsk, а ты реально для цисок смотришь? у меня вчера не получилось протестировать, скрипт упорно возвращает []
04:48
Закоммитил модельку и правила для Juniper EX2200
04:49
можно использовать как отправную точку для мелких свичей
04:50
zi_home: у меня на 6504 так же было, я регэксп поправил, там пробелов больше перед vid
04:50
кто с джунами не работал и не поймет что за pic, fpc, pem и прочие сокращения
04:50
там куча медяхи и 4 дырки для SFP
04:51
считай, что PEM -- это блок питания
04:51
FPC -- это линейная карта
04:51
ты же понимаешь что это костыли
04:51
а PIC -- это та фигня, которая вставляется в линейную карту
04:51
считай это этим, а то тем
04:51
я до недавнего времени тоже тупил на предмет всяких ESP, RP, SIP, SPA и прочих
04:52
SIP/SPA -- хороший пример
04:52
SIP будет FPC, SPA -- PIC
04:52
для ME3400 например или ME4924 модельку с правилами, люди легче понимают циску
04:52
вот возьми отдельно взятую ME3400 и дай get_inventory от нее
04:53
обязательно как только заставлю работать скрипт
04:53
поехал я на работу
04:53
не совсем вариант, потому как пока есть много того, что вываливается по unknown и не попадает в вывод
04:53
lexus-omsk: это уже руками разбирать
04:54
максимум, что могу сделать - табличку
04:54
в которую будет писаться вендор, модель железки, выдача с get_inventory, которая unknown
04:55
чтобы смотреть централизовано и в одном месте
04:55
кстати, что касается тушенки
04:55
точнее -- обмена тушенкой
04:56
Правильный и кошерный метод -- делать приватный репо на bitbucket
04:56
и добавить его в beef.conf
04:56
примерно так
04:56
[sa_private]
04:56
enabled = true
04:57
type = sa
04:57
private = true
04:57
repo = ssh://hg@bitbucket.org/nocproject/noc-sa-beef-private
04:57
если там в правах доступа на чтение поставить меня, я смогу их вытаскивать себе
04:57
./noc beef --import -- засасывает тушенку в репозиторий
04:58
./noc beef --push -- выдавливает изменения на bitbucket
04:58
./noc beef --pull -- наоборот - вытягивает
04:59
у кого EX'ы в стеке есть?
05:25
в типах соединений нашёл DB21 - не имелось ли в виду DB25?
05:39
> db.noc.objects.find()
05:39
{ "_id" : ObjectId("52823a4f989fcf0f4f1359e4"), "data" : { "asset" : { "serial" : "WCA2210", "revision" : "Rev 03" } }, "model" : ObjectId("5274b903989fcf386bc5c381") }
05:39
{ "_id" : ObjectId("52823a4f989fcf0f4f1359e5"), "data" : { "asset" : { "serial" : "WDA2578", "revision" : "Rev 03" } }, "model" : ObjectId("5274b903989fcf386bc5c381") }
05:39
{ "_id" : ObjectId("52823a4f989fcf0f4f1359e6"), "data" : { "asset" : { "serial" : "ZX2185", "revision" : "REV 26" } }, "model" : ObjectId("5282155b989fcf6df0b68185") }
05:39
{ "_id" : ObjectId("52823a4f989fcf0f4f1359e7"), "data" : { "asset" : { "serial" : "FNS13400CND", "revision" : "None" } }, "model" : ObjectId("5274b901989fcf386bc5c225") }
05:39
{ "_id" : ObjectId("52823a4f989fcf0f4f1359e8"), "data" : { "asset" : { "serial" : "AGM133815CY", "revision" : "None" } }, "model" : ObjectId("5274b901989fcf386bc5c225") }
05:39
{ "_id" : ObjectId("52823a4f989fcf0f4f1359e9"), "data" : { "asset" : { "serial" : "ZY0223", "revision" : "REV 26" } }, "model" : ObjectId("5282155b989fcf6df0b68185") }
05:39
{ "_id" : ObjectId("52823a4f989fcf0f4f1359ea"), "data" : { "asset" : { "serial" : "FNS134009KQ", "revision" : "(" } }, "model" : ObjectId("5274b901989fcf386bc5c225") }
05:42
что то как то маловвато
05:42
"revision" : "(" } }, вот это как то странно
05:44
e_zombie: он его так и отдавал
05:44
:)
05:44
ты в sa.managedobject на вкладке inventory смотри
05:46
а как найти что это за объект?
05:47
кхм. у меня пусто в инвентори
05:48
db.noc.objects.find({"data.management.managed_object": {$exists: true}})
05:51
> db.noc.objects.find({"data.management.managed_object": {$exists: true}})
05:51
>
05:59
дерни руками asset_discovery для любого mx'а
05:59
В noc-discovery.conf в [main] советую прописать
05:59
log_jobs = /tmp/jobs
06:00
ну или любой другой каталог
06:00
и перезапустить discovery
06:00
тогда во вкладке Discovery в sa.managedobject будет виден последний лог job'а
06:01
причем, для всех методов
06:05
06:05
транзакции придумали трусы ?
06:05
это сегодняшний коммит
06:06
а
06:06
не опознало трансивер
06:06
Кинь тушенку
06:06
я тебе её вчера высылал
06:06
с этой железки
06:19
misak: ты тоже можешь проверять
06:19
MX'ы должно отрисовать
06:20
ок, я как раз апгрейдюсь на инвентори
06:21
EX2200 тоже должно рисовать
06:21
на 4200 стековые смотрю
06:21
e_zombie: в морде набивку видно?
06:24
ааа бля. ступил. в бд мног очто упал.
06:24
страниц 5
06:25
а вот в веб морде пусто
06:26
db.noc.objects.find({"data.management.managed_object": {$exists: true}})
06:27
ты где в морде смотришь-то?
06:27
внутри обьета
06:27
а надо?
06:28
тогда надо разбираться, почему пусто
06:28
get_inventory для них возвращает что-то осмысленное?
06:28
возможно у меня рассинхронизированы монго и постгрес. или чтото не того в самой бд постгресса
06:28
у меня какие то глюки идут
06:29
так что надо проверять у кого бд целая.
06:29
он репозиторий мигрирует ...
06:29
да
06:29
это на долго
06:29
это что, обратно уже геморрой
06:29
у меня 500 девайсов наберется
06:30
слабак. у меня 6300
06:30
misak: минут на 5-10
06:30
гдето 25000 коммитов
06:30
конвертилось около 5 часов
06:30
12k коммитов на 600 железок проехало за 10 минут
06:40
2013-11-13 10:37:07,797 [inv.discovery: asset_discovery(bgw2-sar)] Failed to connect: Remote connection not found: scb2
06:43
06:43
2013-11-13 10:37:07,710 [inv.discovery: asset_discovery(bgw2-sar)] Connecting RE 0:in -> SCB 0:re
06:43
2013-11-13 10:37:07,744 [inv.discovery: asset_discovery(bgw2-sar)] Connecting RE 1:in -> SCB 1:re
06:43
2013-11-13 10:37:07,748 [inv.discovery: asset_discovery(bgw2-sar)] Connecting SCB 0:in -> CHASSIS None:scb0
06:43
2013-11-13 10:37:07,764 [inv.discovery: asset_discovery(bgw2-sar)] Connecting SCB 1:in -> CHASSIS None:scb1
06:43
2013-11-13 10:37:07,796 [inv.discovery: asset_discovery(bgw2-sar)] Connecting SCB 2:in -> CHASSIS None:scb2
06:43
2013-11-13 10:37:07,797 [inv.discovery: asset_discovery(bgw2-sar)] Failed to connect: Remote connection not found: scb2
06:43
2013-11-13 10:37:07,797 [inv.discovery: asset_discovery(bgw2-sar)] Connecting FPC 0:in -> CHASSIS None:fpc0
06:43
2013-11-13 10:37:07,872 [inv.discovery: asset_discovery(bgw2-sar)] Connecting MIC 0:in -> FPC 0:mic0
06:43
2013-11-13 10:37:07,907 [inv.discovery: asset_discovery(bgw2-sar)] Connecting XCVR 0:in -> MIC 0:0/0
06:43
2013-11-13 10:37:07,918 [inv.discovery: asset_discovery(bgw2-sar)] Connecting XCVR 2:in -> MIC 0:0/2
06:43
2013-11-13 10:37:07,924 [inv.discovery: asset_discovery(bgw2-sar)] Connecting XCVR 3:in -> MIC 0:0/3
06:43
2013-11-13 10:37:07,967 [inv.discovery: asset_discovery(bgw2-sar)] Connecting XCVR 0:in -> MIC 0:1/0
06:43
2013-11-13 10:37:07,972 [inv.discovery: asset_discovery(bgw2-sar)] Connecting XCVR 1:in -> MIC 0:1/1
06:43
2013-11-13 10:37:08,011 [inv.discovery: asset_discovery(bgw2-sar)] Connecting XCVR 2:in
06:44
это нормально или чтото ещё?
06:46
а что-то включать надо в конфигах, что этот инвентори заработал ?
06:48
проверь чтобы был включён ассент
06:48
[asset_discovery]
06:48
enabled = true
06:48
save = true
06:48
# Inject new schedules every N seconds
06:48
initial_submit_interval = 900
06:48
# Upper limit of new schedule submitted at once
06:48
initial_submit_concurrency = 20
06:50
оооблять
06:50
появилось
06:50
в веб морде
07:03
а кто помнит, как игнорить некоторые типы линков ?
07:03
а то на джуне lsi интерфейсы сильно спамят
07:10
lexus-omsk, ты тут?
07:11
lexus-omsk, вопрос про дискавери инвентори, что у тебя возвращает скрипт
07:12
просто я дебаг запустил
07:12
!!! UNKNOWN: {'serial': 'ААА12345678', 'pid': 'ME-3400-24TS-D', 'name': '1', 'vid': 'V04', 'descr': 'ME-3400-24TS-D'}
07:12
2013-11-13 11:03:18,429 [Cisco.IOS.get_inventory(cat, 192.168.80.195)] Script returns with result: []
07:12
вот что он мне сказал
07:12
после небольшой правки возвращает некоорые элементы (блоки питания, шасси, некоторые карты)
07:12
да, unknown тоже много, оно не попадает в вывод
07:12
а
07:12
понятно
07:13
пойду значит модельку поправлю
07:13
он не может определить тип (шасси, карта или ещё что), надо пилить скрипт
07:13
я думал он должен вернуть все а нок разберется
07:13
посмотри в скрипте, как он шасси определяет, например
07:14
просто sfp он тоже не поймал
07:14
но видимо тут все дело в шаське
07:18
dvolodin, в скрипте кривой алгоритм для определния шасси
07:18
у свича например шасси вот так выглядит
07:18
NAME: "1", DESCR: "ME-3400-24TS-D"
07:18
я знаю
07:18
сделал какой придумал
07:18
может переделать?
07:19
чтобы первый в списке определялся как шасси?
07:19
просто [0]
07:19
у меня скрипты фейлятся
07:19
zi_rus: VSS и стеки ты как определять будешь?
07:20
у меня их нет, я не вижу как это там
07:20
сейчас дебаг мне возвращает вот так
07:20
!!! UNKNOWN: {'serial': 'ААА12345678', 'pid': 'ME-3400-24TS-D', 'name': '1', 'vid': 'V04', 'descr': 'ME-3400-24TS-D'}
07:20
2013-11-13 11:03:18,429 [Cisco.IOS.get_inventory(cat, 192.168.80.195)] Script returns with result: []
07:20
а двух sfp я тут вообще не вижу
07:29
ну вот подумать, как их различать
07:29
шасси - явно первая строка, и все PID, начинающиеся с CISCO
07:31
или где в дескрипшене фигурирует chassis (для модульных)
07:48
07:50
плюс я завел багу насчет проблемы дискавери вланов на джунах
07:51
плюс при миграции на импорте синтаксическая ощибка в слове Importing
07:52
плюс какая-то хрень в браузере поверх всех гридов
07:53
не- потерялась после рефреша
08:03
да уж, они у тебя радикально китайские :)
08:10
Я думаю для таких случаев нужно делать финт ушами
08:10
высылать part no вида "NoName | Transceiver | Unknown"
08:11
В inventory завести типы NoName | Transceiver | SFP | Unknown -- и так на каждый тип
08:12
и пусть asset disovery таки попробует его воткнуть
08:13
если удастся -- то определить, что там за дырка и воткнуть в нее как Unknown
08:14
мегапорно
08:14
И, наверное, потом отчет понадобится
08:15
для корректировки типов этого феерического барахла
08:16
так есть шанс на исправление get_inventory для Cisco? сейчас от него проку вообще нет, он не работает
08:21
как шанс встретить динозавра на улице встре
08:39
zi_rus: ну так правь
08:39
я пока ни одного толкового предложения не слышал
08:39
кроме как считать первую строчку - шасси
08:39
ну для начала пойдет а там видно будет
08:40
вот кстати вопрос по этому скрипту - обозвать SIP linecard'ом или отдельно завести?
08:42
lexus-omsk, а это сервисный модуль как FWSM или это реальная карта как ES+?
08:42
misak: закоммитил патчик для get_inventory
08:42
проверяй дальше
08:43
это карта, в которую вставлены SPA, в которые вставляются XFP
08:43
SIP -- это LINECARD
08:43
а SPA -- ну назови SUBMODULE
08:43
GSR пытаешься примотать?
08:43
ну да, помню ещё на 75-ых были порт-адаптеры - та же сущность...
08:43
не, asr100x
08:44
или надо было что попроще взять для начала...
08:46
без разницы
08:46
ну пусть будет CHASSIS - LINECARD - SUBMODULE
08:46
на 76-х еще DFC есть, который в LINECARD втыкается
08:47
а RP и ESP - как SUP на 76-ых?
08:48
dvolodin, вот такая тема работает
08:48
+ if len(objects)==0:
08:48
+ type = "CHASSIS"
08:48
+ number = None
08:48
+ part_no = match.group("pid")
08:49
08:49
но есть еще косяк
08:49
не матчит мои sfp
08:50
только шаську видит
08:53
мне тут pycharm носом тычет, что у нас в get_type number не инициализирован
08:54
да и насрать, все равно не работает
08:54
===[ show inventory ]===================================================
08:54
'NAME: "1", DESCR: "ME-3400G-12CS-D"\nPID: ME-3400G-12CS-D , VID: V03 , SN: FOC1507V496\n\nNAME: "GigabitEthernet0/13", DESCR: "1000BaseLX SFP"\nPID: Unspecified , VID: , SN: AGC1624V429 \n\nNAME: "GigabitEthernet0/14", DESCR: "1000BaseLX SFP"\nPID: Unspecified , VID: , SN: AGC1503UQXW \n\nNAME: "GigabitEthernet0/15", DESCR: "1000BaseLX SFP"\nPID: Unspecified , VID: , SN: AGC1503UQY5 \n\nNAME: "GigabitEt
08:54
hernet0/16", DESCR: "1000BaseLX SFP"\nPID: Unspecified , VID: , SN: AGC1503UQX5 \n\n\n'
08:54
========================================================================
08:54
у тебя там другой прикол
08:54
на левой оптике одинаковые серийники :)
08:55
dvolodin, почему? AGC1503UQX5 AGC1503UQY5
08:55
они разные
08:56
dvolodin, тут другая проблема
08:56
пустой VID
08:56
regexp не проходит
08:58
возможно надо силой три символа вырывать
08:58
если там пробелы, то None подставлять
09:03
мля, одинаковые серийники и у меня могут быть
09:04
я твои 76-е смотрю
09:05
inv_7606_1.beef:PID: N/A , VID: , SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: A0 , SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: 0000, SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: A , SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: A0 , SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: A0 , SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: A0 , SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: A0 , SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: A0 , SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: A0 , SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: 0000, SN: AAA12345678
09:05
inv_7606_1.beef:PID: N/A , VID: 0000, SN: AAA12345678
09:07
09:07
теперь другая байда
09:10
пошли разные типы трансиверов перебирать
09:13
дать сразу show chassis hardware со всех моих джунов ?
09:15
да не
09:15
я думаю, что я просто сделаю сейчас вывод в error_log по неизвестному типу трансивера
09:15
ок
09:15
у нас этой китайской хрени полно :(
09:21
misak: поправил
09:21
у меня вообще есть нехорошая идея
09:22
вести базу дублирующихся серийников
09:22
если просекаем дубль -- запоминаем, куда воткнут этот трансивер и присваеваем ему уникальный серийник
09:23
типа NOC12345678
09:23
:)
09:24
ifqnfffyf
09:24
шайтаааана
09:28
тут вопрос вот в чем -- как просекать, что это именно дублирующийся серийник, а не переткнули оптику
09:29
или просто руками заполнять
09:30
выводить в ялярмы и потом разбираться уже по факту
09:36
dvolodin: а как можно было игнорировать некоторые интерфейсы на объекте ? ну типа lsi на джунах ?
09:45
dvolodin, это я позатирал, не обращай внимания
09:45
две сфп с одни серийником работать не будут
09:46
дивные эффекты на железке можно наблюдать если такое произойдет
09:47
а где у нас второй Дмитрий? третий отпуск за год?
09:49
а
09:49
блин
09:49
а я думал у тебя все такие :)
09:56
dvolodin, на самом деле в теории возможно на сети иметь пару трансиверов с одинаковыми серийниками (мне рассказывали как китайцы копируют оригинальную циску), но на разных железках, как бы если ты обнаружил один серийник который был в другом, то срабаты
09:56
вает триггер и выполняется поиск на старом месте. вот тебе и ответ, переткнули сфп или это дубликат
09:57
о! поперло инвентори !
09:58
на Д-линки есть или еще нет ?
09:58
misak, откуда, есть только джуны и немного циски
09:58
запили длинки, будут тебе длинки
09:59
вот есть у меня 3627 длтнк
09:59
я даже не знаю какой командой там инвентори выдернуть
09:59
там кроме show switch ничего нет
09:59
да и он показывает только серийник свича
10:03
zi_rus: подумаю над таким алгоритмом, да
10:03
предлагаешь перетыкание железки, как и линки, в два хода делать?
10:04
обнаружил ее на новом месте -- сходил на старую
10:04
если на старой она пропала -- тогда ее и переносим?
10:04
misak: увидел набивку?
10:04
почему нет, это логично
10:06
а с линками реализовали такую штуку уже?
10:06
ну да
10:06
а если увидел ее там и там -- серийник в отстойник
10:07
повозиться немного придется, но реализуемо
10:07
будет табличка pending movements
10:07
это не самое важное, надо бы со скриптом разобраться чтобы он смог инфу собирать, пока что проблемы с regexp, как я понимаю
10:08
и логирование всех перемещений за N-цать лет для выяснения в случае чего )
10:08
пока оно только засовывать умеет
10:08
доставать - нет
10:18
zi_rus: новые прошивки показывают серийник модуля
10:28
посмотрите последний коммит
10:30
dvolodin, почему это не работает?
10:30
+ vid = match.group("vid").strip()
10:30
+ if len(vid) == 0:
10:30
+ vid = None
10:30
он должен начать складывать неизвестные модельки в noc.unknown_models
10:30
он достаточно умный
10:30
когда в базе появится модель для этой железки, автоматом почистится из unknown models
10:31
if not vid:
10:31
!!! UNKNOWN: {'serial': 'AGC1503UQXW', 'pid': 'Unspecified', 'name': 'GigabitEthernet0/14', 'vid': ' ', 'descr': '1000BaseLX SFP'}
10:31
видишь vid
10:31
он не пустой
10:31
хотя я его стрипаю
10:31
match.group("vid") его выдает?
10:31
- "revision": match.group("vid"),
10:31
+ "revision": vid,
10:31
его и выдает
10:32
сделай вот так
10:32
self.debug("VID: %r" % vid)
10:32
это где и как написать, я не понимаю
10:34
dvolodin, а так работает
10:34
2013-11-13 14:33:57,842 [Cisco.IOS.get_inventory(cat-kmcity, 192.168.80.194)] VID: None
10:34
!!! UNKNOWN: {'serial': 'AGC1624V429', 'pid': 'Unspecified', 'name': 'GigabitEthernet0/13', 'vid': ' ', 'descr': '1000BaseLX SFP'}
10:34
2013-11-13 14:33:57,842 [Cisco.IOS.get_inventory(cat-kmcity, 192.168.80.194)] VID: None
10:34
!!! UNKNOWN: {'serial': 'AGC1503UQXW', 'pid': 'Unspecified', 'name': 'GigabitEthernet0/14', 'vid': ' ', 'descr': '1000BaseLX SFP'}
10:35
шасси научил его распознавать?
10:35
да
10:35
+ if len(objects) == 0:
10:35
+ type = "CHASSIS"
10:35
+ number = None
10:35
+ part_no = match.group("pid")
10:35
там еще Number нужен
10:35
в твоем коде None возвращается
10:35
а что должно?
10:35
похоже, если Name прокатывает как валидное имя интерфейса -- тоже можно считать, что у нас трансивер там
10:36
для стековых -- id в стеке
10:37
кстати насчёт имён интерфейсов - в модельках не писать например GigabitEthernet, а только 0/0/1 ? как в недавнем коммите про джунипер
10:39
dvolodin, так в чем может быть дело? почему в дебаге вид none, а в return побелы?
10:44
zi_rus: как мы потом будем мержить результаты свои трудов? :) я добавил детектирование вентиляторов и ещё несколько типов трансиверов
10:44
lexus-omsk, хз, давай подумаем
10:46
lexus-omsk, типы трансиверов это хорошо, у меня на Х2 модули ругаетсяы
10:46
а ты с сфп разобрался? я как раз пытаюсь понять
10:47
почему мало того vid кривой, так и pid неправильный
10:47
в return
10:47
кстати сейчас сверю, что там у меня выдало
10:50
кидайте мне на beef@ свои патчи и тушенку для проверки
10:51
да, тоже один с пустым vid, не попал под регексп похоже
10:51
10:51
вам вот такое надо
10:51
кодерить вдвоем один скрипт
10:51
:)
10:51
lexus-omsk, вот такой фикс я приделал
10:51
- r"PID: (?P<pid>\S+)\s*, VID: (?P<vid>\S+)\s*, SN: (?P<serial>\S+)",
10:51
+ r"PID: (?P<pid>\S+)\s*, VID:(?P<vid>......), SN: (?P<serial>\S+)",
10:52
+ vid = match.group("vid").strip()
10:52
+ if len(vid) == 0:
10:52
+ vid = None
10:52
нет
10:52
трансиверы побороли?
10:52
кстати там ещё есть какбы submodule, но физически, как я понимаю это не отдельная железка, а, наверное, часть платы
10:52
полный дифф
10:53
dvolodin, нет, вот с трансиверами воюю, почему вид и пид возвращаются из regexp, а не после обработки
10:53
твой нарко код я не понимаю
10:54
регексп на трансиверы предлагаю 1000Base\S+ ибо есть BaseT или BaseBX10D
10:54
lexus-omsk: таким можно поставить builtin: True
10:55
их ещё выцепить нормлаьно надо, а то улетят в linecards
10:55
кидайте тушенку, можно и с exception'ами
10:55
кстати да, завёл репо для приватной тушёнки, надо будет попробовать
10:58
dvolodin, кинул два, глянь
10:59
lexus-omsk: мне права на чтение тогда дай
10:59
zi_rus: а такой вариант не пойдёт? r"PID: (?P<pid>\S+)\s*, VID: (?P<vid>\S*)\s*, SN: (?P<serial>\S+)"
10:59
dvolodin - так вроде дал, только пусто там ещё
11:00
lexus-omsk, там в vid пробелы не попадут
11:00
а если вид пустой, то надо пробелы ловить
11:01
а вот блин
11:01
у меня вроде попали в вывод те элементы, что не попадали раньше, vid: '' у них
11:01
VID:\s+(?P<vid>\S*)\s*,
11:03
да, такой вариант подходит
11:03
теперь с пидом разобраться
11:05
r"PID: (?P<pid>\S+)\s*, VID:\s+(?P<vid>\S*)\s*, SN: (?P<serial>\S+)",
11:05
прокатило
11:06
pid там нормальный
11:08
dvolodin, почему нормальный? там возвращаться дольжен NoName | Transceiver | 1G | SFP LH, не 'Unspecified'
11:11
потому как description там другой
11:16
нашло у меня
11:16
теперь крашится дальше
11:17
при попытке залить в свой репо hg просит имя пользователя - это тоже в beef.conf указать?
11:18
hg@
11:18
и ssh
11:18
zi_rus: лови
11:18
ME'шка твоя распарсилась
11:21
так в конфиге и так прописано ssh://hg@bitbucket.org/apshapovalov/private-beef
11:22
ssh-ключ залил на bb свой?
11:22
поеду я на встречу, lexus-omsk попробуй смержить свои изменения с моими
13:39
2013-11-13 17:38:53,608 UNHANDLED EXCEPTION (2013-11-13 17:38:53.602506)
13:39
Working directory: /opt/noc
13:39
<type 'exceptions.ValueError'>
13:39
invalid literal for int() with base 10: 'None'
13:39
START OF TRACEBACK
13:39
------------------------------------------------------------------------
13:39
File: /opt/noc/main/jobs/update_index.py (Line: 65)
13:39
Function: get_object
13:39
58
13:39
59 def get_object(self, oid):
13:39
60 m, object_id = oid.split(":")
13:39
61 if m not in fts_models:
13:39
62 return None
13:39
63 model = fts_models[m]
13:40
он какую то бд чтоли найти не может?
14:21
кто живой скажите сколько у вас таблиц в постгрессе
14:21
вывод \dt
14:21
ээээ?
14:22
не скажу, лезть далеко =)
14:22
судя по всему это джоб, который должен snmp_ifindex для интерфейсов апдейтить
14:22
но он у тебя обломался, т.к. вместо индекса там какая-то хрень строковая
14:23
говорится что такая фигня бывает когда имя таблицы пустое а не числовое
14:23
тоесть он ничего не получил
14:23
ладно. а как лечить?
14:25
013-11-13 18:24:23,283 UNHANDLED EXCEPTION (2013-11-13 18:24:23.271377)
14:25
Working directory: /opt/noc
14:25
<type 'exceptions.IOError'>
14:25
[Errno 13] Permission denied: '/opt/noc/local/index/MAIN.tmp/nua4ylmul7ivspcyeouqufinxfee.ctmp'
14:25
START OF TRACEBACK
14:25
------------------------------------------------------------------------
14:25
File: /opt/noc/lib/python2.6/site-packages/whoosh/filedb/filestore.py (Line: 483)
14:25
Function: create_file
14:25
476 if excl:
14:25
477 flags = os.O_CREAT | os.O_EXCL | os.O_RDWR
14:25
ещё кпуче
14:28
ну это я поправил.
14:28
что с первым делать то
14:28
есть идеи?
15:25
годный совет
15:25
давай ещё
15:25
хотябы скаже где это хранится?
15:27
не скажу
15:27
не знаю
15:57
Приветствую всех
15:57
Есть вопросик по VC. Если у кого есть минутка вправить мне моск - буду благодарен.
15:58
vc нет
15:58
это иллюзия
15:59
как сказать
15:59
кому-то хватает
15:59
что такое VC домен?
16:00
зона уникальности номера vc
16:03
ага, понятно
16:03
а L1 и L2 в описании влана?
16:04
это номер тега
16:04
первая метка
16:04
вторая метка
16:04
ага, спасибо
16:05
второй день ковыряюсь, смотрю что к чему
16:06
workflow я так понимаю пока еще не реализован? только setup есть..
16:07
никто не знает как он работает кроме одного человека
16:07
сам демон, который процессы гоняет - работает
16:07
)
16:07
еще вопросик, если не сильно отвлеку
16:08
zi_home: get_inventory возвращает достаточно для того, чтобы класть в базу ME'шки
16:08
:)
16:08
Inventory - Mac DB -- это что?
16:08
dvolodin, там надо правила писать, я что-то залез туда и все затрейсилось
16:08
именно затрейсилось?
16:10
dvolodin, object models при сохранении
16:10
16:10
mik0s, база маков найденых на сети
16:12
zi_home: оно каким-то демоном заполняется? просто сейчас там пусто
16:12
дискавери его заполнит если включишь сбор
16:13
zi_home: дискавери вроде запускал - интерфейсы вытянул по крайней мере
16:14
там много где еще включать надо
16:14
в noc.conf
16:14
и setup > mo profile
16:17
а что такое setup > mo profile ?
16:18
в noc.conf mac_discovery включено
16:19
в профиле sa в дефолте mac тоже включен
16:19
значит должен собирать
16:19
если нужный скрипт есть для твоих железок
16:20
да вроде скрипты отрабатывают, пробовал
16:20
ладненько с этим еще поэкспериментирую
16:20
еще много всего предстоит поковырять
16:21
кстати, а на что влияет привязка интерфейсов в inventory?
16:21
дзен наступит когда начнешь свои костыли писать
16:21
))
16:22
почему спрашиваю - network map тоже пока не разобрался как рисовать
16:23
работает эта фича?
16:23
да
16:23
но мне не нравится как он рисует, я не пользуюсь
16:24
понятно )
16:24
пытаюсь создать chart, не пойму что такое selector
16:25
видел оно создается в sa
16:25
но не врубился для чего оно
16:25
фильтр
16:25
железок
16:26
для группировки на тех же самых диаграммах?
16:27
не только
16:27
оно везде используется
16:27
ага, ну я как пример. понятно
16:27
dvolodin, увидел баг или это я у меня косяк?
16:30
Скажите пожалуйста, а можно ли прописывать влан на определенной группе железок?
16:30
К примеру у нас пропись влана происходит ручками на всей трассе от доступа до дистрибушена
16:30
это очень интимный вопрос, каждый его решает по своему
16:30
)
16:31
то есть уже костылями используя функционал и данные noc ?
16:32
просто видел скрипт добавления влана
16:32
информацию по портам noc имеет
16:32
вот и подумал что оно може из коропки
16:32
ну вот к этому подставляешь костыли
16:32
ты тут и не нтакое увидишь
16:33
что стоило бы иметь из коробки
16:33
все на столько плохо разве?)
16:34
зависит от аппетита
16:34
))
16:34
в общем пока каша в голове
16:35
все выглядит аппетитно. буду продолжать заливать данные и смотреть
16:36
раньше были только костыли. думаю с помощью этой замечательной системы будет больше порядка по меньшей мере
16:36
посмотри на config management, там есть все кроме конфигов
16:36
а конфиги теперь в другом месте
16:37
конфиги чего? железок конфиги вроде как раз там
16:37
значит у тебя старая версия, там уже многое переделали
16:38
сейчас писк моды inventory branch
16:38
обновишься, поймешь
16:39
ох, как-то не добро звучит ))
16:40
еще слышал есть уже какие-то модули для noc
16:40
так ли это?
16:40
на сайте не нашел
16:41
интересна возможность типа racktables.org
16:41
размещение железок
16:41
кооперируйся с _4ePTeHok, он давно с этим на мозги капает
16:42
понятно. по крайней мере теперь знаю что пока нет)
16:43
кстати, еще не могу понять почему не смотря на то, что вроде аплайенс преднастроеный на виртуалке стоит, по настройкам пробежался еще раз, вроде никаких левых путей не нашел, но в заголовке браузера пишет Unconfigured Installation
16:43
чего бы это могло быть?
16:44
ага, его и курил
16:44
недокурил?
16:44
не трогал только секцию tt
16:44
тк не понял что это
16:45
какой-то реквест трекер хочет?
16:45
noc.conf:installation_name = Nizhny Novgorod
16:46
тю
16:46
понятно)) пасиб
16:52
обычно сначала спрашивают про Unconfigured Installation, а потом как прокидывать вланы
16:59
)))
17:00
ну мне сейчас интересно в первую очередь понять функционал системы
17:00
подойдет ли она мне для наших задачь
17:03
mik0s: NOC умеет прописывать порты в vlan'ы
17:03
скриптами set_switchport
17:03
только каждый трассу строит как хочет
17:05
А unconfigured installation -- крайне полезная вешь
17:05
именно так находят, где лежат конфиги
17:08
как бы это сказать, при отсутствии документации лучше бы ты туда прописал "set installation name in etc/noc.conf"
17:11
а вот и не надо
17:11
опция задокументирована
17:13
dvolodin: а какие варианты построения трассы? просто может пример такого костыля есть, чтобы понять куда копать?
17:13
я так понимаю большая часть таких костылей как раз на bash с вызовом команд noc?
17:14
staticvlan был
17:14
и на nx
17:14
ну и мои изскания
17:14
да, про nx тереби mikevlz, он там что-то мутил
17:15
)
17:15
а что такое networkx?
17:15
чтобы писать костыли для нока надо знать питон
17:16
а это питоновский модуль для прокладки путей по графу
17:16
питон весьма поверхностно. но если будет пример - разберусь
17:16
весь нок твой пример
17:17
в скрипты пока не лазил даже
17:17
dvolodin, хотел нарисовать правило для самого тупейшего случая, есть ме3400, он не модульный вообще никак, там только 2 сфп порта, я вообще не понимаю чего там и куда писать, ты все завалил джуниперовскими терминами
17:18
:)
17:18
может и нарисую
17:19
а что есть правило?
17:20
длинная история, на релизе тебе это не надо
17:21
в чем разница релиза и веток? чего вообще надо использовать и как сделать выбор?
17:21
чего-то вопросов много ...
17:21
mik0s: смотря для чего использовать
17:21
в релизах - новые фишки
17:22
наоборот
17:22
в релизах баги
17:22
а в бранчах их фиксы и еще больше багов
17:22
)))
17:23
ладно. весело у вас тут, но пора домой
17:23
если начинаешь совсем с нуля -- пропиши в upgrade.conf BRANCH=feature/inventory
17:23
думаю еще не раз вернусь)
17:23
да куда ты денешься
17:23
вот и я так думаю)))
17:23
zi_home уже раз пять пытался сбежат
17:23
сбежать
17:23
но каждый раз возвращался из соседней палаты
17:23
;)
17:24
значит три раза стимулировал побег
17:25
о дааа, я стимулирую этот побег...
17:25
постараюсь оживить ME'шную модельку сегодня
17:25
там дел на 10 минут и правила из пары строк
17:26
dvolodin,поправь там part_no
17:26
ME-3400-24-TS-A
17:26
должен быть ME-3400-24TS-A
17:26
и TS-D тоже
17:26
и TS-M
17:27
без минуса
17:27
ME-3400E-24TS-M
17:27
это так оно в консоли отдается
17:27
не понимаю откуда я крипой пид списал
17:31
бывает
17:53
логи job'ов в web'е рулят
18:07
ты там еще в data.asset наколбасил
18:14
ну да, я про него и говорил
18:14
name это же вторичное
18:33
есть
18:47
zi_home: лови
18:47
остальные переделаешь по образу и подобию
18:47
connection rule для них одинаков будет
18:47
он же подойдет для любых нестектовых свичей с sfp-дыркой
18:48
нестековых
18:53
чтобы работало, нужно соблюдать правила именования портов
18:53
поймешь там все
18:53
для стековых железок они будут sfpX/Y
18:53
где X - номер в стеке
18:53
номер стека
18:54
а чего ME-3400-24TS-A не поправил?
18:55
part_no кривой поправил только
18:55
пройдись там, проверь
18:55
общее понимание, как и что с чем связано уже должно быть
18:56
dvolodin, я стер Connection rule который был привязан к модели теперь не открывается список, ошибку выдает
18:57
это да, плохо сделал
18:57
модель уже в JSON?
18:57
я догадывался что может быть плохо, но думал там обновится что надо
18:58
я врубил сигналы на mongoengine
18:58
теперь и на апдейте затресилось
18:58
видимо из-за этого
18:58
попробую сделать корректный отлуп для таких случаев
18:58
да сделай прозе
18:58
снеси все connection rule в моделях
18:59
db.noc.objectmodels.update({}, {connection_run: null})
19:00
не помогло
19:06
сделал db.noc.objectmodels.drop()
19:06
и апдейт
19:16
да
19:16
кое что
19:20
dvolodin, ну вот началось
19:20
Failed to connect: Incompatible connection types: Transceiver | SFP - Transceiver | SFP | Cisco
19:21
да, это нормально пока
19:22
на самом деле из Cisco'вского inventory нужно отдавать неродные трансиверы как вендора NoName, но Cisco-compatible
19:22
кем они и являются
19:22
или у тебя service unsupported-transceivers?
19:22
вообще это родные циски только пид не отдают, так что считаем их noname
19:24
ну вот так, маркированы они как Cisco GLC-LH-SM
19:24
а в инвентори PID Гтызусшашув
19:24
unspecified
19:25
а новые - нормальные
19:25
NAME: "GigabitEthernet0/1", DESCR: "1000BaseLX SFP"
19:25
PID: GLC-LH-SMD , VID: V01 , SN: FNS17050K4A
19:25
эти отдают пид правильно
19:25
их считаем циской
19:28
GLC-T медная вообще пустой пид отдает
19:28
NAME: "GigabitEthernet0/1", DESCR: "10/100/1000BaseTX SFP"
19:28
PID: , VID: , SN: AGM15052167
19:32
dvolodin, я тут подкрутил модели, в логах стало хорошо
19:32
2013-11-13 23:27:47,802 [inv.discovery: asset_discovery(cat-kmcity-4)] Connecting XCVR 1:in -> CHASSIS None:sfp1
19:32
2013-11-13 23:27:47,808 [inv.discovery: asset_discovery(cat-kmcity-4)] Connecting XCVR 2:in -> CHASSIS None:sfp2
19:32
а в инвентори пустота
19:36
смотри секцию asset
19:36
asset -> management -> managed = true
19:37
эээм
19:37
что за секция
19:39
все перерыл
19:39
не понимаю что это и где
19:42
в ModelData
19:42
открой мою ME-шку
19:43
у тебя на моделях не прописано, что их нужно связывать с managed object'ами
19:45
если там принзак стоит, то asset_discovery пропишет рядом managed object
19:45
именно по нему ищется, что рисовать для железки в морде
19:50
только что обнаружил, что поломал совместимость с монгой < 2.4
19:50
:)
19:52
пофиг, у меня 2.4.7
20:10
накати апдейты
20:10
лажанулся с unknown models малость
20:10
сейчас очень красиво видно в отдельном приложении где и чего не хватает
20:14
у меня оно вообще не работало
20:17
один хер unknown models пустой
20:17
хотя наверное просто не нашел еще таких
20:21
у меня 2 страницы
20:21
даже 7201 нашлись
20:23
ну вот, набивай модельки
20:24
ты ME-шки поправил?
20:24
я поправил, обновился, она мне обратно все сломала :)
20:26
надо поправить, вставить в json и обновляться
20:26
В JSON preview явно нужна кнопка - отправить
20:26
:)
20:29
ладно, я завтра МЕ-шки постараюсь причесать и пришлю json
21:14
Сделал одну 2960 и пару 3560
21:14
красота
Share this page
Share this page: