ConfigAPI

0

Описание

RESTful API example

Языки

  • Python96,2%
  • Dockerfile2,2%
  • Makefile1,4%
  • Shell0,2%
4 года назад
4 года назад
4 года назад
4 года назад
4 года назад
4 года назад
4 года назад
4 года назад
4 года назад
4 года назад
README.md

RESTful API

Это демонстрационное API. В роли веб-сервера выступает Gunicorn, обрабатывает запросы фреймворк flask. Работы с базой данных осуществляется с помощью SQLAlchemy. Исполнение команд происходит через очереди RabbitMQ, с помощью фреймворка Celery. Поключение к устройствам с помощью библиотеки ncclient (имитация). Перед выполнением задачи, проверяется отсутствие состояния гонки (race condition)

Запуск

Сбор образов,запуск всех необходимых контейнеров осуществляется с помощью команды:

docker-compose up -d

Pre-commit hook

make pre-commit

API доступно по URL: http://localhost:7500/api/v1.0/

HTTP аутентификация

Доступ к порталу ограничивается базовой HTTP аутентификацией. Для добавления пользователя необходимо сгенерировать SHA512 хэш из пароля:

# echo -n "password" | openssl dgst -sha512 (stdin)= b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86

и добавить логин и хэш в файл конфигурации config.ini в раздел Users:

[Users] user: b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86

чтение конфигурационного файла происходит один раз при запуске. Дефолтные реквизиты: user/user

Данные для демонстрации

Таблица network.devices заполняется из файла example_data.csv (вымышленные устройства) В вызове функций имитируются подключение и конфигурирование сетевых устройств.

Логи

Директория с логами из контейнера монтируется по пути

/var/log/confapi/

Примеры запросов

Посмотреть доступный функционал

HTTP-метод GET

Пример URL:

Запросить список устройств

HTTP-метод GET

Пример Query string:

Выполнить команду на устройств

HTTP-метод POST

Обязательные параметры: id - идентификатор устройства в базе command - комманда на исполнение

Пример JSON:

Возвращает task_id - номер задачи по настройке

Узнать статус настройки

HTTP-метод GET Обязательные параметры: task_id - идентификатор задачи в базе

Пример JSON:

Пример Query string: