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: 06.02.2015
Slavic #
00:49
Ребят, подскажите, имеет ли смысл ставить NOC только для управления IP адресами?
00:50
были ли сравнения по функционалу с RackTables и NIPAP?
Night_Snake_ #
05:56
dvolodin "удалить запись в main_customfield" а с этого места поподробнее)) это остановить нок и грохнуть в постгрессе?
dvolodin #
05:57
да
Night_Snake_ #
05:58
О, пасиб
dvolodin #
05:58
В psotgresql alter table ждет, пока завершатся транзакции, которые держат таблицу
05:58
SAE держит sa_managedobject почти постоянно
e_zombie #
06:09
тадааам
06:09
dvolodin: у меня тоже хосты с дефферед висят .
06:10
массово не исследовал но есть такие
ss_ #
06:16
ну вот и я продолжу
06:16
где там миграция SA
06:16
где искать
e_zombie #
06:17
http://www.opennet.ru/opennews/art.shtml?num=41616
dvolodin #
06:20
e_zombie: я не могу пока понять сценарий, при котором они остаются в deferred
ss_ #
06:20
Table sa_managedobjectprofile кто структуру может дать?
dvolodin #
06:20
после поднятия хоста все deferred чистятся на нормальные
06:20
ss_ смотри sa/models/managedobjectprofile.py
ss_ #
06:20
ProgrammingError('column sa_managedobjectprofile.enable_config_polling does not exist
e_zombie #
06:21
dvolodin: попробую это протестировать что чистятся.
ss_ #
06:22
## Config polling
06:22
enable_config_polling = models.BooleanField(
06:22
_("Enable config polling"), default=True)
dvolodin #
06:22
посмотри ObjectStatus.set_status
06:22
if status:
06:22
# False -> True transition
06:22
DiscoveryJob.reset_deferred(object)
ss_ #
06:22
а в базе нет
dvolodin #
06:23
ss_: в миграциях все
06:23
./noc migrate сделай, наконец-то
ss_ #
06:25
./noc migrate
06:25
Traceback
06:25
дальше тут http://pastebin.com/aw03kwct
xetle #
06:29
ss_ ты чё script/upgrade перерывал? Как такай рассинхронизация может получится?
ss_ #
06:29
xetle, ничего я не прерывал
06:29
не обновлялся 2 месяца
06:29
а вчера обновился
lexus-omsk #
06:30
dvolodin а deferred может же не только по недоступности устройства появиться? Например, если скрипт крэшится
06:30
или нет?
dvolodin #
06:30
нет
xetle #
06:30
Послушаем что начальник скажет..
06:31
У тебя два варианта 1 смотреть в базу и список плохих миграций, сделать руками недостающие.
ss_ #
06:31
dvolodin, что делать?
xetle #
06:33
2. Выгрузить, експорт баз в текстовые файлы, поставить чистый нок и потом импорт..
06:34
Через NOC веб выгружаешь, только sa_managedobjects необходима.
zi_rus #
06:34
dvolodin, ну вот не чистятся, вернее не всегда. вот сегодня ночью на пачке свичей меняли софт, 8 штук, 6 почистились, а двое деферед
xetle #
06:36
ss_ ./noc export-import тоже можно..
lexus-omsk #
06:36
dvolodin вот у меня пример: поменяли почти месяц назад свитч на проблемный des-1210-28, на нём зависал get_interfaces, только недавно починили
06:37
и сейчас там именно get_interfaces в deferred, а прочие discovery работают
06:37
и перезапуск не решает
zi_rus #
06:37
lexus-omsk, а у меня наоборот, на одной железке get_interfaces работает, а остальные методы в деферед
ss_ #
06:38
xetle, Unknown command: 'export'
06:38
Unknown command: 'import'
dvolodin #
06:38
ss_: чудес не бывает
ss_ #
06:39
xetle, как посмотреть список плохих миграций,
06:39
dvolodin, да я уже понял что чем реже апргредый тем больше косяков
06:39
где то выкинули что то нужное в апгредей
dvolodin #
06:40
sa/migrations//0091_managedobjectprofile_configdiscovery.py
06:40
неправильно ты понял
06:40
я на этой неделе ставил сначала default, потом апгрейдил до develop
06:41
у тебя система как поставлена была?
ss_ #
06:41
dvolodin, сто лет назад её ставил
06:42
со старой мордой ещё
06:42
с тех времен живет
06:42
апдейты только накатывал
dvolodin #
06:43
ставил по-нормальному или какими-то левыми пакетами?
ss_ #
06:43
dvolodin, было несколько лет назад
06:43
ставил через hg
dvolodin #
06:43
Если ты ее ставил сто лет назад, то вряд ли ты ее апдейтил два месяца назад
06:43
0.6?
ss_ #
06:43
/opt/noc# ls sa/migrations/ |grep managedobjectprofile_configdiscovery.py
06:43
root@monitor:/opt/noc#
06:44
dvolodin, 0.6 вроде начинал
06:44
потом апдейтил постояанно
06:44
а вот в декабре дочь родилась не до серваков было
dvolodin #
06:44
а
06:44
так ты сейчас апдейтил с 0.6 на develop?
ss_ #
06:44
а вчера скрипт апгрейд накатил
06:44
нет
06:45
а апдейтил версию девелоп с декабря
06:45
с начала декабря
06:45
или с конца ноября
06:46
0075 последнее в sa/migrations/
dvolodin #
06:46
а должно быть 0092
06:46
./noc migrate
06:46
вообще его делает ./noc upgrade
06:47
если ты уж develop накатил
ss_ #
06:47
нет
06:47
девелопа нет
06:47
конфиг взял дефаултный
dvolodin #
06:47
бррррррррр
06:48
у тебя был 0.6
06:48
на что ты его апгрейдил?
ss_ #
06:48
root@monitor:/opt/noc# ./noc upgrade
06:48
Unknown command: 'upgrade'
06:48
вот так сделал вчера root@monitor:/opt/noc# ./scripts/upgrade
06:48
не пошло
06:49
поменял адрес откуда все брать
06:49
поменял конфиг файл апгреда на дефаултный и разрешил апгрейды
06:50
./scripts/upgrade больше не действует?
dvolodin #
06:50
это то же самое
06:51
./noc upgrade короче :)
ss_ #
06:53
root@monitor:/opt/noc# ./noc upgrade
06:53
Unknown command: 'upgrade'
06:53
Type 'manage.py help' for usage.
06:53
короче, но её нет
dvolodin #
06:53
в develop она есть
ss_ #
06:53
чет похоже серъезное я пропустил
06:53
включить д
dvolodin #
06:53
а у тебя default, даунгрейженный черти откуда
06:53
короче
ss_ #
06:53
develop?
06:54
develop был
dvolodin #
06:54
делай в upgrade.conf BRANCH=develop
ss_ #
06:54
старый
dvolodin #
06:54
и ./scripts/upgrade
06:55
он нарядит тебя в шотландскую юбку, поимеет постгисом и отпустит
ss_ #
06:55
abort: untracked files in working directory differ from files in requested revision
06:55
upgrade: : Failed to update to branch develop
06:55
5 файлов кривых
dvolodin #
06:56
hg revert --all, если там ничего ценного
ss_ #
06:57
непомогает
dvolodin #
06:57
ну не рассказывай сказки
06:57
hg status смотри
ss_ #
06:57
http://pastebin.com/RiHsXttu
dvolodin #
06:58
файлы с вопросиками сотри
ss_ #
06:58
root@monitor:/opt/noc# hg status
06:58
not trusting file /opt/noc/.hg/hgrc from untrusted user noc, group noc
06:58
not trusting file /opt/noc/.hg/hgrc from untrusted user noc, group noc
06:58
? pip-selfcheck.json
06:58
? sa/profiles/Aruba/ArubaOS/__init__.py
06:58
? sa/profiles/Aruba/__init__.py
06:58
? sa/profiles/Brocade/CER-ADV/__init__.py
06:58
? sa/profiles/Brocade/CER/__init__.py
06:58
root@monitor:/opt/noc# hg revert sa/profiles/Brocade/CER/__init__.py
dvolodin #
06:58
да
ss_ #
06:58
not trusting file /opt/noc/.hg/hgrc from untrusted user noc, group noc
06:58
not trusting file /opt/noc/.hg/hgrc from untrusted user noc, group noc
dvolodin #
06:58
нет
ss_ #
06:58
file not managed: sa/profiles/Brocade/CER/__init__.py
dvolodin #
06:58
rm
ss_ #
06:58
root@monitor:/opt/noc#
dvolodin #
06:58
они не в репо еще
ss_ #
06:58
хм откуды они у мну?
06:58
rm на них?
dvolodin #
06:58
да
06:59
так, поднимите руки, кто считает, что NOC'у нужно поправить юзабельность и добавить красотизма?
ss_ #
06:59
документацию надо написать
06:59
подробную)
zi_rus #
07:00
dvolodin, я считаю что ноку надо поправить разграничение прав на runcommands
dvolodin #
07:00
напиши
07:00
zi_rus: не сейчас
zi_rus #
07:01
лучше сейчас
dvolodin #
07:01
точнее, сделаете то, что надо, займусь этим runcommands
07:01
:)
ss_ #
07:01
dvolodin, если бы я его знал на таком уровне то написал бы
07:02
? You have no migrations for the 'support' app. You might want some.
07:02
во время апгреда проскочило
dvolodin #
07:02
ss_: это ерунда
07:03
вернемся к нашим баранам
07:03
вводная такая
zi_rus #
07:03
и деферед
dvolodin #
07:03
дефолтная ширина полей в ExtJS - совсем черезжопная, они слишком маленькие
07:04
Я, в свое время, чтобы не возиться, прописал по дефолту им anchor: "100%"
zi_rus #
07:04
растягивать на весь экран поля, тоже отстой
dvolodin #
07:04
и они растянулись на весь экран
07:04
так вот
07:04
специались по usability высказал мне одну очень умную мысль
07:05
стоит зафиксировать несколько размеров полей в зависимости от их назначения и от ожидаемого размера текста
zi_rus #
07:05
это и коню понятно
dvolodin #
07:05
ну условно -- до 3 символов, 20, 100, etc
ss_ #
07:05
запускать так же через sudo ./scripts/noc-launcher.py start
dvolodin #
07:05
ss_: да
07:06
zi_rus: отлично, понятно коню, понятно и конюхам
07:06
далее
07:06
просто прописывать width на полях -- жопа
07:06
я сделал немного похитрее
zi_rus #
07:06
жопу с левой резьбой?
dvolodin #
07:06
Запатчил базовый класс для поля и добавил там свойство uiStyle
ss_ #
07:06
dvolodin, заработало! УРа!
dvolodin #
07:07
то есть суть такая
07:07
мы делем несколько классов полей
07:07
и навешиваем их как uiStyle
07:10
https://bitbucket.org/nocproject/noc/commits/e718bc95928c1c328ef21fd4f371ba9bda745aad?at=feature/extjs-5.1.0
07:10
вот сами стили
07:10
я пока навскидку сделал 4
07:11
вот примеры, как они навешиваются
07:11
https://bitbucket.org/nocproject/noc/commits/9ed781beec11e591c4ec020f43b7473857d960de?at=feature/extjs-5.1.0
07:11
важно то, что выпадающие комбики для LookupField у нас определяются один раз
zi_rus #
07:11
не вижу смысла в 3 символах
07:12
минимум 4-5
dvolodin #
07:12
то есть если мы задаем uiStyle для LookupField, он у нас во всех формах станет одного размера
07:12
что есть хорошо и правильно
07:12
соответсвенно нужно следующее
07:13
1. Понять, какие стили нужны и как они должны выглядеть (по ширине)
07:13
2. Понять, какие стили нужны для имеющихся LookupField и навесить их
07:13
3. Покрасить оставшиеся поля на формах
07:14
и на закуску, чтобы формы не выглядели как унылое говно из списка полей разной ширины -- аккуратно разложить поля по формам
07:14
:)
07:14
для стадий 1, 2 знаний JS не требуется вообще
07:15
для 3 -- на уровне умения отличить точку от запятой
07:15
ну а закуска посерьезнее -- там нужно разделить собственно раскладку формы и ее реализацию
07:16
мне нужно, чтобы кто-то этим занялся этим вопросом
07:16
в идеале -- несколько человек
07:17
тогда я смогу заняться проработкой инфраструктуры для контекстного хелпа
07:17
и следующим шагом можно будет наколошматить документацию по формам и полям хотя бы
xetle #
07:18
dvolodin, Dmitry1 говорил мне что в ноке не используются стандартные функции ExtJS, а почти все свои.
dvolodin #
07:18
чушь какая
xetle #
07:18
Это вызывает проблемы при обновлениях ExtJS
dvolodin #
07:19
нет
xetle #
07:19
Ну и ресурсы надо на написания своих
dvolodin #
07:19
там есть дополнительные поля и компонентны
07:19
которых нет в extjs
xetle #
07:19
Тоесть он воспользовался моим незнанием JS и меня обманул? )
dvolodin #
07:19
типа того же LookupField и CMText
07:21
https://bitbucket.org/nocproject/noc/src/b5585f6826571560ded4ca6b3a2d33d5c179f661/sa/apps/managedobjectselector/js/Application.js?at=feature/extjs-5.1.0
07:21
вот пример
07:21
да нет, скорее не обманул, но не так сказал, или ты не так понял
07:21
ExtJS -- это набор компонент UI и утилит
07:21
NOC их использует
07:21
Но в NOC есть и более высокоуровневые классы, например ModelApplication
07:22
это grid + формочка + дополнительные панели
07:22
которая умеет взаимодействовать с сервером
07:23
http://docs.sencha.com/extjs/5.1/5.1.0-apidocs/
07:23
вот API ExtJS
07:24
Собственно переход с ExtJS 5.0 на 5.1 занял меньше часа
07:24
Ну что, по формам предложение нормальное?
xetle #
07:26
А утверждение Dmitry1 о том что вполне хватает стандартных класов ExtJS и не надо своих? Так будет проще, не нужно будет кучу всего переписывать при обновлении ExtJS и смене их API?
07:27
Помню летом переход на 5,0 месяц JS в нок глючил.
07:28
По документации:
dvolodin #
07:28
сродни утверждению, что стандартных классов Qt и Gtk достаточно на все случаи жизни и не надо своих
Dmitry1 #
07:28
там ExtJS идет в коробке с ExtCMD
dvolodin #
07:29
sencha она называется
07:30
она умеет склеивать твое приложение и extjs в один js файл
07:31
и что оно даст?
Dmitry1 #
07:31
Плюс все остальное в ux компонентах
07:32
ExtCMD - для разработки. Как раз то, чего не хватает нашему комьюнити
dvolodin #
07:33
каким образом не хватает?
07:34
у него основное назначение -- минификация и сборка
07:34
и отслеживание зависимостей
07:36
у него use case совсем другой
07:36
сейчас ты можешь сказать ./noc newapp .... и получить скелет для клиента и сервера
07:37
а с CMD -- только пересборкой бандла
07:37
всего
Dmitry1 #
07:37
мы можем полностью отказаться от jquery, mxgraph, и кучи остального
07:38
кто-то мерял производительность построения графиков в 5.1 ?
dvolodin #
07:38
меряли
07:38
сосет
07:39
хороша для манагеров, восходящие кривые из 10 точек показывать
07:39
аналога mxgraph/jointjs в extjs нет в принципе
07:39
аналога CodeMirror - тоже
07:40
юзеру важен функционал, а не потроха
Dmitry1 #
07:41
из-за потрохов у нас разработчиков полтора человека
dvolodin #
07:44
дим, сказки все это
07:44
вот есть вполне конкретная задача с полями
07:45
что мешает ее делать?
Dmitry1 #
07:45
я сейчас колупаю DLink.DxS.get_inventory
07:45
И ближайшую неделю колупать его буду
07:48
Есть у меня светлая мечта - чтобы этот уродский длинк показывал, что в него за SFP модули воткнуты
xetle #
07:50
Ладно, JS тяжелая тема. О документации:
Dmitry1 #
07:51
dvolodin: надо где-то опубликовать это API
xetle #
07:51
Контекстный хел и документация по формам, наверно помогут мало. Та в приципе и так всё понятно. Возможно перевод интерфейса, необходим кому..
dvolodin #
07:52
Dmitry1: про какой API ты вообще говоришь?
Dmitry1 #
07:52
dvolodin: по uiStyle и остальным фичам.
07:52
dvolodin: а потом попытаться привести API всех остальных компонентов к такому виду, как в sa/interfaces
xetle #
07:53
Ноку из документации нехватает HOWTO написаных админами. Для каждого раздела необходимо хотябы одно по полной настройки и сипользованию..
Dmitry1 #
07:53
те же пируле и т.п. не должны лезть в базу данных, а должны пользоваться более высокоуровневым API
07:54
dvolodin: для того же SA есть нормальное API
07:54
И народ пишет под него
dvolodin #
07:54
берешь extjs api
07:54
что тебе в нем не хватает?
Dmitry1 #
07:55
я тебе уже говорил
07:56
людей пугает вид компонента вида aa.bbb.ccc.ddd.eee.fff.ggg.компонент
07:57
как пример приводил хандлер на линк даун
07:57
"noc.fm.handlers.event.link.oper_down"
dvolodin #
07:57
Дим, поставь jira
07:57
просто поставь jira
07:57
а потом говори, что пугает людей
Dmitry1 #
07:58
зачем мне джира?
dvolodin #
07:58
посмотришь в потрошка
Dmitry1 #
07:58
не хочу
07:59
смотри api SA
dvolodin #
07:59
когда на тебя со всех сторон попрут JAR'ы и трейсы
Dmitry1 #
07:59
я вызываю self.cli() вместо noc.sa.script.myscipt..cli()
08:00
почему так нельзя сделать для остальных компонентов?
dvolodin #
08:01
есть такое понятие, как namespace
xetle #
08:01
И потом надо написать документацию для разработчиков по всем этим готовым компонентам.
Dmitry1 #
08:02
В ООП есть такое понятие, как public. И конечному классу доступны все методы public всех классов прародителей. И мне не нужно знать, какие методы были кв каком из 20-ти прародителей.
08:02
Мне нужно знать только "конечные" методы самого последнено потомка
xetle #
08:02
Dmitry1 нет длинные именна пусть будут noc.fm.handlers вполне понятен для всех кто пользуется нок.
Dmitry1 #
08:03
xetle: да нахрена ?
xetle #
08:03
Вот беда в отсутствии документации с описанием всех этих компонетнов.
Dmitry1 #
08:03
Почему handlers у нас идет от fm ?
dvolodin #
08:03
там вообще-то docstring'и есть
08:03
в которых и есть документация
Dmitry1 #
08:03
Что, этот же хандлер не может быть от vc ?
08:04
тогда у нас будут noc.fm.handlers, noc.vc.handlers, noc.ip.handlers, noc.peer.handlers, noc.pm.handlers и т.п. ?
08:04
Это для того, чтобы запутать вероятного противника?
xetle #
08:05
В VC может быть, но это будет уже другой, да. как ты выше написал.
Dmitry1 #
08:05
С другим API ?
xetle #
08:05
Почему запутать?
dvolodin #
08:05
в fm он потому, что event'ы относятся к fm
08:05
что тебе не нравится
08:05
смотришь noc.fm.handler.link.link_down
08:05
noc -- откивываешь
xetle #
08:05
Лучше чтобы API было унифицировано во всех хендлерах.
dvolodin #
08:06
получаешь -- функция link_down в модуле fm/handler/link.py
08:06
API для всех handler'ов event'ов унифициновано
Dmitry1 #
08:06
dvolodin: мне не нравится, что для каждого модуля (vc, fm, sa), ты изобретаешь свое собственное уникальное API.
dvolodin #
08:06
callable, единственный параметр -- event
Dmitry1 #
08:07
И поэтому этот модуль абсолютно не может взаимодействовать с остальными модулями
dvolodin #
08:07
да, мое уникальное api называется "интерфейс callable"
08:07
Дим, ты сейчас корбу придумаешь
08:07
ага
Dmitry1 #
08:07
dvolodin: как мне сделать ивент из VC от том, что у меня добавился влан ?
dvolodin #
08:07
один API на все случаи жизни
08:07
любой еж может провзаимодействовать с любым ужом
08:08
легко
Dmitry1 #
08:08
Как я из VC передам параметр "event" ?
dvolodin #
08:08
NewEvent(....).save()
xetle #
08:08
Но главное что надо их описание, например хоть такое: https://kb.nocproject.org/pages/viewpage.action?pageId=15106281#FaultManagment-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F%D0%BC%D0%B8%D0%B8%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0%D0%BC%D0%B8%D0%B2NOC.-6.2%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9%D0%BC%D0%B5%D1%85%D0%B0%D0%
08:08
BD%D0%B8%D0%B7%D0%BChandlers.
dvolodin #
08:08
зачем тебе из vc передавать event?
Dmitry1 #
08:09
(10:01:39) dvolodin: callable, единственный параметр -- event
dvolodin #
08:09
да
08:09
это интерфейс для handler'ов, которые используются как event handler'ы
08:09
что логично
08:09
просто функция, которая принимает event
08:10
или класс, с методом __call__
08:10
это просто функция, которая может что-то сделать с event'ом
08:11
и ей доступны все методы класса NewEvent
Dmitry1 #
08:11
dvolodin: вот в этом и вся проблема, что у тебя в fm хандоеры с параметром event, в SA с параметром MO, в IPAM с параметром IP и т.п.
dvolodin #
08:11
что логично
08:11
они делают разные вещи
xetle #
08:11
В handler есть только одна проблема - нет документации и примеров использования. По этому их никто здесь не использует.
Dmitry1 #
08:12
в продолжение xetle
dvolodin #
08:12
и даже более того -- у меня есть request handler'ы, который обрабатывают запосы
Dmitry1 #
08:12
В solution есть только одна проблема - нет документации и примеров использования. По этому их никто здесь не использует.
08:12
В job есть только одна проблема - нет документации и примеров использования. По этому их никто здесь не использует.
dvolodin #
08:12
xetle: посмотри, что там внутри
08:12
сразу все поймешь
xetle #
08:12
Это же относится ко всему остальному. доку надо не контекстную, а HOWTO написаное самими пользователями NOC.
dvolodin #
08:12
Кому нужно - используют :)
08:13
xetle: пишите
08:13
:)
Dmitry1 #
08:13
dvolodin: дим, в чем сложность сделать одинаковое API для хандлеров, джобов, солюшенов ?
08:13
Причем унифицированное для всех модулей
dvolodin #
08:13
Dmitry1: Для Script нет документации и примеров использоваиня. Поэтому их никто здесь не использует
08:13
:)
xetle #
08:13
Да я смотрел и понял. Но перед тем как посмотреть я зашел сюда и freeseacher мен ткнул пальцем куда смотреть! Потом еще пришлось догадыватс что кода и зачем.
dvolodin #
08:14
Для job'ов и solution'ов общий API для всех модулей
xetle #
08:14
А должен пользователь смотреть сразу в документацию и там должно быть всё достаточно описано для новичка.
dvolodin #
08:14
с чего ты взял, что они различаются
08:14
а вот event и alarm handler'ы -- разные по природе
08:15
первые работают с event'ами
Dmitry1 #
08:15
dvolodin: sa/interfaces/igetmplsvpn.py - вполне нормальная документация
dvolodin #
08:15
вторые - с alarm'fvb
Dmitry1 #
08:15
dvolodin: вот потому у нас и не получаются сценарии, что везде разное API
dvolodin #
08:16
https://bitbucket.org/nocproject/noc/src/f95b08941cb08db4b0a21366cc35517cfe5a1c1f/fm/handlers/event/link.py?at=develop
08:16
Вот что тут непонятного?
Dmitry1 #
08:16
т.е. я не могу из FM запустить скрипт IPAM, а из него запустить скрипт VC, а из него запустить скрипт SA
dvolodin #
08:16
ровно два handler'а
08:16
noc.fm.handlers.event.link.oper_up и oper_down
Dmitry1 #
08:17
dvolodin: ну вот посмотрел я
dvolodin #
08:17
https://bitbucket.org/nocproject/noc/src/f95b08941cb08db4b0a21366cc35517cfe5a1c1f/fm/handlers/event/oper.py?at=develop
08:17
что непонятного тут
xetle #
08:17
dvolodin: скрипты были в ноке с самого начала, без них не работает оборудование... необходимо писать. Да доки нет но Вы здесь каждому долго расказывали и обяснали...
Dmitry1 #
08:17
i_name = event.vars["interface"] - это откуда взялось?
dvolodin #
08:18
из event class'а
08:18
на который накручен этот handler
08:18
ага
08:18
:)
Dmitry1 #
08:18
т.е. мне надо полезть в исходники ивенткласса ?
dvolodin #
08:18
нет
08:18
ты уже смотришь в исходники eventclass'а
08:19
и думаешь, как бы сделать так, чтобы закешировать статус линка
08:19
:)
Dmitry1 #
08:19
тогда повторю вопрос: откуда я узнаю, что в классе event есть класс vars, а в нем переменная "interface" ?
dvolodin #
08:20
https://bitbucket.org/nocproject/noc/src/f95b08941cb08db4b0a21366cc35517cfe5a1c1f/fm/models/activeevent.py?at=develop
08:20
отсюда
xetle #
08:22
dvolodin: любому новичку сложно в этом разобратся. Он даже не догадается что такое возможно и не будет искать или спрашивать.
Dmitry1 #
08:22
а для аларм ивента тоже смотреть https://bitbucket.org/nocproject/noc/src/f95b08941cb08db4b0a21366cc35517cfe5a1c1f/fm/models/activeevent.py?at=develop недо ?
dvolodin #
08:22
xetle: спросит и будет использовать
xetle #
08:22
Только хорошие HOWTO может быстро ввести в курс дела.
08:23
Пока, да только спрашивать здесь...
Dmitry1 #
08:23
dvololdin: https://kb.nocproject.org/display/~dmitryluhtionov/New+API
08:23
я ведь предлагал уже
08:23
вместо i_name = event.vars["interface"]
08:24
i_name = NewApi.get_str(param, "delay");
08:25
где param - это event, alarm, MO, VC и т.п. - пользователю без разницы
dvolodin #
08:25
уродство какое
08:25
в питоне есть два атрибута
Dmitry1 #
08:26
get_str - функция, получения переменной. С обработкой ошибок и т.п.
dvolodin #
08:26
__getitem__ и __getattr__
08:26
вся разница в том, что в первом случае ты пишешь event.vars["interface"]
Dmitry1 #
08:26
Т.е. нам пофиг, откуда возьмется эта переменная: из базы, из параметра и т.п.
dvolodin #
08:26
во втором -- event.vars.interface
08:26
и даже больше
08:26
есть функция getattr
xetle #
08:26
Dmitry1: не сильно нравится. Проблемы в чуть разношорстном noc.fm.handlers, noc.vc.handlers нет. Есть проблема в отсутствии доков и примеров.
dvolodin #
08:27
getattr(object, "attribute")
Dmitry1 #
08:27
dvolodin: вот скажи мне, что сделает твой хандлер, если не будет доступна переменная vars["interface"] ?
dvolodin #
08:27
кстати о птичках
08:27
где вы увидели vc.handlers ?
Dmitry1 #
08:27
а его нету
dvolodin #
08:28
KeyError поднимет, классификатор его обработает и загонит событие в failed_event
Dmitry1 #
08:28
потому что для него еще не придумано очередное уникальное API
dvolodin #
08:28
но тебе никто не мешает писать
08:28
vars.get("interface")
08:28
и получить None
08:28
или написать "interface" in vars
08:29
то, что ты придумал как новое API -- это функция getattr питона
Dmitry1 #
08:30
ты пример там посмотри
08:30
у тебя во всех хандлерах, джобах и т.п. гвоздями прибито их поведение
dvolodin #
08:31
неа
08:31
каждый handler делает свою и строго определенную работу
Dmitry1 #
08:31
def oper_up(event):
08:31
"""
08:31
Set oper status to up
08:31
"""
08:31
i_name = event.vars["interface"]
08:31
InterfaceStatus.set_status(
08:31
event.managed_object, i_name, oper_status=True)
08:31
где попытка перестроить топологию?
dvolodin #
08:32
тут и не нужна
08:32
:)
Dmitry1 #
08:32
где проверка на дуплекс/полудуплекс?
dvolodin #
08:32
этот handler должен поставить отметку
Dmitry1 #
08:32
где проверка на скорость ?
dvolodin #
08:32
ДИМАААААА
08:32
handler делает свой строго определенный кусок работ
08:32
сделай handler на duplex
08:32
сделай на топологию
08:32
и так далее
08:32
и вешай их цепочкой
08:33
только придумай, как ты конфигурить будешь все
Dmitry1 #
08:33
Я хочу, чтобы была возможность сделать целый сценарий
dvolodin #
08:33
строй
08:33
кто тебе мешает
08:33
сделай свой сценарий и прицепи его
Dmitry1 #
08:33
так гвоздями прибито
dvolodin #
08:34
что прибито гвоздями?
Dmitry1 #
08:34
"link_event": true,
08:34
"handlers": [
08:34
"noc.fm.handlers.event.link.oper_up"
08:34
],
08:34
и все
dvolodin #
08:34
и что?
Dmitry1 #
08:35
как туда что-то добавить?
dvolodin #
08:35
я же сказал
e_zombie #
08:35
dvolodin: как законите с этим - погляди NOC-1529 я по поводу дефферен добавил что у меня
dvolodin #
08:35
либо свою логику через solutions
xetle #
08:35
Dmitry1 ставишь зяпятую и сой хендлер...
dvolodin #
08:35
если это чисто твое
xetle #
08:35
*свой
dvolodin #
08:35
и твори что хочешь
08:36
или после релиза будем делать возможность в web-интерфейсе назначить дополнительные handler'ы для eventclass'а
08:36
но делать это будем не прямо здесь и сейчас
Dmitry1 #
08:36
а почему хандлеры ? а почему не джобы или солюшены ?
08:36
а почему не пирули ?
dvolodin #
08:37
я на этот вопрос уже отвечал
Dmitry1 #
08:37
ответ в том - что у всех разное API
xetle #
08:37
Dmitry1 ты достал, тебя только о JS спрашивали. Пируле викенем хендлеры специально для ФМ.
dvolodin #
08:37
ты как печкин с велосипедом
08:37
пока не купите велосипед - буду вредным
08:38
Дим, у мужчины и женщины тоже интерфейс разный
e_zombie #
08:38
:-D
dvolodin #
08:38
но некоторые пытаются его унифицировать
xetle #
08:38
Dmitry1 API не проблема, проблема в отсутствии HAWTO с подробным описанием и примерами..
dvolodin #
08:38
давай не будем скатываться ;)
e_zombie #
08:38
>:o
08:39
https://pp.vk.me/c622320/v622320838/1791c/ENlIXId1Eu4.jpg
Dmitry1 #
08:40
dvolodin: смотрим джобы
08:40
noc/pm/jobs/touch_check.py
08:41
class TouchCheckJob(Job)
08:42
noc/fm/jobs/archive.py
08:42
class ArchiveJob(AutoIntervalJob)
08:42
noc/inv/jobs/update_pop_links.py
08:43
class UpdatePopLinksJob(IntervalJob)
08:44
еще продолжать?
dvolodin #
08:45
и что тебя беспоеоит в job'ах?
Dmitry1 #
08:45
разное API
dvolodin #
08:45
А то, чо в jira есть issue и API
08:46
но они зачем-то поставили quartz у которого другое API?
08:46
какие они бяки нехорошие, не буду использовать jira
08:47
ты сводишь все к тому, что есть функция, которая делает работу и ее нужно вызвать
08:47
вызов функции и есть интерфейс callable
08:48
и каждый модуль NOC им вовсю пользуется :)
Dmitry1 #
08:48
dvolodin: вот я захотел сделать джоб, что мне ему передавать: Job, IntervalJob или AutoIntervalJob ? Какие методы и переменные есть в каждом классе?
dvolodin #
08:49
Дальше ты введешь аппликацию и редукцию
Dmitry1 #
08:50
я даже не знаю, что это такое
dvolodin #
08:50
Whoever does not understand LISP, is doomed to reinvent it
08:50
ты сейчас пытаешься изобрести LISP :)
Dmitry1 #
08:50
ааа, это из лиспа. страшный язык
dvolodin #
08:50
ты его пытаешься изобрести
Dmitry1 #
08:51
смотри, что я хочу
dvolodin #
08:51
лямбду :)
Dmitry1 #
08:51
у нас должен быть класс "джоб", в котором должны быть стандартизированы методы и переменные
dvolodin #
08:51
Я хочу - красивую и ровную морду NOC
08:51
до релиза
08:51
и хочу, чтобы кто-то помог
Dmitry1 #
08:51
не зависимо от того, где этот класс находится: в fm или sa
dvolodin #
08:52
или релиз будет летом
08:52
непонятно какого года
Dmitry1 #
08:52
давай летом
dvolodin #
08:53
я вообще сейчас прикручиваю XML API к pfSense
08:53
на php, блин
Dmitry1 #
08:53
о, так ты один из разработчиков psSence ?
dvolodin #
08:54
нет
08:54
меня даже не волнует мнение разработчиков pfSence на этот счет
Dmitry1 #
08:55
хм
dvolodin #
08:55
Мы сильно укрупнились, и теперь меня волнуют не только проблемы Москвы, где все хорошо
08:55
но и всего ЦФО
08:56
а там в одном филиале сделали wifi и пропустили его через pfsense
Dmitry1 #
08:56
так там обычная фря внутри
dvolodin #
08:56
я в курсе
08:56
я просто положил ей php модуль свой
xetle #
08:56
Могу глянуть вечерком JS но в этом напрвлении с меня пользы мало будет..
dvolodin #
08:57
у нас есть офигительный портал для hotspot'ов с авторизацией по SMS
08:57
дружит с aruba и ruckus
08:57
вот дружу его теперь с pfSense
08:58
у арубы и рукуса есть XML API для управления юзерами
08:58
я сделал аналогичный для pfSense :)
Dmitry1 #
08:59
dvolodin: хм. psSence на какой версии фри? Просто в 11-тую всунули libxo
dvolodin #
08:59
FreeBSD pfSense.localdomain 10.1-RELEASE-p4 FreeBSD 10.1-RELEASE-p4 #0 36d7dec(releng/10.1)-dirty: Thu Jan 22 15:12:35 CST 2015 root@pfsense-22-amd64-builder:/usr/obj.amd64/usr/pfSensesrc/src/sys/pfSense_SMP.10 amd64
08:59
2.2 на 10.1 сделана
Dmitry1 #
09:00
на десятке libxo нету. :(
dvolodin #
09:00
?
09:00
Ладно, мы начали про JS
09:01
и формы
09:01
кто займется :)
mpanait #
09:33
.
e_zombie #
09:34
,,
ss_ #
09:48
...
IRevent #
09:49
,,,,
lexus-omsk #
09:50
вопрос к длинководам про многострадальный lldp: заметил сейчас на 3627 показывает remote_port_id "pb\xb88<", с той стороны 3200-28 rev.C1 fw 4.37.b014
09:50
нок от такого ессно трейсит
09:51
сталкивались, обходили такое?
e_zombie #
09:51
у меня длинки не трейсятся на ллдп
09:51
с нынешним профилем
lexus-omsk #
09:52
у меня обычно тоже, но вот стал рыться в табличках на тему deferred, наткнулся на падающий скрипт, а там вот такое
e_zombie #
09:52
у меня походу такой поебени дохера.
09:53
кстати оно может быть вызвано тем что удаляются эвенты связанные с опросом.
09:53
там же нет транзакционногомеханизма.
09:53
и оно подвисает .
Dmitry1 #
09:59
lexus-omsk: кинь на pastebin вывод show lldp и вывод cli
09:59
и что там на самом деле должно быть. возможно написали описание порта на русском
10:00
и вывод debug-script
lexus-omsk #
10:00
я против кирилицы на оборудовании в любом виде
zi_rus #
10:01
а я за
Dmitry1 #
10:02
lexus-omsk: почему ? Тем же девочкам диспетчерам удобнее читать port description и т.п. на кириллице
e_zombie #
10:02
Dmitry1: ты накропал фейковый профиль инвентори?
Dmitry1 #
10:02
нет. я делаю сейчас DLink.DxS.get_inventory
e_zombie #
10:02
ок
lexus-omsk #
10:02
из опыта, что часто это нормально не работает
10:11
Dmitry1 примерно так http://pastebin.com/6JJLGJCq
10:13
сам debug-script не валится, валится discovery уже при попытке слинковать
Dmitry1 #
10:15
на DES-3200-28 rev.C1 покажи show lldp local_ports 28
lexus-omsk #
10:17
http://pastebin.com/2CXb2gQE
10:19
кстати гляну сейчас, у меня ещё таких свитчей немного... посмотрю как на других
10:20
хм... хотя, наверное, уже не сейчас
Dmitry1 #
11:07
lexus-omsk: см Dlonk.DxS.get_lldp_neighbor
11:07
оно, если тип порт является мак адресом, пытается сделать так:
11:07
try:
11:07
n["remote_port"] = \
11:07
MACAddressParameter().clean(n["remote_port"])
11:07
except:
11:07
pass
11:08
видать не сумело
11:12
попробуй на except сделать
11:12
raise Exception("не могу распарсить MAC адрес")
ss_ #
13:15
рубанусь я в танки
serg_vrn_ #
14:14
всем привет, есть кто-нить кто может проконсультировать про "Inventory/Setup/Object Models" ?
e_zombie #
14:14
это лучше в пн. все пьяные и по домома.
14:14
гдето на сайте естькак рисовать модельки
serg_vrn_ #
14:15
ок пошел искать
14:15
а то что-то никакого попадания с моим железом :(
e_zombie #
14:15
там главное вот что то такое нарисовать
14:15
https://bt.nocproject.org/browse/INV-44
14:15
https://bt.nocproject.org/browse/INV-43
Unbeerable #
14:30
чистая установка нока, цыска 2950 шлёт трап про падение линка и нок говорит Unknown | SNMP Trap
14:30
я почему-то думал, что такие базовые оно должно само как-то
14:31
я уже не помню, в другом месте вроде без доп. махинаций взлетало
Dmitry1 #
15:37
Unbeerable: raw value этого трапа кинь
15:59
Закоммител обновленный профиль DLink.DxS.
16:00
Вроде пофиксил NOC-1508, научил показывать воткнутые SFP
Unbeerable #
17:17
Dmitry1, http://pastebin.com/ATps4UTD оно?
Tweet
Share this page
Share this page: Tweet