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: 20.11.2013
mikevlz #
04:46
dvolodin: а это нормально, что у меня платы рисуются и в шасси и отдельно?
dvolodin #
04:48
какие платы?
mikevlz #
04:48
ну я вчера сделал модели шасси FastIron 400, сделал платы, шасси, правило соединения
04:49
захожу в инвентори железки, у меня рисует шасси, в нем платы. Если свернуть шасси, то ниже идут те же платы
dvolodin #
04:50
management на платах не прописывал случайно?
mikevlz #
04:50
и еще одна тонкость. Ты не указал в описании, что надо выдавать трансиверы вслед за соответсвующей им платой. Если их выдавать отдельно в самом конце - все трансиверы пририсуются в шасси
04:51
указал :)
04:51
ща поправлю
dvolodin #
04:58
утюги завелись?
mikevlz #
04:58
угу
04:58
старые пока
04:58
только трансиверы не встают. Если я serial=None отдаю - это должно их запихнуть в шасси или нет?
Unbeerable #
04:58
от чего каталист 45-й с суп4 может периодически не отвечать на снмп-запросы? на графике загрузке проца выпадов нет. в какую сторону лучше начать копать?
04:59
проблем с IP-доступностью вроде нет, иначе они бы были заметны
04:59
причём, нок ещё на это не напарывался (ну или нигде об этом не сигнализировал), а вот мртг бывает по несколько раз в сутик
04:59
*сутки
mikevlz #
05:07
таймаута snmp не хватает на ответ?
Unbeerable #
05:10
timeout: 2s
05:10
retries: 5
mikevlz #
05:10
тогда хз
Unbeerable #
05:11
как я не люблю дебажить мистику...
lexus-omsk #
05:48
в очередной раз наткнулся на неприятный момент: нельзя так просто взять и скопировать список vlan'ов с интерфейса в sa - managed objects - interfaces - switchports
mikevlz #
05:50
dvolodin: утюги завелись, но трансиверы в порты не втыкает. Хотя по логам - вроде находит, куда втыкать
05:51
если открыть инвентори объекта - все порты -- EMPTY --
05:51
пащему?
dvolodin #
05:51
и молчит как партизан?
mikevlz #
05:52
http://pastebin.com/C6jeP6QX вот такой лог дискавери
dvolodin #
05:53
да вроде воткнулись
mikevlz #
05:55
только "вроде".
05:56
их же должно быть видно в инвентори железяки?
05:56
в порту
05:56
а там пусто...
dvolodin #
06:00
SNUNKNOWN
06:00
в этом что-то есть
mikevlz #
06:00
ну нету у меня серийника для SFP =).
06:01
какое надо отдать? отдавал None - все-равно не втыкалось
dvolodin #
06:01
потому и нет их
mikevlz #
06:01
должны быть разные?
dvolodin #
06:01
серийник нуже
06:01
да
mikevlz #
06:01
понятно
dvolodin #
06:01
иначе он один будет перетыкать по кругу
mikevlz #
06:01
и чо делать, если железка не умеет дергать серийник?
dvolodin #
06:01
думать надо
mikevlz #
06:01
понятно
dvolodin #
06:02
нужен какой-то уникальный идентификатор
mikevlz #
06:02
у меня такие же блоки питания в каждом шасси. Серийника нет, питальники у каждого шасси одинаковые
06:02
от 1 до 4 штук в зависимости от шасси
dvolodin #
06:02
блоки без серийника я нашел на Cisco 7201
mikevlz #
06:03
не, они с серийником на наклейке. Но железка наклейку смотреть не умеет
06:04
в новых железках тоже не для каждого трансивера есть серийник/вендор. Есть такое, что просто "SFP-LX"
06:05
ну и генерировать где-то внутри без привзяки к железу - значит на каждый заход сгенерится новый серийник и трансиверы/БП расплодятся хуже мошек
06:06
а с привязкой к железу - не узнаешь о смене трансивера, хотя и так не узнаешь
06:06
может генерировать и считать, что не менялось, а если чо - кнопкой "достать" из железки, чтоб новый загенерило?
dvolodin #
06:07
генерировать какой-то номер, который не будет изменяться в пределах железа
06:08
а перестановки - руками
mikevlz #
06:09
ну да
06:09
в скрипте лучше делать, или ты в джоб засунешь?
dvolodin #
06:11
подумать надо, как оно вообще
_4ePTeHok #
06:15
dvolodin, я все к вчерашнему с 6500. Смотри - есть рулзы 7600. С шасси у меня прилетает 3 VTT модуля и 2 CLK. Я делаю новые коннекшены для них как 6500, модельки опять же, и в рулах 7600 добавляю 3 слота VTT соответственно на шасси. Все верно?
dvolodin #
06:16
ну да
06:16
VTT это что за фигня?
06:16
7600 отличается от 6500 только цветом корпуса ;)
06:17
и part_no в EEPROM
_4ePTeHok #
06:17
WS-C6K-VTT=
06:18
это контроль вольтажа
06:18
из по 3 штуки на шасси
dvolodin #
06:19
интересно, зачем?
06:19
зачем ему будильник, я примерно представляю
_4ePTeHok #
06:19
dvolodin, говоришь только партнамбером - а коннекшены все те хе?
06:19
фантрей допустим
dvolodin #
06:19
если подходит к шасси - то да
06:19
карты и супы - те же
_4ePTeHok #
06:20
это то да. Ну хочешь сказать что зря делать коннекшены для 6500?
dvolodin #
06:20
почему
06:21
сделай шасси отдельное, не убудет
_4ePTeHok #
06:21
а на 7600 тоже ведь VTT есть
06:21
да, и еще скрипт get_inventory у меня не все выдергивает.. супы и карты не видит, видимо что то с regexp
06:22
поразбираюсь сегодня где затык
dvolodin #
06:23
типы проверяй
06:34
там таблица mapping'ов названий в типы
_4ePTeHok #
06:37
хм
06:37
Set context chassis = None -> chassis=None, Nchassis=7, NN=7, N=None
06:37
Reset context scopes linecard, sup, clk, vtt -> chassis=None, Nchassis=7, NN=7, N=None
06:37
Trying to connect #0. CHASSIS (chassis=None, NN=0, Nchassis=0, N=None)
06:37
т е не определяет тип?
dvolodin #
06:38
почему
06:38
тип у него CHASSIS
_4ePTeHok #
06:38
ну тогда что тут не так?)
dvolodin #
06:38
абсолютно
_4ePTeHok #
06:38
в анкноунах ничего не светится,, а БП не цепляется.
dvolodin #
06:39
хотя #0 -- это точно шасси
_4ePTeHok #
06:39
там дальше тоже самое, только номер меняется.
zi_rus #
06:41
dvolodin, открой мне страшную тайну, зачем ты разделяешь LH и LX трансиверы?
dvolodin #
06:42
я их не разделяю
06:42
их juniper разделяет
06:42
:)
zi_rus #
06:43
вот голубятня
06:43
у циски давно уже lx/lh в одном флаконе, и думать не надо
_4ePTeHok #
06:47
dvolodin, куда еще можно поглядеть?
mikevlz #
06:47
так... FastIron SX800 запилил
06:47
надо ему теперь трансиверы мучать
06:47
потом вентиляторы, БП...
dvolodin #
06:50
zi_rus: а у juniper'а давно все LH
_4ePTeHok #
06:51
кстати у 6500 модули все NAME - номера просто
zi_rus #
06:51
как подебажить?
06:51
elif "XFP" in pid or "GLC" in pid or "SFP" in descr:
06:51
number = name.split()[2].split("/")[-1]
06:51
if pid == '':
06:51
pid = "NoName | Transceiver | 1G | Unknown SFP"
06:51
return "XCVR", number, pid
dvolodin #
06:51
это нормально
06:52
zi_rus: что именно продебажить?
zi_rus #
06:52
не срабатывает if pid
06:52
или что-то еще
dvolodin #
06:52
print repr(pid) воткни
zi_rus #
06:52
NAME: "module mau 0/1/0/6", DESCR: "SFP"
06:52
PID: , VID: N/A, SN: AGM121729WG
06:52
вот это хочу отловить
_4ePTeHok #
06:53
NAME: "1", DESCR: "WS-X6K-SUP2-2GE 2 ports Catalyst 6000 supervisor 2 Rev. 2.0"
06:53
PID: WS-X6K-SUP2-2GE , VID: , SN: SAD04490A9T
Unbeerable #
06:55
кто о чём, а я снова о своём. где есть подробнее про конфигдифф пирули?
06:56
я хочу суть понять, он разбирает новый конфиг или дифф?
dvolodin #
06:56
и то и другое
06:56
и выкусывает лишнее перед diff'ом
Unbeerable #
06:57
а какие есть средства для быстрого теста таких пирулей?
dvolodin #
06:58
хм
06:58
я про такие не знаю
06:58
это обычная функция
06:59
на входе текст, и на выходе текст
06:59
тестировать можно ./noc shell
Unbeerable #
07:00
но на входе текст нового конфига?
zi_rus #
07:01
а как правильно noname вендора вернуть?
07:02
а нет
07:02
все нормально
Unbeerable #
07:03
а, я кажется понял, есть iconfigfilter, а есть iconfigdifffilter
_4ePTeHok #
07:18
dvolodin, для линейных карт и супов параметр 'number': '' критичен - или там все равно по порядку втыкаться будет в подходящие слоты?
07:20
заодно и стоит ли revision там снимать с таких штук как SUP MSFC PFC, а то они не в VID , а в Description сейчас матчит.
mikevlz #
07:22
гм... регэксп чот на re-try срабатывает, а на железе - нет :(
_4ePTeHok #
07:24
dvolodin, у меня вот такие переделки получились - http://pastebin.com/ERWYjBXC
zi_rus #
07:25
mikevlz, у меня чаще наоборот происходит
dvolodin #
07:27
_4ePTeHok: от правил зависит
_4ePTeHok #
07:27
глянь тогда пасту
dvolodin #
07:27
MSFC и PFC я нарочно выкинул
_4ePTeHok #
07:28
6500 отдает все слоты с NAME - номерами.
07:28
эм. зачем?)
07:28
пока не ясно куда и как их вставлять?
mikevlz #
07:30
dvolodin: можешь помочь с регэкспом? http://pastebin.com/z4ummwDh
07:31
там вывод с железки и сам регэксп. в re-try выдергивает серийник, в скрипте - не дергает. метод везде findall использую
_4ePTeHok #
07:33
Unknown part number for Cisco s222_rp: WS-F6K-PFC2 (WS-F6K-PFC2 Policy Feature Card 2 Rev. 2.2)
07:33
Unknown part number for Cisco s222_rp: WS-F6K-MSFC2 (WS-F6K-MSFC2 Cat6k MSFC 2 daughterboard Rev. 1.13)
07:33
Unknown part number for Cisco s222_rp: WS-X6K-S2U-MSFC2 (WS-X6K-S2U-MSFC2 2 ports Catalyst 6000 supervisor 2 Rev. 2.17)
07:33
Unknown part number for Cisco s222_rp: WS-X6416-GBIC (WS-X6416-GBIC 16 port 1000mb GBIC ethernet Rev. 2.6)
07:33
вот отсюда ревизии стоит выдергивать в отдельную переменную?)
dvolodin #
07:35
ну а почему бы нет
_4ePTeHok #
07:35
там сабматч по дескрипшену тогда придется.
dvolodin #
07:38
а
07:38
тогда нафиг не надо
mikevlz #
07:40
вопрос снимаю
07:40
регэксп верный, а вот железка ведет себя некрасиво
07:41
с включенным пейджером выводит данные по sfp, с отключенным - нет
07:41
очешуеть
_4ePTeHok #
07:42
ну тогда глянь http://pastebin.com/ERWYjBXC на предмет закомиттить, у меня с ними определяет 6500 модули.
07:43
без выдачи номеров слотов только. Они в Name лежат там))
dvolodin #
07:44
первые две правки - разумны
_4ePTeHok #
07:44
я же верно понимаю, что "number": number, - это слот?
dvolodin #
07:45
нет
_4ePTeHok #
07:45
просто порядковый номер?
dvolodin #
07:45
точнее -- для карты, да
07:45
номер слота
_4ePTeHok #
07:48
дык а чем не нравятся PFC/MSFC?
dvolodin #
07:48
нафиг они
07:48
у тебя есть привычка их выкручивать и переставлять?
_4ePTeHok #
07:48
нед. но инвентори - это ж бд того что там есть.
dvolodin #
07:49
зачем внутреннее устройство карт держать
07:49
если ты не покупаешь эти модули отдельно
_4ePTeHok #
07:49
Clk мы вроде тоже не выкручиваем
07:49
однако оно есть
dvolodin #
07:49
к нему подключается что-то
07:49
а к PFC нет
07:50
а DFC мы прописываем потому, что они закупаются отдельно и стоят как подержанный самосвал
_4ePTeHok #
07:50
ну хз, странно по стоимости решать - писать в инвентори или нет)
dvolodin #
07:53
ну не по стоимости
07:53
просто какой смысл разваливать сборку на компоненты?
07:53
если каждый компонент не живет отдельно
07:53
DFC ты можешь достать и переставить на другую карту
_4ePTeHok #
07:53
ну тогда в супе уже надо прописывать что там есть мсфц +пфц
dvolodin #
07:54
А зачем?
07:54
что даст тебе эта информация?
_4ePTeHok #
07:54
вдруг будет железка где суп без них?
mikevlz #
07:54
бугага
dvolodin #
07:55
тогда это будет другой part number
07:55
и железка будет называться ASR9k :)
mikevlz #
07:55
сделал так, что скрипт спрашивает каждый слот на предмет show media, так вывод желеки не успевает за скриптом... :(
dvolodin #
07:55
или CRS-1
mikevlz #
07:56
dvolodin: как победить? скрипт спрашивает уже 4-й слот, а железка еще выдает инфу по второму.
07:56
а когда спрашивал второй слот - еще первый отдаваться не закончил
dvolodin #
07:56
то есть она выдает промпт и продолжает досыпать вывод?
mikevlz #
07:56
нет
07:56
промпт она не выдает
dvolodin #
07:56
а как ты команды ей посылаешь?
mikevlz #
07:57
self.cli()
dvolodin #
07:57
одной?
mikevlz #
07:57
в цикле
dvolodin #
07:57
она точно должна дождаться промпта между командами
mikevlz #
07:57
self.cli("show media slot %s" % match1[0])
07:58
по логам - не ждет нифига
dvolodin #
07:58
не может такого быть
07:58
показывай логи
mikevlz #
07:59
http://pastebin.com/M7mbuctS
08:00
промпт наверное кривой, но в логе нету EVENT(PROMPT)
08:01
оно может сматчить Part#: в теории, или Serial#:
08:01
с таким промптом
08:02
Port 2/1: Type : 10GE LR 10km (SFP +)
08:02
Vendor: OEM Version:
08:02
Part# : ML-P20T Serial#: SX23222600009
08:02
Port 2/2: Type : EMPTY
08:02
пример вывода
zi_rus #
08:17
dvolodin, посмотри сюда NOC-1230
lexus-omsk #
08:25
dvolodin: если уж решил выкидывать msfc и pfc, то и из правил их выпилить надо и где они там ещё в моём патче были
dvolodin #
08:26
mikevlz: ну да
08:26
адаптивный делай
08:26
естественно, порно у тебя
08:26
lexus-omsk: я их выпилил везде
lexus-omsk #
08:28
по-моему нет, я по коммитам смотрел на bb, как обновлюсь - ещё раз проверю у себя
zi_rus #
08:30
народ, кому скучно, посмторите на это
08:30
!!! UNKNOWN: {'serial': 'ONT123602HD', 'pid': 'TRT5024EN-SMC-13', 'name': 'TenGigabitEthernet1/29', 'vid': '01', 'descr': '10Gbase-LR'}
08:30
куда можно вставить костыль в скрипт
08:31
чтобы этот китайский х2 матчился
dvolodin #
08:31
if ("Transceiver" in descr or
zi_rus #
08:31
фактически ему только type не хватает
dvolodin #
08:31
name.startswith("GigabitEthernet") or
08:31
pid.startswith("X2-")):
08:32
впиши or name.startswith("TenGigabitEthernet")
zi_rus #
08:32
ок
dvolodin #
08:32
и там еще засадка будет
zi_rus #
08:32
точно, это логично
dvolodin #
08:32
погоди, патчик дам
zi_rus #
08:33
гожу
_4ePTeHok #
08:34
а чем отличается connection type Tranciever | GBIC от Tranciever | GBIC | Cisco?
dvolodin #
08:34
http://pastie.org/8494761
_4ePTeHok #
08:34
если карта цисковская - то второй берем?
zi_rus #
08:34
_4ePTeHok, циско и не циско, есть мнение что делать не циско и отказаться от разделения
dvolodin #
08:37
10-ки, наверное, Cisco делаем
zi_rus #
08:37
dvolodin, а как же этот китаец для которого ты только что патч рисовал
08:37
кстати его как noname надо бы вернуть
08:38
хотя пофиг
_4ePTeHok #
08:39
dvolodin, connection rule указывается для всех объектов или только для шасси?
dvolodin #
08:40
только для шасси
08:49
zi_rus: помогло?
zi_rus #
08:49
да, сейчас все доделаю и в issue отпишу
_4ePTeHok #
08:50
sync-collections теперь не пишет update, если объект в JSON-файл внесли, а он уже был в БД?
zi_rus #
08:55
dvolodin, все в NOC-1230 отписал
dvolodin #
08:58
_4ePTeHok: пишет
_4ePTeHok #
08:58
непишет. вот только что перенес все в файлы. - молча прошел
08:59
удалил в морде, прогнал снова - нааписал про Created
09:00
и все же. Где еще можно нарыть информации - почему не стыкует модули с шасси?
dvolodin #
09:01
кто бы теперь это обрабатывал и коммитил
09:02
логи и правила смотреть надо
09:03
zi_rus: патч на get_inventory сомнителен
_4ePTeHok #
09:04
ох я чую весело будет параллельные патчи вносить.
zi_rus #
09:04
dvolodin, какой именно? там их три
09:04
для IOS XR возможно
dvolodin #
09:05
для IOS
09:05
я вот что думаю вообще
zi_rus #
09:05
+ if pid in ("N/A", "Unspecified", "1000BASE-LX"):?????
09:05
почему нет
09:05
если пид такой кривой, значит там левак
dvolodin #
09:06
может быть там сделать такой хитрый ход
zi_rus #
09:06
я же не настаиваю, если у тебя есть лучше решение, которое отловит такое
09:06
NAME: "GigabitEthernet1/2", DESCR: "1000BaseLH"
09:06
PID: 1000BASE-LX , VID: A0 , SN: H11L432
dvolodin #
09:07
неизвестные трансиверы отдавать как, скажем Unknown | Transceiver | 1000BASE-LX
09:07
при этом мы не знаем его тип
zi_rus #
09:07
у меня в одной железке пять таких трансиверов
dvolodin #
09:07
SFP это или GBIC
09:08
discovery при поиске будет искать только по серийнику
_4ePTeHok #
09:08
так...похоже начало цеплятся.
dvolodin #
09:09
а если это новый объект -- то ищем подходящий unknown по connection type ?
_4ePTeHok #
09:09
dvolodin, http://pastebin.com/bbDEgsQQ что бы это значило?)
09:09
каюк монге)
mikevlz #
09:10
есть, подебил его
e_zombie #
09:10
db.repairDatabase()
dvolodin #
09:10
нет
09:11
db.noc.objects.remove({_id: ObjectId("528c440a5c8b821225468b1f")})
mikevlz #
09:11
пачти
Unbeerable #
09:11
а нок пишет в логах куда-нибудь о срабатывании пируля?
dvolodin #
09:19
zi_rus: смотри
09:19
вижу пока такой алгоритм
09:20
Скрипт возвращает левые трансиверы как part no "Unknown | Transceiver | <тип>"
09:20
где тип, скажем, 1000Base-LX
09:21
для таких мы на первом этапе не проводим поиск объекта
09:21
а начинаем чесаться только когда строим соединения
09:22
проверяем, если трансивер с этим серийником в этой дырке уже есть - то хорошо
_4ePTeHok #
09:24
dvolodin, у меня эта ошибка повторяется, после выполнения джоба asset. log asset - http://pastebin.com/Cy1R8AqT
09:27
это уже правда на другой железке
zi_rus #
09:55
dvolodin, и твое предложение какое? что делать чтобы причесать это безобразие что есть сейчас
dvolodin #
10:21
погоди, сейчас колбашу
10:26
аццукий поток сознания выродился
zi_rus #
11:04
даже не знаю, чтоит ли этого бояться
11:04
*стоит
dvolodin #
11:10
стоит
zi_rus #
11:12
черт
11:13
нок и так страшная вещь
dvolodin #
11:21
да там вообще пипец вышел аццкий
11:21
суть такая
11:21
из скрипта отдавать тип трансивера
11:28
закоммитил
11:29
в общем там суть такая
11:29
скрипт на левак отдает Unknown | Transceiver | 1000BASELH
11:29
job находит под него дырку
11:29
если там есть оптипа с этим серийником - он успокаивается
11:30
если нет -- смотрит на тип дырки
11:30
скажем, видит Transceiver | SFP
11:30
дальше делает следующее колдунство
11:30
расшибает 1000BASELH на 1000 и LH
11:30
1000 заменяет на 1G
11:31
склеивает все вместе и получает No Name | Transceiver | 1G | SFP LH
11:31
и на него создает объект
11:31
если дырка будет X2 и скрипт вернет 10GBASEZR
11:32
то воткнется NoName | Transceiver | 10G | X2 ZR
11:32
как-то так :)
zi_rus #
11:32
я ничего не понял но выглядит устрашающе :)
_4ePTeHok #
11:32
особенно часть с расшибанием
dvolodin #
11:32
ага
11:32
еще раз тогда
11:33
проблема вот в чем
zi_rus #
11:33
китайцы
dvolodin #
11:33
да
zi_rus #
11:33
вот и вся проблема
dvolodin #
11:33
мы про них знаем, фактически, только media
11:33
форм-фактора не знаем
11:34
форм-фактор мы можем узнать только в момент, когда будем засовывать эту хню в дырку
11:34
это там, где job пишет trying to connect ....
11:34
и мы отклаываем обнаружение типа ровно до этого момента
11:36
так понятнее
11:36
то есть скрипт нам выдает media
11:36
и мы конвертируем его в название модели
zi_rus #
11:38
а можно и скрипт увидеть?
dvolodin #
11:39
в репо уже
11:40
у juniper'а такая проблема не стоит
11:40
он честно отдает SFP-LX, SFP+-10G-LR и так далее
11:41
алгоритм работает если киска отдает в PID N/A или Unknown
11:42
наверное, его же надо включить для PID вида 1000BASE-LX
zi_rus #
11:44
эмммм, а разве не это было в старом скрипте?
dvolodin #
11:44
http://pastie.org/8495107
11:44
примерно так
11:44
старый скрипт отдавал все как SFP
11:44
посмотри его таблицу
11:44
X2 китайский он никак не мог отдать корректно, так как не знал, что это X2
11:45
!!! UNKNOWN: {'serial': 'ONT123602HD', 'pid': 'TRT5024EN-SMC-13', 'name': 'TenGigabitEthernet1/29', 'vid': '01', 'descr': '10Gbase-LR'}
11:45
вот, смотри
11:45
где тут X2 вообще?
zi_rus #
11:45
в телепатии
11:45
нок пора научить
11:45
:)
dvolodin #
11:45
вот он и телепатирует
11:46
для этого X2 у тебя еще PID осмысленый
11:46
а втот был бы 10GBase-LR
11:46
и все
11:47
там дальше еще можно попробовать определить таки вендора по префиксам серийника
11:50
наверное также можно будет обрабатывать узлы с пустыми серийниками
11:51
в момент втыкания проверять, есть ли там железка
11:51
если нет -- ставить эту и генерировать какой-то рандомный номер ему
_4ePTeHok #
11:59
dvolodin, в коннекшен рулзе 7600 так и остался pfc/msfc/
11:59
только что обновлялся
dvolodin #
12:03
да?
12:03
ну выкини
_4ePTeHok #
12:05
глянь трейс плиз http://pastebin.com/69YqCyQj
12:05
не могу понять где накосячил.
12:06
объект удаляю - при запуске джоба оно снова трейсится.
dvolodin #
12:08
закоммитил фикс для правил
12:10
db.noc.objects.remove({model: ObjectId("528b74ef5c8b82725af590c4")})
_4ePTeHok #
13:15
бблядь
13:15
elif lo == 0 or pid.startswith("CISCO") or pid.startswith("WS-C"):
13:16
return "CHASSIS", number, pid
13:16
WS-CAC-1300W - 110/220v AC power supply, 1360 watt 1
zi_rus #
13:16
ы
_4ePTeHok #
13:16
а я не могу понять, чо ж не соединяет.
13:18
соеденило после правки вот того
13:18
о сколько нам открытий чудных
13:40
охохох, оно начало коннетить...)
mikevlz #
14:00
примерно то же чувство было, когда нарисовал сама правила коннектов
Unbeerable #
14:00
чота чую мне не избавиться от новых писем по конфиг хэз бин чейнджед
14:01
написал пирулю для вырезания из диффа строчек с ацл
14:01
теперь приходит такой дифф
14:01
--- a/core-sw
14:01
+++ b/core-sw
14:01
@@ -1,1 +1,1 @@
14:01
-2125 (2013-11-20 16:25:37)
14:01
+2126 (2013-11-20 16:40:38)
14:02
где 2125, 2126 это номера ревизий
_4ePTeHok #
14:08
так, а 10/100/1000 порты у нас как именуются в инвентори?
14:09
rj-45
14:23
ура. Наконец то все разпознало и подключило.
14:33
хм. Суп сцуко не цепляется.
Unbeerable #
16:05
где-нибудь через годик и у меня дойдут руки до всего того, о чём вы сейчас тут гутарите
zi_home #
16:14
тогда уже концепция опять поменяется и нок уйдет на переделку
Unbeerable #
16:16
ну вон на новую схему днс-синхронизации я две недели назад перешёл
16:16
как же мне конфиги победить
zi_home #
16:17
я на новый днс вообще еще не перешел
Unbeerable #
16:18
а старый же сломали
16:18
вообще без днс?
zi_home #
16:18
да
16:19
а надо
16:19
хорошая штука
Unbeerable #
16:19
я вот всё до vc provisioning не могу добраться
16:20
впрочем, о чём я. почти половина коммутаторов это длинк дир-100, мать его в жопу за ногу
zi_home #
17:05
vc это головняк хуже инвентори и fm вместе взятых
dvolodin #
17:57
http://www.geraldoreports.org
17:57
мы хотим такое себе?
zi_home #
18:01
а что это?
dvolodin #
18:01
библиотечка для генерации отчетов
zi_home #
18:02
интересно
dvolodin #
18:04
на чем мы с моделями остановились?
18:05
заработала распознавалка дырок?
zi_home #
18:05
эмм
18:05
у меня не вставляется невидимая сфп
dvolodin #
18:05
это какая?
zi_home #
18:06
NAME: "module mau 0/1/0/6", DESCR: "SFP"
18:06
PID: , VID: N/A, SN: AGM121729WG
18:06
XR
18:06
в инвентори пустая дырка
18:08
!!! UNKNOWN: {'serial': 'AGM121729WG', 'pid': '', 'name': 'module mau 0/1/0/6', 'vid': 'N/A', 'descr': 'SFP'}
18:08
dvolodin, видимо надо скрипт подправить, но я еще не въехал в новую концепцию, куда костыль ставить
dvolodin #
18:09
а
18:09
ну тут капитально, да
zi_home #
18:09
if not pid:
18:09
return None, None, None
dvolodin #
18:09
ага
18:10
ну а чего тут придумать-то?
18:10
Unknown | Transceiver | Unknown :)
zi_home #
18:10
+ elif "XFP" in pid or "GLC" in pid or "SFP" in descr:
18:10
number = name.split()[2].split("/")[-1]
18:10
+ if pid == '':
18:10
+ pid = "NoName | Transceiver | 1G | Unknown SFP"
18:10
я так предлагал
18:10
ты не принял
18:11
это твой коммит none none none
dvolodin #
18:11
ну только без скорости
zi_home #
18:12
подправишь?
dvolodin #
18:12
не совсем так
18:13
if not pid:
18:13
pid = self.get_transceiver_pid(descr)
18:13
if not pid:
18:13
return None, None, None
18:13
это у меня
zi_home #
18:13
ну вот не работает как видишь
18:13
у меня так же
18:14
root@noc:/opt/noc/sa/profiles/Cisco/IOSXR # hg diff
18:14
root@noc:/opt/noc/sa/profiles/Cisco/IOSXR #
dvolodin #
18:15
да, не сматчится
18:16
надо какой-нибудь бестолковый тип вернуть, чтобы видно было, что это заглушка
zi_home #
18:16
ну как заглушка
18:16
там просто цисковскаяя же glc-t
18:16
которая не поддерживается
dvolodin #
18:16
Ж)
zi_home #
18:16
ASR9k поддерживает только sfpe-ge-t
18:17
*sfp-ge-t
18:17
прсто есть волшебная командочка
18:17
transceiver permit pid all
18:17
вот и получаем что получаем
dvolodin #
18:20
а если так?
18:20
http://pastie.org/8496098
18:20
пусть будет медяхой
18:20
все равно делать функцию ручной конверсии
18:20
с указанием вендора
zi_home #
18:21
а смысл привязываться к формату?
18:21
почему сразу медь?
18:21
если не определен то так иписать
18:22
разве нет?
dvolodin #
18:23
return "Unknown | Transceiver | Unknown"
18:23
?
zi_home #
18:24
да
18:25
а что там дальше твоя система делает
18:25
пропишет noname вендора
18:25
тип 1g sfp сделает
dvolodin #
18:25
она ждет Unknown | Transceiver | <speed>BASE<media>
zi_home #
18:25
а больше про это ничего не известно, кроме серийника
dvolodin #
18:26
по дырке она поймет, что это SFP
18:26
по логике вещей нужно вставить что-то вроде NoName | Transceiver | Unknown SFP
18:26
без скорости и прочих извратов
zi_home #
18:26
NOC-1230
18:27
в самом начале
18:27
самый первый объект
18:27
)))
dvolodin #
18:27
Да, только тут не 1G
18:27
а просто SFP
18:27
Со всемы мыслимыми протоколами
zi_home #
18:27
нюансы
dvolodin #
18:31
ну да
18:31
там, по идеет, на все формфакторы нужно
18:31
закоммитил
18:41
схавало?
zi_home #
18:42
проверяю
18:44
млять
18:44
Failed to connect: Incompatible connection types: Transceiver | SFP - Transceiver | SFP | Cisco
mikevlz #
18:45
=)))))))))))))))
zi_home #
18:46
dvolodin, http://pastebin.com/sYgeADnz
dvolodin #
18:46
:)
18:47
погоди
18:47
мы ее другим обломаем
18:48
может нам сделать еще модель NoName | Transceiver | Unknown SFP | Cisco
18:48
?
zi_home #
18:49
по-моему это извращение, сейчас циска, потом будет не циска, ты же их не отличишь
dvolodin #
18:49
по connection type
zi_home #
18:49
эээ
18:49
ты медную от оптической отличить не можешь
18:50
как ты циску от нециски отличать будешь?
dvolodin #
18:52
сказано в дырку пихать киску - значет киска, если влезла :)
zi_home #
18:52
transceiver permit pid all
18:52
примет все что по размеру подошло
dvolodin #
18:53
http://pastie.org/8496169
18:53
попробуй так
18:54
но, если оно принимает все, то да, lock нужно убирать
zi_home #
18:55
Unknown model 'NoName | Transceiver | Unknown SFP | Cisco'
dvolodin #
18:55
отлично
zi_home #
18:55
но я за удаление лока
dvolodin #
18:56
а теперь лови
18:56
Извращенные формы шаманизма :)
18:57
А потом сервачники точно так же будут иметься с безымянными планками памяти :)
zi_home #
18:58
dvolodin, вставила. а что значит replace? это как понимать?
dvolodin #
18:58
в питоне?
18:59
замена подстроки на другую
18:59
"aaaabbccccddddbbbf".replace("b", "B") -> "aaaaBBccccddddBBf"
zi_home #
18:59
нет, в дескрипшене этой модели
dvolodin #
18:59
а
zi_home #
18:59
что ты имел ввиду
dvolodin #
18:59
сделаю функционал ручного уточнения
19:00
если железка не определяет нормально -- можно будет руками точно указать
zi_home #
19:00
если так, то за указанным еще следить надо
19:00
если переткнули
dvolodin #
19:00
А для этих unknown отчетик сделаем
zi_home #
19:00
по серийнику сразу определять
dvolodin #
19:00
ну да
19:00
если он уникальный
19:01
тогда ручной тип сохранится
zi_home #
19:02
dvolodin, что-то поломалось у одной железки
19:02
http://pastebin.com/X2hrNiAV
dvolodin #
19:03
db.noc.objects.find({"model": ObjectId("528c77e7f3b68213faf03d45")})
19:03
я потом примотаю проверку целостности
zi_home #
19:04
> db.noc.objects.find({"model": ObjectId("528c77e7f3b68213faf03d45")})
19:04
{ "_id" : ObjectId("528c785ef3b682169aeb26c2"), "data" : { "asset" : { "serial" : "ONT123602HD", "revision" : "01" } }, "model" : ObjectId("528c77e7f3b68213faf03d45") }
19:04
{ "_id" : ObjectId("528c785ef3b682169aeb26c3"), "data" : { "asset" : { "serial" : "ONT123600J3", "revision" : "01" } }, "model" : ObjectId("528c77e7f3b68213faf03d45") }
19:04
приделаешь потом, а не работает сейчас
dvolodin #
19:05
db.noc.objects.remove({"model": ObjectId("528c77e7f3b68213faf03d45")})
zi_home #
19:06
не помогло
19:07
> db.noc.objects.remove({"model": ObjectId("528c77e7f3b68213faf03d45")})
19:07
>
19:07
тот же трейс
19:07
Unable to dereference <class 'noc.inv.models.object.Object'>:528c785ef3b682169aeb26c2
19:07
> db.noc.objects.find({"model": ObjectId("528c77e7f3b68213faf03d45")})
19:07
>
dvolodin #
19:11
http://pastie.org/8496205
19:11
вот такое накати
zi_home #
19:13
не помогло
19:14
UNHANDLED EXCEPTION (2013-11-20 23:14:20.614548)
19:14
Working directory: /opt/noc
19:14
<class 'mongoengine.base.ValidationError'>
19:14
Unable to dereference <class 'noc.inv.models.object.Object'>:528c785ef3b682169aeb26c2 [db.noc.objects.remove({_id: ObjectId("528c785ef3b682169aeb26c2")}) to remove]
dvolodin #
19:16
вот и попробуй так
19:16
db.noc.objects.remove({_id: ObjectId("528c785ef3b682169aeb26c2")})
zi_home #
19:20
не помогает
19:21
может дропнуть чего? это тест, мне нежалко, если обратно все соберет
19:21
*не жалко
dvolodin #
19:25
db.noc.objects и db.noc.objectconnections
zi_home #
19:26
просралась
dvolodin #
19:28
а
zi_home #
19:30
дискавернул пару проблемных железок, теперь все трансиверы на месте
19:30
надо только для 7600 модель для рсп и psu сделать и все мои железки вроде как в нок помещаются
dvolodin #
19:32
ну и чудно
zi_home #
19:33
у некоторых трансиверов с пидом N/A, серийник очень похож на finisar
dvolodin #
19:36
finisar-like transceiver
19:36
:)
zi_home #
19:38
ну а че, вот финисары который распознаны FNS16460D46 FNS0838K0WZ. а вот неизвестные FNS170417WD FNS17040Z54
19:39
возможно 7600 чего-то в пиде не нравится, а 4924 его нормально достает
19:40
7600 вообще у гиговых трансиверов у меня пиды почти нигде не показывает
dvolodin #
19:41
ага
zi_home #
19:59
и что с этими unknown models делать?
19:59
NoName | Transceiver | Unknown SFP | Cisco
19:59
Unknown | Transceiver | Unknown -> NoName | Transceiver | Unknown SFP | Cisco
19:59
NoName | Transceiver | 1G | SFP T
19:59
Unknown | Transceiver | 1000BASET -> NoName | Transceiver | 1G | SFP T
dvolodin #
20:04
стереть
Tweet
Share this page
Share this page: Tweet