Skip to content

zhenyatsk/devnet-marathon3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

devnet-marathon3

Список используемого:

  • vis.js
  • nornir
  • flask

Небольшое приложение на flask (javascript оказался проще всего).

Есть следующие особенности:

  • в коде есть проверка на существование обнаруженного соседа в инвентори и в случае, если сосед обнаружен в выводе команды, но в инвентори его нет, то такой узел не попадает в результирующий файл;
  • для упрощения логики подразумевается, что портовые tlv отправляются и выводе команд все присутствует;
  • тип устройства (роутер или свитчо) определяется по наличию включенной Router capability, естественно если это отключить, то все сломается (все устройства будут свитчами);
  • поддерживается только ios xe / ios

Входные и выходные данные

На ходе ожидается заполненное инвентори в фармате SimpleInventory Nornir На выходе перед отрисовской получается json вида { links: [], nodes: [] }

Как запустить

Перед началом создаем новый venv (все проверялось на MacOS)

  1. Создаем окружение python3 -m venv ~/env2
  2. Активируем его source ~/env2/bin/activate
  3. Переходим в папку с проектом cd git/devnet-marathon3
  4. Установим зависимости pip install -r requirements.txt
  5. Отредактируем inventory
  6. Теперь можно запустить python3 topology.py. В результате мы должны получить сообщение "topology data has written to file"
  7. Теперь можно запустить python3 web_app.py
  8. Открываем в браузере http://127.0.0.1:5000/ в результате видим нашу топологию.

На страничке также есть кнопка RefreshData, которая тригерит запуск сборщика файла топологии, по завершению страничка будет перезагружена.

Версионирование и отображение изменений

Каждый раз при запуске рассчитывается разница между topology.json и topology_prev.json (если его нет, то считается, что есть пустой { links: [], nodes: [] } )

Для устройств:

  • лейбл красный - устройство было удалено
  • лейбл зеленый - устройство было добавлено
  • лейбл черный - ничего не менялось с устройством

Для линков:

  • красный линк - линк не дискаверится
  • зеленый линк - линк добавился
  • черный - ничего не изменилось с линком

Историю topology.json можно посмотреть в папке data/archive

Диагностика

Если что-то пошло не так, то можно открыть файл data/topology.json. Там должно быть что-то похожее на samples/topology.json.

Также стоит обратить внимание на hostname в hosts.yaml (скрипт динамически не получает hostname устройства).

чтобы отрисовать тестовые данные достаточно просто положить файл с топологией в папку data.

Примеры топологий:

classic spineleaf

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages