nocproject.org
03:54
dvolodin, :)
03:54
доки бы про ipam rest
03:55
да вааще.
03:55
ночь не спал
03:56
такой же REST как и везде :)
03:56
GET /ip/prefix/
03:56
GET /ip/address/
03:56
ну и POST + PUT + DELETE
03:57
права учитываются ?
03:58
пока нет, это скорее для внешних систем
04:00
делаю наброски
04:01
-a <user>:<pass>
04:01
там можно и выражения делать
04:01
вроде ?afi=4&parent=<id>&vrf=<id>
04:03
а как конкретный префикс дернуть ?
04:04
04:05
yj jyj yt jnlftn dct xnj dyenhb
04:05
но оно не отдает все что внутри
04:05
только сам префикс
04:05
а как все вложенное получить ?
04:05
а теперь посмотри его id и так: ?afi=4&parent=<id>
04:06
ага пашет.
04:07
дим сложно.
04:07
не интуитивно нихера
04:07
да куда уж интуитивнее
04:08
все возможности запросов django orm есть
04:08
/ip/prefix/1/4/192.168.2.0/24
04:08
типа такого можно: ?description__contains=IX
04:08
это так будет: /ip/prefix/?vrf=1&afi=4&prefix=192.168.2.0/24
04:09
или /ip/prefix/<id>/
04:10
не по id тока сам префикс
04:11
а для tags не бывает __ contains ?
04:11
нет. Но можно tags=....
04:13
при передаче неверного поля получаю 500 ую
04:13
&tag=nsk
04:14
ага.
04:14
дамп нужен ли ивоспроизведешь ?
04:15
04:17
и по тегу не ищет. хотя его показывает
04:17
ok
04:17
может дойдут руки выпилить django-tagging
04:17
04:17
нет нет.
04:17
без тегов -> смерть
04:18
быстрая почти немедленная
04:19
ибо вопросы к ноку покажи мне биллинговые сервера в орене будут невозможны
04:19
или все ресурсы нока которые связаны с услугой "пупкин"
04:22
надо теги попрямее сделать
04:22
в принципе, в посгресе есть нормальные массивы
04:22
вот на них и сделать
04:22
а мысль выбросит ьих совсем..... скучна, грустна, и тебе уже не так нравится как 10 минут назад :)
04:23
django-tagging - порнуха
04:23
делают строковое поле с запятыми
04:23
там много нареканий
04:23
это да
04:23
и еще 2 вспомогательные таблицы
04:24
боляя прямой способо
04:24
делать массив tags
04:24
индексировать его
04:25
я думаю они просто кросплатформенно старались сделать.
04:25
и либо искать по индексу по всех моделях, где он есть, либо хранить в отдельной таблице теги с указаниями моделей, где они встречаются
04:26
generic foreign key они пытались использовать
04:27
BTW, обновил jira и confluence
04:28
а конфлюенс то зачем.
04:28
там минорные фиксы
04:29
ну да бог с ним.
04:32
блин надо чего то придумывать с тегами
04:32
без них грустна
04:33
может все таки /ip/prefix/<id>/ должен быть vrf-ом ?
04:34
а то в интерфейсе так, а тут так
04:36
noc=# SELECT tags, a_tags FROM sa_managedobject WHERE a_tags @> '{DEMO}';
04:36
tags | a_tags
04:36
-------+-----------
04:36
DEMO | {DEMO}
04:36
DEMO, | {DEMO,""}
04:36
DEMO, | {DEMO,""}
04:36
(3 rows)
04:36
noc=# EXPLAIN SELECT tags, a_tags FROM sa_managedobject WHERE a_tags @> '{DEMO}';
04:36
QUERY PLAN
04:36
------------------------------------------------------------------------------------
04:36
Bitmap Heap Scan on sa_managedobject (cost=8.00..12.01 rows=1 width=33)
04:36
Recheck Cond: (a_tags @> '{DEMO}'::character varying[])
04:36
-> Bitmap Index Scan on sa_managedobject_tags (cost=0.00..8.00 rows=1 width=0)
04:36
Index Cond: (a_tags @> '{DEMO}'::character varying[])
04:36
(4 rows)
04:36
noc=# SELECT tags, a_tags FROM sa_managedobject WHERE a_tags @> '{DEMO}';
04:36
tags | a_tags
04:36
-------+-----------
04:36
DEMO | {DEMO}
04:36
DEMO, | {DEMO,""}
04:36
DEMO, | {DEMO,""}
04:36
(3 rows)
04:36
да, индексирует
04:37
04:37
правильно соображаю что бы корню поменять автономку ?
04:37
PUT
04:37
и asn=<id>
04:37
нее.
04:38
я не знаю эти id
04:38
я хочу что бы он отрезолвил
04:38
asn__ans = 22222
04:38
не уверен, конечно
04:38
но можно попробовать
04:38
asn__asn
04:40
нее
04:40
200 говорит
04:41
PUT /ip/prefix/<id>/
04:43
неа. тока по id
04:45
по остальным так же
04:45
можно будет подумать и доработать, там несложно
04:46
в принципе можно вернуться к вопросу временного резервирования адресов и префиксов
04:46
ResourceState у нас уже есть
04:46
можно сделать сервис, который будет резервировать ресурс и выдавать его
04:47
а потом уже, для подтверждения резервации, можно будет state менять
04:49
нее. давай косяков добъем.
04:49
я раз 5-6 уже 500ый поймал
04:49
хотя до адресов еще не дошел
04:50
ты внутрь views.py посмотрел?
04:51
:))
04:51
солидная такая View
04:51
афромагия полная ;)
04:52
я бы даже сказал неестественно здоровая.
04:52
и если я праивльно опнимаю именно в нее прилетит весь остальной код по резолву, обработкам ошибок и прочим моментам
04:53
тока надо знат ьволшебные методы
04:54
именно
04:54
там есть чудо-класс, который по модели делает полный REST
04:55
если его доработать, то эти методы везде будут нормально работать
04:58
дима, давай его таки допилим.
04:59
я тут от возбуждения уже не знаю куда даваться
04:59
поеду на работу ;)
04:59
кстати, в рамках хороших идей
04:59
давайте журнал ежемесячный выпускать :)
04:59
обзор коммитов ?
04:59
:)
05:00
с обзорами новых фишек NOC, полезными советами,
05:00
обзорами различного железа, которое в руки попадало
05:00
и так далее
05:00
хм. дим, апи меняться не будет ?
05:01
так оставляем и наполянем фишками ?
05:01
или таки будет /вфа/вафв/фв/
05:01
ок. пишу по этому варианту.
05:12
привет! ребят, а что вы тут такое возбуждающее обсуждали то? :)
05:12
поделитесь, я тоже хочу свою порцию возбуждения с утра ;)))
05:14
MindGames_, json интерфейс к IPAM
05:14
теперь ипам перестанет быть мертвым грузом
05:19
MindGames_, не невозбуждает ?
05:20
ну, я пока еще не осознал степень своего возбуждения
05:20
мне для начала надо представить формы этого джейсона... ;)
05:20
работа с ipam из скриптов.
05:20
а сейчас IPAM как работает? вроде тоже скрипты там есть. адреса же дискаверят.
05:21
05:21
из внешних скриптов
05:21
например из биллинга
05:21
или системы управления
05:21
или скрипта прошивки коммутаторов
05:22
тоесть нок из хранилки адресов превратился в базу данных доступную для других.
05:25
мм.. теперь понять бы, как эту базу использовать ;))
05:29
freeseacher, начни с того что это такое http
05:29
я не понял в каком пакете идет эта утилита
05:29
Hyper Text Transfer Protocol это я знаю ;)
05:30
05:30
оно как Curl
05:30
или wget
05:30
но красиво форматирует json
05:30
и http
05:31
в портах нету ее
05:31
жаль
05:31
easy_install httpie
05:31
или pip
05:32
допишу, выложу
05:54
о, а в предыдущих интерфейсах, которые до ipam уже работали - там тоже можно фишки вроде _contains использовать?
06:06
Люди, скажите такую весч... А как активатору объяснить, что он знает этот МО, при том что дискаверя нашел префиксы и адреса, увязал их с МО и все такое...?
06:20
dvolodin, Add first free vlan поломан
06:20
06:21
zi_nnov, его нет на канале :)
06:22
черт
06:22
придется issue делать
06:22
всегда лучше сделать issue :)
06:24
так быстрей, и трекер мусором не будет забиваться, тем более если там правки на две запятых
06:25
06:31
dvolodin, йопта. 500-ых...
06:31
[качаю головой]
06:32
POST не делаеет корректный save. parent не ищется
06:33
это critical
06:36
ни как не могу понять как записывать теги
06:37
06:37
так вот пробовал
06:38
дупы обрабатываются :)
06:38
атрибут id игнорируется если передавать
06:39
сейчас проверю post
06:40
POST дабы CREATE а PUT для UPDATE так везде ?
06:40
ок
06:45
NOC-625 выложил патчик peer.as ибо нужен
06:45
не понял нужна модель или нет
06:47
и теги да. непонятно как писать
07:10
я делаю общий lookup
07:27
freeseacher: models.js для lookup'а не нужна
07:27
только lookup и lookup_field
07:28
а можно как-то заставить дискавери передискаверить интерфейсы на какой-то железяке?
07:28
peer.peer вполне можно целиком на extjs портировать
07:28
mikevlz: да
07:28
в managed objects
07:28
в шедулах вроде можно запустить принудительно
07:28
есть admin action -- run interface discovery now
07:28
разве там? :) я в шедулес делал
07:31
кто храбр духом и перепишет peer.peer ?
07:31
./noc newapp peer.peer --model=Peer
07:31
и поля прописать там
07:36
ни чего не сломается при этом? :)
07:37
надо будет дописать JS в этой рыбе
07:37
по аналогии
07:39
noc@nmg ~ $ ./noc newapp peer.peer --model=Peer
07:39
Creating skeleton for peer.peer
07:39
Traceback (most recent call last):
07:39
File "manage.py", line 41, in <module>
07:39
execute_manager(settings)
07:39
File "/opt/noc/contrib/lib/django/core/management/__init__.py", line 438, in execute_manager
07:39
utility.execute()
07:39
File "/opt/noc/contrib/lib/django/core/management/__init__.py", line 379, in execute
07:40
self.fetch_command(subcommand).run_from_argv(self.argv)
07:40
File "/opt/noc/contrib/lib/django/core/management/base.py", line 191, in run_from_argv
07:40
self.execute(*args, **options.__dict__)
07:40
File "/opt/noc/contrib/lib/django/core/management/base.py", line 220, in execute
07:40
output = self.handle(*args, **options)
07:40
File "/opt/noc/main/management/commands/newapp.py", line 206, in handle
07:40
"type": self.model_map[fc][0],
07:40
KeyError: 'INETField'
07:40
как то так
07:40
видимо, потому, что я не обновлялся месяца два как.. ;)
07:54
даже не знаю, советовать ли тебе обновиться. с одной стороны, исправили несколько багов, а с другой - эти же баги сами и создали
07:56
да, я пока лучше подожду с обновой ;)
07:59
да, распил моделей был весьма болезненным
08:14
freeseacher: закоммитил foreign key dereference в POST/PUT
08:14
08:22
кстати, quick edit в jira 5.1 очень неплох
08:51
а как можно попробовать GET ? что-то у меня не получается
10:20
приветствую всех. у меня вопрос к активно использующим Fault management модуль: после смены IP на железке появился alarm с комментарием All SA tasks to this object is temporary suspended
10:21
вроде и аларм убран, и устройство зелененьким в SA показано, а при запуске скриптов результата нет, ибо Host is Down. Как бы это полечить? по IP устройство естественно доступно.
10:35
да, я сам managed object перенастроил. такое ощущение, что закешировано где-то, что Host is Down
10:39
debug-script Cisco.IOS.get_config вот ровно сейчас мне вернул нормальный вывод.может я alarm не до конца отработал? в списке активных его нет...
11:00
Дайте мне посмотреть в глаза тому китайцу, который сочинял MIB'ы для D-Link
11:00
они узкие, с прищуром_
11:01
Как только новую железку заставляю писать лиги или отсылать трапы, так тут же они не вписываются ни в одно правило :(
Share this page
Share this page: