About Forum Blogs NOC Docs Downloads KB Issues Code CI Registration

nocproject.org

#nocproject.org at irc.freenode.net log.
Back to nocproject.org Back to IRC log index
Date: 13.11.2013
lexus-omsk #
03:40
dvolodin: столько интересного закоммитил вчера :)
03:40
теперь бы чуть подробнее про Connection Rules, в идеале - как про интерфейсы описание
03:40
что есть context, что scope и т.д.
dvolodin #
03:46
:)
lexus-omsk #
03:47
а ещё у asr'ки само шасси не нашлось
03:53
насчёт последнего понял: не обязательно шасси начинается на слово cisco
03:54
а на 6504 - вообще пустой результат, регэксп править надо, похоже
dvolodin #
03:56
там скрипт тилить надо
03:56
возможно - первая строка - всегда шасси
03:57
connection rule просто понять, если смотреть на вывод get_inventory
lexus-omsk #
04:02
или "chassis" in descr.lower()
04:04
а обычные, не модульные, железки сами тоже как chassis должны определяться?
04:06
если да, то, правда лучший вариант - по первой строке
dvolodin #
04:23
да
04:23
шасси обязательно
04:23
от него все раскручивается
lexus-omsk #
04:32
в общем, куча всего ещё вываливается по unknown - пилить и пилить ещё
dvolodin #
04:37
на кисках смотришь?
zi_home #
04:48
lexus-omsk, а ты реально для цисок смотришь? у меня вчера не получилось протестировать, скрипт упорно возвращает []
dvolodin #
04:48
Закоммитил модельку и правила для Juniper EX2200
04:49
можно использовать как отправную точку для мелких свичей
zi_home #
04:49
ну это как сказать
dvolodin #
04:50
так и сказать
lexus-omsk #
04:50
zi_home: у меня на 6504 так же было, я регэксп поправил, там пробелов больше перед vid
zi_home #
04:50
кто с джунами не работал и не поймет что за pic, fpc, pem и прочие сокращения
dvolodin #
04:50
там куча медяхи и 4 дырки для SFP
04:51
считай, что PEM -- это блок питания
04:51
FPC -- это линейная карта
zi_home #
04:51
ты же понимаешь что это костыли
dvolodin #
04:51
а PIC -- это та фигня, которая вставляется в линейную карту
zi_home #
04:51
считай это этим, а то тем
lexus-omsk #
04:51
я до недавнего времени тоже тупил на предмет всяких ESP, RP, SIP, SPA и прочих
dvolodin #
04:52
SIP/SPA -- хороший пример
04:52
SIP будет FPC, SPA -- PIC
zi_home #
04:52
для ME3400 например или ME4924 модельку с правилами, люди легче понимают циску
dvolodin #
04:52
вот возьми отдельно взятую ME3400 и дай get_inventory от нее
zi_home #
04:53
обязательно как только заставлю работать скрипт
04:53
поехал я на работу
lexus-omsk #
04:53
не совсем вариант, потому как пока есть много того, что вываливается по unknown и не попадает в вывод
dvolodin #
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'ы в стеке есть?
lexus-omsk #
05:25
в типах соединений нашёл DB21 - не имелось ли в виду DB25?
e_zombie #
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" : "(" } }, вот это как то странно
dvolodin #
05:44
e_zombie: он его так и отдавал
05:44
:)
05:44
ты в sa.managedobject на вкладке inventory смотри
e_zombie #
05:46
а как найти что это за объект?
05:47
кхм. у меня пусто в инвентори
dvolodin #
05:48
db.noc.objects.find({"data.management.managed_object": {$exists: true}})
e_zombie #
05:51
> db.noc.objects.find({"data.management.managed_object": {$exists: true}})
05:51
>
dvolodin #
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
причем, для всех методов
e_zombie #
06:05
http://pastebin.com/5iDmuSXP
06:05
транзакции придумали трусы ?
06:05
это сегодняшний коммит
dvolodin #
06:06
а
06:06
не опознало трансивер
06:06
Кинь тушенку
e_zombie #
06:06
я тебе её вчера высылал
06:06
с этой железки
dvolodin #
06:14
пропатчил
e_zombie #
06:14
счас прочекаем
dvolodin #
06:19
misak: ты тоже можешь проверять
06:19
MX'ы должно отрисовать
misak #
06:20
ок, я как раз апгрейдюсь на инвентори
e_zombie #
06:20
отработало
dvolodin #
06:21
EX2200 тоже должно рисовать
06:21
на 4200 стековые смотрю
06:21
e_zombie: в морде набивку видно?
e_zombie #
06:21
в монго пусто
dvolodin #
06:22
смотри лог job'а
e_zombie #
06:24
ааа бля. ступил. в бд мног очто упал.
06:24
страниц 5
06:25
а вот в веб морде пусто
dvolodin #
06:26
db.noc.objects.find({"data.management.managed_object": {$exists: true}})
e_zombie #
06:26
пусто
dvolodin #
06:27
ты где в морде смотришь-то?
e_zombie #
06:27
внутри обьета
06:27
а надо?
dvolodin #
06:28
тогда надо разбираться, почему пусто
06:28
get_inventory для них возвращает что-то осмысленное?
e_zombie #
06:28
возможно у меня рассинхронизированы монго и постгрес. или чтото не того в самой бд постгресса
06:28
у меня какие то глюки идут
misak #
06:29
мля
e_zombie #
06:29
так что надо проверять у кого бд целая.
misak #
06:29
он репозиторий мигрирует ...
e_zombie #
06:29
да
06:29
это на долго
misak #
06:29
это что, обратно уже геморрой
e_zombie #
06:29
необходимое зло
misak #
06:29
у меня 500 девайсов наберется
e_zombie #
06:30
слабак. у меня 6300
misak #
06:30
:)
dvolodin #
06:30
misak: минут на 5-10
e_zombie #
06:30
гдето 25000 коммитов
06:30
конвертилось около 5 часов
dvolodin #
06:30
12k коммитов на 600 железок проехало за 10 минут
e_zombie #
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
http://pastebin.com/zNgUs3vT
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
это нормально или чтото ещё?
misak #
06:46
а что-то включать надо в конфигах, что этот инвентори заработал ?
e_zombie #
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
в веб морде
misak #
07:03
а кто помнит, как игнорить некоторые типы линков ?
07:03
а то на джуне lsi интерфейсы сильно спамят
zi_rus #
07:10
lexus-omsk, ты тут?
lexus-omsk #
07:10
да
zi_rus #
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
вот что он мне сказал
lexus-omsk #
07:12
после небольшой правки возвращает некоорые элементы (блоки питания, шасси, некоторые карты)
07:12
да, unknown тоже много, оно не попадает в вывод
zi_rus #
07:12
а
07:12
понятно
07:13
пойду значит модельку поправлю
lexus-omsk #
07:13
он не может определить тип (шасси, карта или ещё что), надо пилить скрипт
zi_rus #
07:13
я думал он должен вернуть все а нок разберется
lexus-omsk #
07:13
посмотри в скрипте, как он шасси определяет, например
zi_rus #
07:14
просто sfp он тоже не поймал
07:14
но видимо тут все дело в шаське
07:18
dvolodin, в скрипте кривой алгоритм для определния шасси
07:18
у свича например шасси вот так выглядит
07:18
NAME: "1", DESCR: "ME-3400-24TS-D"
dvolodin #
07:18
я знаю
07:18
сделал какой придумал
zi_rus #
07:18
может переделать?
07:19
чтобы первый в списке определялся как шасси?
07:19
просто [0]
misak #
07:19
у меня скрипты фейлятся
dvolodin #
07:19
zi_rus: VSS и стеки ты как определять будешь?
zi_rus #
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 я тут вообще не вижу
dvolodin #
07:29
ну вот подумать, как их различать
07:29
шасси - явно первая строка, и все PID, начинающиеся с CISCO
lexus-omsk #
07:31
или где в дескрипшене фигурирует chassis (для модульных)
misak #
07:32
dvolodin: http://pastebin.com/VjBSuJpU - у скрипта проблема с китайскими трансиверами
e_zombie #
07:33
ЫЫЫЫЫЫЫЫ
misak #
07:48
dvolodin: http://pastebin.com/VjBSuJpU - у скрипта проблема с китайскими трансиверами
07:50
плюс я завел багу насчет проблемы дискавери вланов на джунах
07:51
плюс при миграции на импорте синтаксическая ощибка в слове Importing
07:52
плюс какая-то хрень в браузере поверх всех гридов
07:53
не- потерялась после рефреша
dvolodin #
08:03
да уж, они у тебя радикально китайские :)
08:10
Я думаю для таких случаев нужно делать финт ушами
08:10
высылать part no вида "NoName | Transceiver | Unknown"
08:11
В inventory завести типы NoName | Transceiver | SFP | Unknown -- и так на каждый тип
_4ePTeHok #
08:12
Chinese SFP)
dvolodin #
08:12
и пусть asset disovery таки попробует его воткнуть
08:13
если удастся -- то определить, что там за дырка и воткнуть в нее как Unknown
08:14
мегапорно
08:14
И, наверное, потом отчет понадобится
08:15
для корректировки типов этого феерического барахла
zi_rus #
08:16
так есть шанс на исправление get_inventory для Cisco? сейчас от него проку вообще нет, он не работает
_4ePTeHok #
08:20
шанс всегда есть)
zi_rus #
08:21
как шанс встретить динозавра на улице встре
dvolodin #
08:39
zi_rus: ну так правь
zi_rus #
08:39
пытаюсь
dvolodin #
08:39
я пока ни одного толкового предложения не слышал
08:39
кроме как считать первую строчку - шасси
zi_rus #
08:39
ну для начала пойдет а там видно будет
lexus-omsk #
08:40
вот кстати вопрос по этому скрипту - обозвать SIP linecard'ом или отдельно завести?
zi_rus #
08:42
lexus-omsk, а это сервисный модуль как FWSM или это реальная карта как ES+?
dvolodin #
08:42
misak: закоммитил патчик для get_inventory
08:42
проверяй дальше
lexus-omsk #
08:43
это карта, в которую вставлены SPA, в которые вставляются XFP
dvolodin #
08:43
SIP -- это LINECARD
08:43
а SPA -- ну назови SUBMODULE
08:43
GSR пытаешься примотать?
lexus-omsk #
08:43
ну да, помню ещё на 75-ых были порт-адаптеры - та же сущность...
08:43
не, asr100x
08:44
или надо было что попроще взять для начала...
dvolodin #
08:46
без разницы
08:46
ну пусть будет CHASSIS - LINECARD - SUBMODULE
08:46
на 76-х еще DFC есть, который в LINECARD втыкается
lexus-omsk #
08:47
а RP и ESP - как SUP на 76-ых?
zi_rus #
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
вот полностью http://pastebin.com/iFPTKw7g
08:49
но есть еще косяк
08:49
не матчит мои sfp
08:50
только шаську видит
dvolodin #
08:53
мне тут pycharm носом тычет, что у нас в get_type number не инициализирован
zi_rus #
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
========================================================================
dvolodin #
08:54
у тебя там другой прикол
08:54
на левой оптике одинаковые серийники :)
zi_rus #
08:55
dvolodin, почему? AGC1503UQX5 AGC1503UQY5
08:55
они разные
08:56
dvolodin, тут другая проблема
08:56
пустой VID
08:56
regexp не проходит
08:58
возможно надо силой три символа вырывать
08:58
если там пробелы, то None подставлять
misak #
09:03
мля, одинаковые серийники и у меня могут быть
dvolodin #
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
misak #
09:07
dvolodin: http://pastebin.com/PwR39WDA - ntgthm lheufz ,fqlf
09:07
теперь другая байда
dvolodin #
09:10
пошли разные типы трансиверов перебирать
misak #
09:13
дать сразу show chassis hardware со всех моих джунов ?
dvolodin #
09:15
да не
09:15
я думаю, что я просто сделаю сейчас вывод в error_log по неизвестному типу трансивера
misak #
09:15
ок
09:15
у нас этой китайской хрени полно :(
e_zombie #
09:18
http://pastebin.com/qHaGLV8r
dvolodin #
09:21
misak: поправил
09:21
у меня вообще есть нехорошая идея
09:22
вести базу дублирующихся серийников
09:22
если просекаем дубль -- запоминаем, куда воткнут этот трансивер и присваеваем ему уникальный серийник
09:23
типа NOC12345678
09:23
:)
e_zombie #
09:24
ifqnfffyf
09:24
шайтаааана
dvolodin #
09:28
тут вопрос вот в чем -- как просекать, что это именно дублирующийся серийник, а не переткнули оптику
09:29
или просто руками заполнять
e_zombie #
09:30
выводить в ялярмы и потом разбираться уже по факту
dvolodin #
09:36
да не выведешь ты
misak #
09:36
dvolodin: а как можно было игнорировать некоторые интерфейсы на объекте ? ну типа lsi на джунах ?
dvolodin #
09:36
где игнорировать?
zi_rus #
09:45
dvolodin, это я позатирал, не обращай внимания
09:45
две сфп с одни серийником работать не будут
09:46
дивные эффекты на железке можно наблюдать если такое произойдет
09:47
а где у нас второй Дмитрий? третий отпуск за год?
dvolodin #
09:49
а
09:49
блин
09:49
а я думал у тебя все такие :)
zi_rus #
09:56
dvolodin, на самом деле в теории возможно на сети иметь пару трансиверов с одинаковыми серийниками (мне рассказывали как китайцы копируют оригинальную циску), но на разных железках, как бы если ты обнаружил один серийник который был в другом, то срабаты
09:56
вает триггер и выполняется поиск на старом месте. вот тебе и ответ, переткнули сфп или это дубликат
misak #
09:57
о! поперло инвентори !
09:58
на Д-линки есть или еще нет ?
zi_rus #
09:58
misak, откуда, есть только джуны и немного циски
09:58
запили длинки, будут тебе длинки
09:59
вот есть у меня 3627 длтнк
09:59
я даже не знаю какой командой там инвентори выдернуть
09:59
там кроме show switch ничего нет
09:59
да и он показывает только серийник свича
dvolodin #
10:03
zi_rus: подумаю над таким алгоритмом, да
10:03
предлагаешь перетыкание железки, как и линки, в два хода делать?
10:04
обнаружил ее на новом месте -- сходил на старую
10:04
если на старой она пропала -- тогда ее и переносим?
10:04
misak: увидел набивку?
zi_rus #
10:04
почему нет, это логично
lexus-omsk #
10:06
а с линками реализовали такую штуку уже?
dvolodin #
10:06
ну да
10:06
а если увидел ее там и там -- серийник в отстойник
10:07
повозиться немного придется, но реализуемо
10:07
будет табличка pending movements
zi_rus #
10:07
это не самое важное, надо бы со скриптом разобраться чтобы он смог инфу собирать, пока что проблемы с regexp, как я понимаю
dvolodin #
10:08
ну да
lexus-omsk #
10:08
и логирование всех перемещений за N-цать лет для выяснения в случае чего )
dvolodin #
10:08
пока оно только засовывать умеет
10:08
доставать - нет
misak #
10:18
zi_rus: новые прошивки показывают серийник модуля
dvolodin #
10:28
посмотрите последний коммит
zi_rus #
10:30
dvolodin, почему это не работает?
10:30
+ vid = match.group("vid").strip()
10:30
+ if len(vid) == 0:
10:30
+ vid = None
dvolodin #
10:30
он должен начать складывать неизвестные модельки в noc.unknown_models
10:30
он достаточно умный
10:30
когда в базе появится модель для этой железки, автоматом почистится из unknown models
10:31
if not vid:
zi_rus #
10:31
!!! UNKNOWN: {'serial': 'AGC1503UQXW', 'pid': 'Unspecified', 'name': 'GigabitEthernet0/14', 'vid': ' ', 'descr': '1000BaseLX SFP'}
10:31
видишь vid
10:31
он не пустой
10:31
хотя я его стрипаю
dvolodin #
10:31
match.group("vid") его выдает?
zi_rus #
10:31
- "revision": match.group("vid"),
10:31
+ "revision": vid,
10:31
его и выдает
dvolodin #
10:32
сделай вот так
10:32
self.debug("VID: %r" % vid)
zi_rus #
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'}
dvolodin #
10:35
шасси научил его распознавать?
zi_rus #
10:35
да
10:35
+ if len(objects) == 0:
10:35
+ type = "CHASSIS"
10:35
+ number = None
10:35
+ part_no = match.group("pid")
dvolodin #
10:35
там еще Number нужен
zi_rus #
10:35
в твоем коде None возвращается
10:35
а что должно?
dvolodin #
10:35
похоже, если Name прокатывает как валидное имя интерфейса -- тоже можно считать, что у нас трансивер там
10:36
для стековых -- id в стеке
lexus-omsk #
10:37
кстати насчёт имён интерфейсов - в модельках не писать например GigabitEthernet, а только 0/0/1 ? как в недавнем коммите про джунипер
zi_rus #
10:39
dvolodin, так в чем может быть дело? почему в дебаге вид none, а в return побелы?
lexus-omsk #
10:44
zi_rus: как мы потом будем мержить результаты свои трудов? :) я добавил детектирование вентиляторов и ещё несколько типов трансиверов
zi_rus #
10:44
lexus-omsk, хз, давай подумаем
10:46
lexus-omsk, типы трансиверов это хорошо, у меня на Х2 модули ругаетсяы
10:46
а ты с сфп разобрался? я как раз пытаюсь понять
lexus-omsk #
10:47
что именно?
zi_rus #
10:47
почему мало того vid кривой, так и pid неправильный
10:47
в return
lexus-omsk #
10:47
кстати сейчас сверю, что там у меня выдало
dvolodin #
10:50
кидайте мне на beef@ свои патчи и тушенку для проверки
lexus-omsk #
10:51
да, тоже один с пустым vid, не попал под регексп похоже
dvolodin #
10:51
http://www.codingmonkeys.de/subethaedit/
10:51
вам вот такое надо
10:51
кодерить вдвоем один скрипт
10:51
:)
zi_rus #
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
нет
dvolodin #
10:52
трансиверы побороли?
zi_rus #
10:52
вот
10:52
http://pastebin.com/u5HGEqZn
lexus-omsk #
10:52
кстати там ещё есть какбы submodule, но физически, как я понимаю это не отдельная железка, а, наверное, часть платы
zi_rus #
10:52
полный дифф
10:53
dvolodin, нет, вот с трансиверами воюю, почему вид и пид возвращаются из regexp, а не после обработки
10:53
твой нарко код я не понимаю
lexus-omsk #
10:54
регексп на трансиверы предлагаю 1000Base\S+ ибо есть BaseT или BaseBX10D
dvolodin #
10:54
lexus-omsk: таким можно поставить builtin: True
lexus-omsk #
10:55
их ещё выцепить нормлаьно надо, а то улетят в linecards
dvolodin #
10:55
кидайте тушенку, можно и с exception'ами
lexus-omsk #
10:55
кстати да, завёл репо для приватной тушёнки, надо будет попробовать
zi_rus #
10:58
dvolodin, кинул два, глянь
dvolodin #
10:59
lexus-omsk: мне права на чтение тогда дай
lexus-omsk #
10:59
zi_rus: а такой вариант не пойдёт? r"PID: (?P<pid>\S+)\s*, VID: (?P<vid>\S*)\s*, SN: (?P<serial>\S+)"
10:59
dvolodin - так вроде дал, только пусто там ещё
zi_rus #
11:00
lexus-omsk, там в vid пробелы не попадут
11:00
а если вид пустой, то надо пробелы ловить
11:01
а вот блин
lexus-omsk #
11:01
у меня вроде попали в вывод те элементы, что не попадали раньше, vid: '' у них
zi_rus #
11:01
хм
dvolodin #
11:01
VID:\s+(?P<vid>\S*)\s*,
zi_rus #
11:03
да, такой вариант подходит
11:03
теперь с пидом разобраться
dvolodin #
11:05
r"PID: (?P<pid>\S+)\s*, VID:\s+(?P<vid>\S*)\s*, SN: (?P<serial>\S+)",
11:05
прокатило
11:06
pid там нормальный
zi_rus #
11:08
dvolodin, почему нормальный? там возвращаться дольжен NoName | Transceiver | 1G | SFP LH, не 'Unspecified'
dvolodin #
11:11
потому как description там другой
11:16
нашло у меня
11:16
теперь крашится дальше
lexus-omsk #
11:17
при попытке залить в свой репо hg просит имя пользователя - это тоже в beef.conf указать?
dvolodin #
11:18
hg@
11:18
и ssh
11:18
zi_rus: лови
11:18
ME'шка твоя распарсилась
lexus-omsk #
11:21
так в конфиге и так прописано ssh://hg@bitbucket.org/apshapovalov/private-beef
dvolodin #
11:22
ssh-ключ залил на bb свой?
11:22
поеду я на встречу, lexus-omsk попробуй смержить свои изменения с моими
e_zombie #
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
кто живой скажите сколько у вас таблиц в постгрессе
mikevlz #
14:21
это snmp
e_zombie #
14:21
вывод \dt
14:21
ээээ?
mikevlz #
14:22
не скажу, лезть далеко =)
e_zombie #
14:22
что снмп?
mikevlz #
14:22
судя по всему это джоб, который должен snmp_ifindex для интерфейсов апдейтить
14:22
но он у тебя обломался, т.к. вместо индекса там какая-то хрень строковая
e_zombie #
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
ещё кпуче
mikevlz #
14:28
супер, я считаю
e_zombie #
14:28
ну это я поправил.
14:28
что с первым делать то
14:28
есть идеи?
mikevlz #
15:25
плакать
e_zombie #
15:25
годный совет
15:25
давай ещё
15:25
хотябы скаже где это хранится?
mikevlz #
15:27
не скажу
15:27
не знаю
mik0s #
15:57
Приветствую всех
15:57
Есть вопросик по VC. Если у кого есть минутка вправить мне моск - буду благодарен.
zi_home #
15:58
vc нет
15:58
это иллюзия
mik0s #
15:59
не допилен?
zi_home #
15:59
как сказать
15:59
кому-то хватает
mik0s #
15:59
что такое VC домен?
zi_home #
16:00
зона уникальности номера vc
mik0s #
16:03
ага, понятно
16:03
а L1 и L2 в описании влана?
zi_home #
16:04
это номер тега
16:04
первая метка
16:04
вторая метка
mik0s #
16:04
QinQ типа?
zi_home #
16:04
типа да
mik0s #
16:04
ага, спасибо
16:05
второй день ковыряюсь, смотрю что к чему
16:06
workflow я так понимаю пока еще не реализован? только setup есть..
zi_home #
16:07
никто не знает как он работает кроме одного человека
dvolodin #
16:07
сам демон, который процессы гоняет - работает
mik0s #
16:07
)
16:07
еще вопросик, если не сильно отвлеку
dvolodin #
16:08
zi_home: get_inventory возвращает достаточно для того, чтобы класть в базу ME'шки
16:08
:)
mik0s #
16:08
Inventory - Mac DB -- это что?
zi_home #
16:08
dvolodin, там надо правила писать, я что-то залез туда и все затрейсилось
dvolodin #
16:08
именно затрейсилось?
zi_home #
16:10
dvolodin, object models при сохранении
16:10
http://pastebin.com/L9Ui9a7i
16:10
mik0s, база маков найденых на сети
mik0s #
16:12
zi_home: оно каким-то демоном заполняется? просто сейчас там пусто
zi_home #
16:12
дискавери его заполнит если включишь сбор
mik0s #
16:13
zi_home: дискавери вроде запускал - интерфейсы вытянул по крайней мере
zi_home #
16:14
там много где еще включать надо
16:14
в noc.conf
16:14
и setup > mo profile
mik0s #
16:17
а что такое setup > mo profile ?
zi_home #
16:17
меню
16:18
в sa
mik0s #
16:18
в noc.conf mac_discovery включено
16:19
в профиле sa в дефолте mac тоже включен
zi_home #
16:19
значит должен собирать
16:19
если нужный скрипт есть для твоих железок
mik0s #
16:20
да вроде скрипты отрабатывают, пробовал
16:20
ладненько с этим еще поэкспериментирую
16:20
еще много всего предстоит поковырять
16:21
кстати, а на что влияет привязка интерфейсов в inventory?
zi_home #
16:21
дзен наступит когда начнешь свои костыли писать
mik0s #
16:21
))
16:22
почему спрашиваю - network map тоже пока не разобрался как рисовать
16:23
работает эта фича?
zi_home #
16:23
да
16:23
но мне не нравится как он рисует, я не пользуюсь
mik0s #
16:24
понятно )
16:24
пытаюсь создать chart, не пойму что такое selector
16:25
видел оно создается в sa
16:25
но не врубился для чего оно
zi_home #
16:25
фильтр
16:25
железок
mik0s #
16:26
для группировки на тех же самых диаграммах?
zi_home #
16:27
не только
16:27
оно везде используется
mik0s #
16:27
ага, ну я как пример. понятно
zi_home #
16:27
vc domain например
mik0s #
16:27
логично
zi_home #
16:27
dvolodin, увидел баг или это я у меня косяк?
mik0s #
16:30
Скажите пожалуйста, а можно ли прописывать влан на определенной группе железок?
16:30
К примеру у нас пропись влана происходит ручками на всей трассе от доступа до дистрибушена
zi_home #
16:30
это очень интимный вопрос, каждый его решает по своему
mik0s #
16:30
)
16:31
то есть уже костылями используя функционал и данные noc ?
zi_home #
16:31
ну да
mik0s #
16:32
просто видел скрипт добавления влана
16:32
информацию по портам noc имеет
16:32
вот и подумал что оно може из коропки
zi_home #
16:32
ну вот к этому подставляешь костыли
16:32
ты тут и не нтакое увидишь
16:33
что стоило бы иметь из коробки
mik0s #
16:33
все на столько плохо разве?)
zi_home #
16:34
зависит от аппетита
mik0s #
16:34
))
16:34
в общем пока каша в голове
16:35
все выглядит аппетитно. буду продолжать заливать данные и смотреть
16:36
раньше были только костыли. думаю с помощью этой замечательной системы будет больше порядка по меньшей мере
zi_home #
16:36
посмотри на config management, там есть все кроме конфигов
16:36
а конфиги теперь в другом месте
mik0s #
16:37
конфиги чего? железок конфиги вроде как раз там
zi_home #
16:37
значит у тебя старая версия, там уже многое переделали
mik0s #
16:38
аплайенс с 0.8
zi_home #
16:38
сейчас писк моды inventory branch
16:38
обновишься, поймешь
mik0s #
16:39
ох, как-то не добро звучит ))
16:40
еще слышал есть уже какие-то модули для noc
16:40
так ли это?
16:40
на сайте не нашел
zi_home #
16:40
какие модули?
mik0s #
16:41
интересна возможность типа racktables.org
16:41
размещение железок
zi_home #
16:41
кооперируйся с _4ePTeHok, он давно с этим на мозги капает
mik0s #
16:42
понятно. по крайней мере теперь знаю что пока нет)
16:43
кстати, еще не могу понять почему не смотря на то, что вроде аплайенс преднастроеный на виртуалке стоит, по настройкам пробежался еще раз, вроде никаких левых путей не нашел, но в заголовке браузера пишет Unconfigured Installation
16:43
чего бы это могло быть?
zi_home #
16:44
noc.conf
mik0s #
16:44
ага, его и курил
16:44
недокурил?
zi_home #
16:44
да
mik0s #
16:44
не трогал только секцию tt
16:44
тк не понял что это
16:45
какой-то реквест трекер хочет?
zi_home #
16:45
noc.conf:installation_name = Nizhny Novgorod
mik0s #
16:46
тю
16:46
понятно)) пасиб
zi_home #
16:52
обычно сначала спрашивают про Unconfigured Installation, а потом как прокидывать вланы
mik0s #
16:59
)))
17:00
ну мне сейчас интересно в первую очередь понять функционал системы
17:00
подойдет ли она мне для наших задачь
dvolodin #
17:03
mik0s: NOC умеет прописывать порты в vlan'ы
17:03
скриптами set_switchport
17:03
только каждый трассу строит как хочет
17:05
А unconfigured installation -- крайне полезная вешь
17:05
именно так находят, где лежат конфиги
zi_home #
17:08
как бы это сказать, при отсутствии документации лучше бы ты туда прописал "set installation name in etc/noc.conf"
dvolodin #
17:11
а вот и не надо
17:11
опция задокументирована
mik0s #
17:13
dvolodin: а какие варианты построения трассы? просто может пример такого костыля есть, чтобы понять куда копать?
17:13
я так понимаю большая часть таких костылей как раз на bash с вызовом команд noc?
zi_home #
17:14
нет
dvolodin #
17:14
staticvlan был
17:14
и на nx
17:14
ну и мои изскания
zi_home #
17:14
да, про nx тереби mikevlz, он там что-то мутил
mik0s #
17:15
что такое nx?
zi_home #
17:15
networkx
mik0s #
17:15
)
17:15
а что такое networkx?
zi_home #
17:15
чтобы писать костыли для нока надо знать питон
17:16
а это питоновский модуль для прокладки путей по графу
mik0s #
17:16
питон весьма поверхностно. но если будет пример - разберусь
zi_home #
17:16
весь нок твой пример
mik0s #
17:17
в скрипты пока не лазил даже
zi_home #
17:17
dvolodin, хотел нарисовать правило для самого тупейшего случая, есть ме3400, он не модульный вообще никак, там только 2 сфп порта, я вообще не понимаю чего там и куда писать, ты все завалил джуниперовскими терминами
dvolodin #
17:18
:)
17:18
может и нарисую
mik0s #
17:19
а что есть правило?
zi_home #
17:20
длинная история, на релизе тебе это не надо
mik0s #
17:21
в чем разница релиза и веток? чего вообще надо использовать и как сделать выбор?
17:21
чего-то вопросов много ...
dvolodin #
17:21
mik0s: смотря для чего использовать
17:21
в релизах - новые фишки
zi_home #
17:22
наоборот
17:22
в релизах баги
17:22
а в бранчах их фиксы и еще больше багов
mik0s #
17:22
)))
17:23
ладно. весело у вас тут, но пора домой
dvolodin #
17:23
если начинаешь совсем с нуля -- пропиши в upgrade.conf BRANCH=feature/inventory
mik0s #
17:23
думаю еще не раз вернусь)
dvolodin #
17:23
да куда ты денешься
mik0s #
17:23
вот и я так думаю)))
dvolodin #
17:23
zi_home уже раз пять пытался сбежат
17:23
сбежать
17:23
но каждый раз возвращался из соседней палаты
17:23
;)
zi_home #
17:23
нет, только два
dvolodin #
17:24
значит три раза стимулировал побег
zi_home #
17:25
о дааа, я стимулирую этот побег...
dvolodin #
17:25
постараюсь оживить ME'шную модельку сегодня
17:25
там дел на 10 минут и правила из пары строк
zi_home #
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
без минуса
dvolodin #
17:27
ok
zi_home #
17:27
ME-3400E-24TS-M
17:27
это так оно в консоли отдается
17:27
не понимаю откуда я крипой пид списал
dvolodin #
17:31
бывает
17:53
логи job'ов в web'е рулят
18:07
ты там еще в data.asset наколбасил
zi_home #
18:14
ну да, я про него и говорил
18:14
name это же вторичное
dvolodin #
18:33
есть
18:47
zi_home: лови
18:47
остальные переделаешь по образу и подобию
18:47
connection rule для них одинаков будет
18:47
он же подойдет для любых нестектовых свичей с sfp-дыркой
18:48
нестековых
zi_home #
18:48
ок
dvolodin #
18:53
чтобы работало, нужно соблюдать правила именования портов
18:53
поймешь там все
18:53
для стековых железок они будут sfpX/Y
18:53
где X - номер в стеке
18:53
номер стека
zi_home #
18:54
а чего ME-3400-24TS-A не поправил?
dvolodin #
18:55
part_no кривой поправил только
18:55
пройдись там, проверь
18:55
общее понимание, как и что с чем связано уже должно быть
zi_home #
18:56
dvolodin, я стер Connection rule который был привязан к модели теперь не открывается список, ошибку выдает
dvolodin #
18:57
это да, плохо сделал
18:57
модель уже в JSON?
zi_home #
18:57
я догадывался что может быть плохо, но думал там обновится что надо
dvolodin #
18:58
я врубил сигналы на mongoengine
zi_home #
18:58
теперь и на апдейте затресилось
18:58
видимо из-за этого
dvolodin #
18:58
попробую сделать корректный отлуп для таких случаев
18:58
да сделай прозе
18:58
снеси все connection rule в моделях
zi_home #
18:58
чего чего?
dvolodin #
18:59
db.noc.objectmodels.update({}, {connection_run: null})
zi_home #
19:00
не помогло
19:06
сделал db.noc.objectmodels.drop()
19:06
и апдейт
dvolodin #
19:13
построило?
zi_home #
19:16
да
19:16
кое что
19:20
dvolodin, ну вот началось
19:20
Failed to connect: Incompatible connection types: Transceiver | SFP - Transceiver | SFP | Cisco
dvolodin #
19:21
да, это нормально пока
zi_home #
19:21
пока?
dvolodin #
19:22
на самом деле из Cisco'вского inventory нужно отдавать неродные трансиверы как вендора NoName, но Cisco-compatible
19:22
кем они и являются
19:22
или у тебя service unsupported-transceivers?
zi_home #
19:22
вообще это родные циски только пид не отдают, так что считаем их noname
dvolodin #
19:23
это как это?
zi_home #
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
а в инвентори пустота
dvolodin #
19:36
смотри секцию asset
19:36
asset -> management -> managed = true
zi_home #
19:37
эээм
19:37
что за секция
19:39
все перерыл
19:39
не понимаю что это и где
dvolodin #
19:42
в ModelData
19:42
открой мою ME-шку
19:43
у тебя на моделях не прописано, что их нужно связывать с managed object'ами
zi_home #
19:43
понял
19:44
нашел
dvolodin #
19:45
если там принзак стоит, то asset_discovery пропишет рядом managed object
19:45
именно по нему ищется, что рисовать для железки в морде
19:50
только что обнаружил, что поломал совместимость с монгой < 2.4
19:50
:)
zi_home #
19:52
пофиг, у меня 2.4.7
dvolodin #
20:10
накати апдейты
20:10
лажанулся с unknown models малость
20:10
сейчас очень красиво видно в отдельном приложении где и чего не хватает
zi_home #
20:14
у меня оно вообще не работало
20:17
один хер unknown models пустой
20:17
хотя наверное просто не нашел еще таких
dvolodin #
20:21
у меня 2 страницы
20:21
даже 7201 нашлись
zi_home #
20:23
ну вот, набивай модельки
dvolodin #
20:24
ты ME-шки поправил?
zi_home #
20:24
я поправил, обновился, она мне обратно все сломала :)
dvolodin #
20:26
надо поправить, вставить в json и обновляться
20:26
В JSON preview явно нужна кнопка - отправить
20:26
:)
zi_home #
20:29
ладно, я завтра МЕ-шки постараюсь причесать и пришлю json
dvolodin #
21:14
Сделал одну 2960 и пару 3560
21:14
красота
Tweet
Share this page
Share this page: Tweet