
Dmitry
25.01.2017
12:34:12
dlink и juniper я упростил сильно
да может и киску так сделать
interface Gi0/1
description test

Google

Dmitry
25.01.2017
12:34:48
преобразовать в interface Gi0/1 description test

E_zombie
25.01.2017
12:34:53
а давайте отрежем володину ногу? (с)

Dmitry
25.01.2017
12:35:04
не надо, не надо, я вспомнил дорогу
клипс, да
вынести надо нафиг

E_zombie
25.01.2017
12:35:28
тогда пушни мой коммит

Dmitry
25.01.2017
12:35:31
и заменить обычным питоном
ну а фигли ты json в кучу со скриптом кинул?

E_zombie
25.01.2017
12:36:28
оно само (с)

Dmitry
25.01.2017
12:37:27
давайте подумаем, как удобнее писать валидаторы?

E_zombie
25.01.2017
12:39:37
ну то что они в отдельных директориях как и профили это есть гуд.
я бы лучше подумал над тем как его дебажить удобно было из консоли.
это проще

Google

Andrey
25.01.2017
12:40:29
там удобно - --debug ключик
для дискавери

E_zombie
25.01.2017
12:41:21
2017-01-25 15:25:27,237 [scheduler.discovery] [12561] [discovery|box|BALT-AR1|id] Check is disabled. Skipping
2017-01-25 15:25:27,284 [scheduler.discovery] [12561] [discovery|box|BALT-AR1|config] Checking config
2017-01-25 15:25:27,285 [rpc.sae] [>CALL] get_credentials()
2017-01-25 15:25:27,286 [rpc.sae] [10.64.255.213:19022] Sending request
2017-01-25 15:25:27,302 [rpc.sae] [<CALL] get_credentials (16.43ms)
2017-01-25 15:25:27,302 [rpc.activator-default] [>CALL] script()
я бы не сказал
это циска

Алексей
25.01.2017
12:42:05

Dmitry
25.01.2017
12:42:19
да
:)

E_zombie
25.01.2017
12:43:05
пиздетц

N
25.01.2017
12:45:32
есть идеи?
у кого FM запущен полноценно?
у меня в микросервисах, только супер пользователь видит все алармы, а обычные пользователи лишь часть, причем не понятно по какому признаку
в телеграм улетает тоже не все, только то, что видят обычные юзеры
к примеру ошибки по упавшим пингам и интерфейсам долетают, но ошибки с флапающим маком, но этой же делезке нет
с другой упавший интерфейс - не прилетает

Ilya
25.01.2017
12:45:34

Dmitry
25.01.2017
12:47:26
да

Maksim
25.01.2017
12:48:10
@dvolodin Дмитрий, подскажите. SSID на точках забирать лучше в get_interfaces ?

Dmitry
25.01.2017
13:11:34
:-/
не знаю
может отдельно все-таки?
хотя, с другой стороны
а не

Google

Dmitry
25.01.2017
13:12:13
точно не в интерфейсах
нормализация имени там обломается

Maksim
25.01.2017
13:14:53
ну вот

Dmitry
25.01.2017
13:15:10
то есть отдельный скрипт

Maksim
25.01.2017
13:15:12
и куда его тогда корячить ?
ну отдельный это не проблема. Только куда данные с него лепить?
в интерфейсы ?)

Dmitry
25.01.2017
13:15:47
по логике вещей SSID в базу нужно сложить
тогда и метрики на них можно будет делать

Maksim
25.01.2017
13:16:12
метрики сейчас тоже делаются

Ivan
25.01.2017
13:18:08
Тааак
а что юудет, если я удалю нетфорк сегмент, в котором были железки?

Ivan
25.01.2017
13:18:35
они теперь трейсят в МО..
Это ожидаемое поведение?)

Maksim
25.01.2017
13:18:59
надо вернуть то что удалил)
я позавчера инветори разломал )

Ivan
25.01.2017
13:19:35

Maksim
25.01.2017
13:20:57
=(

Ivan
25.01.2017
13:21:21
надо или бывший uuid сегмента восстановить или дропать МО
фиксы есть на эту тему?

Google

Vladimir
25.01.2017
13:22:11

E_zombie
25.01.2017
13:25:07
чтобы пиздить всяких пидоров что неправильно настраивают оборудование.
через автоматизацию проверки конфигов на валидность.

Ivan
25.01.2017
13:25:24
EXCEPTION: <class 'noc.inv.models.networksegment.DoesNotExist'>
ГРУСТЬ!
Андрей, спасай!

Vladimir
25.01.2017
13:31:36
ох какая это больная тема( мы как-то писали валидацию. в итоге делали это черезразбор текста конфига на вложенную структуру, и сами валидаторы были на питоне.
в итоге проверки сводились к чему-то вроде:
for ifname, iface in conf['interface']:
if iface['mtu'] != '9000':
ALARMA!!! ну или фикс прям тут

E_zombie
25.01.2017
13:32:03
вот вот.
а тут парсер для каждой железке. а валидатор вендоронезависимый

Admin
ERROR: S client not available

Vladimir
25.01.2017
13:32:45
в итоге мы немного по другому пошли

E_zombie
25.01.2017
13:34:51
ну у меня что то подобное было. только я парсил конфиги собранные ноком.

Vladimir
25.01.2017
13:34:59
мы теперь рендерим конфиги из какой-то общей модели, а потом интеллектуально парсим дифф между получившимся конфигом и desired. в начале никто не верил в этот подход, но вроде получилось. на сдачу получаешь сразу полное управление конфигами из центрального места, нужно закоммитить в репо, чтобы система захотела выкатить некоторые изменения на железяку

E_zombie
25.01.2017
13:35:03
было дуже забавно наблюдать результат.
кхм.

Vladimir
25.01.2017
13:36:31
истессно в полуавтоматике, изменения которые надо выкатить все же валидирует человек, но один раз, после изменения модели

E_zombie
25.01.2017
13:37:37
а не проще всё под одну гребёнку ?

Vladimir
25.01.2017
13:37:57
в смысле?

E_zombie
25.01.2017
13:38:32
ну типа конфиг должен быть везде одинаковый. и что отличается - сразу битой по лицу. и автоматический накат правильного?

Vladimir
25.01.2017
13:40:49
во-первых он не может быть одинаковым, потому что везде разные версии железа и софта. + в разных локациях могут отличаться и модели железки. в одном регионе сети такая то фича включена - в другом нет. с этих данных и рендерится этот "одинаковый" конфиг.
во-вторых не всегда изменения реально стоит выкатывать сразу. бывает факапочные ситуации, когда админ намерянно пошел и притушил svi например, а автоматика сразу придет и подними его обратно, еще и пизды отвалит админу)

Google

Ivan
25.01.2017
13:40:58
@aversant тут?

Vladimir
25.01.2017
13:41:32
а если не всегда ты хочешь выкатывать сразу, то могут появиться ситуации когда одна часть конфига должна улететь на железку, а другая остаться в уме на будущее

Dmitry
25.01.2017
13:42:01
такое будет работать, но не всегда
мы делали автоматическую генерацию конфига в зависимости от того, какие клиенты на каких портах
причем можно было поменять коммутатор и на замену поставить совсем другую модель и другого вендора
но тогда требуется сервисы вести

Andrey
25.01.2017
13:43:13

Vladimir
25.01.2017
13:43:35
естественно ничего не дается бесплатно
но подход вроде приживается

Ivan
25.01.2017
13:43:55

Andrey
25.01.2017
13:44:16
UUID сегмента есть?

Ivan
25.01.2017
13:44:27
да, в трейсах видно
их было 2

Vladimir
25.01.2017
13:44:38
там пара должна быть
Почитал про CLIPS, перепробовал кучу всего.
Получилось, что пустое поле fact бывает по разному "пустым", согласно примеру из доки vlan_id обрабатывается и не вызывает ошибки.
Но при попытке вписать именно input_ipv4_filter или pim_mode возникает ошибка синтаксиса.(о чём писал выше)
Если скормить условие (input_ipv4_filter "188") - то отработает.
ИТОГ(где нет acl):
(defrule {{RULENAME}}
(subinterface (input_ipv4_filter nil) (name ?n))
=>
(assert
(error (type "Config | Match Template")
(obj ?n)))
)
не NULL, а именно nil ?
ИТОГ(где есть acl):
(defrule {{RULENAME}}
(subinterface (admin_status 1) (name ?n)(input_ipv4_filter ?acl))
(not (subinterface (name ?n) (input_ipv4_filter nil)))
=>
(assert
(error (type "Config | Match Template")
(obj ?n)
(msg ?acl)))
)


Vladimir
25.01.2017
13:45:30
главное что это оказалось куда удобнее валидации.
валидация она про раздачу пиздюлей, которых может быть много и запаришься это все расследовать, готовить на каждый кейс по патчу. и раскатывать его. а если патч различается в зависимости от железок? это гемор. а тут система показывает что тут не соответствие и сразу предлагает выкатить уже сгенерированный патч
если тебе не нравится патч - идешь в генератор, дописываешь пару строк и выкатываешь

Ilya
25.01.2017
13:46:57

E_zombie
25.01.2017
13:47:15
я только ради этого полез в эти гомопарсеры
ибо писать руками парсер не хочу

Vladimir
25.01.2017
13:48:44

E_zombie
25.01.2017
13:49:23
да добавляй.
лишним не будет.