-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Новая версия API для Newsfeed-сервиса
Сервис Newsfeed изменил точку входа для получения новостной ленты. Старый эндпоинт будет выведен из эксплуатации. Необходимо адаптировать наш код.
-
Было (v1):
- GET
https://api.netbox.oss.netboxlabs.com/v1/newsfeed/
- GET
-
Стало (v2):
- GET
https://api.netbox.oss.netboxlabs.com/newsfeed/?version=2
- GET
Обоснование
- Унификация версионирования: переход к query-параметрам для указания версии API упрощает маршрутизацию и кэширование
- Расширенный формат ответа: новая версия предоставляет дополнительные метаданные и улучшенную структуру данных
- Готовность к расширению: query-параметры позволяют добавлять фильтры без изменения базового URL
📋 Статус реализации
✅ Выполненные задачи
1. Параметры конфигурации (netbox/config/parameters.py)
Добавлен параметр: NEWSFEED_API_VERSION
- Тип: String
- По умолчанию:
'v1' - Описание: Версия API новостной ленты для использования (v1 или v2)
- Возможные значения:
'v1'- использует endpointhttps://api.netbox.oss.netboxlabs.com/v1/newsfeed/'v2'- использует endpointhttps://api.netbox.oss.netboxlabs.com/newsfeed/?version=2- любое другое значение - fallback на базовый URL
2. Конфигурация настроек (netbox/settings.py)
Логика определения URL:
- Если
NEWSFEED_API_VERSION == 'v1':NEWSFEED_URL = f'{NETBOX_API_BASE_URL}v1/newsfeed/'
- Если
NEWSFEED_API_VERSION == 'v2':NEWSFEED_URL = f'{NETBOX_API_BASE_URL}newsfeed/?version=2'
- Иначе:
NEWSFEED_URL = f'{NETBOX_API_BASE_URL}newsfeed/'(базовый URL)
3. Конфигурация виджета дашборда (extras/constants.py)
Обновлено: Конфигурация RSSFeedWidget
- Было: Жестко заданный URL
'https://api.netbox.oss.netboxlabs.com/v1/newsfeed/' - Стало: Динамический URL из настроек
settings.NEWSFEED_URL
4. Дополнительные улучшения
✅ Добавлены автоматические тесты (extras/tests/test_newsfeed.py):
- Тесты конфигурации (v1, v2, fallback)
- Тесты виджета с динамическим URL
- Тесты для изолированных развертываний
✅ Создана документация (NEWSFEED_API_MIGRATION.md):
- Полное описание изменений
- Инструкция по миграции
- План тестирования и отката
✅ Создан скрипт тестирования (test_newsfeed_migration.py):
- Проверка конфигурации
- Валидация URL для разных версий
- Проверка интеграции с виджетом
Стратегия обратной совместимости
Реализован механизм конфигурируемого переключения версий:
- По умолчанию используется v1 - обеспечивает обратную совместимость
- Переключение на v2 через конфигурационный параметр:
NEWSFEED_API_VERSION = 'v2'
- Fallback механизм - при указании неизвестной версии используется базовый URL
- Плавный переход - администраторы могут переключиться на v2 в удобное время
Риски и влияние
- ✅ Обратная совместимость: v1 работает по умолчанию
- ✅ Конфигурируемость: Легкое переключение между версиями
⚠️ Изменение формата ответа: v2 может возвращать расширенный формат (обрабатывается библиотекойfeedparser)⚠️ Отсутствие автоматического fallback: Требует ручного переключения при проблемах с v2
🧪 Тестирование
Автоматические тесты
# Запуск тестов Newsfeed API
python manage.py test extras.tests.test_newsfeed
# Запуск скрипта проверки миграции
python test_newsfeed_migration.pyРучное тестирование
-
Проверка v1 (по умолчанию):
- Виджет "NetBox News" отображает данные через v1 API
- Конфигурационный параметр равен
v1
-
Проверка v2:
- Установить
NEWSFEED_API_VERSION = 'v2'в настройках - Виджет использует новый endpoint
?version=2 - Данные корректно отображаются
- Установить
-
Проверка fallback:
- Установить неизвестную версию (например,
v3) - Система использует базовый URL
- Установить неизвестную версию (например,
Чеклист задач
- Добавить параметр конфигурации
NEWSFEED_API_VERSION - Реализовать логику выбора URL на основе версии в
settings.py - Обновить виджет дашборда для использования динамического URL
- Обновить
MAPS_URLдо актуального API (отложено - нет дополнительных данных) - Создать документацию по миграции API
- Провести тестирование на стенде с v2 API
- Обновить конфигурацию production после проверки (требует ручного развертывания)
📚 Документация
Полная документация доступна в файле NEWSFEED_API_MIGRATION.md, включая:
- Детальное описание изменений
- Инструкция по переходу на v2
- План миграции и отката
- Руководство по тестированию
🚀 Развертывание
- Текущее состояние: Все экземпляры используют v1 по умолчанию
- Тестирование: Переключить тестовые среды на v2 (
NEWSFEED_API_VERSION = 'v2') - Продакшен: После успешного тестирования обновить продакшен среды
- Мониторинг: Следить за доступностью Newsfeed API и отображением виджета
📞 Поддержка
При возникновении проблем:
- Проверьте логи приложения
- Убедитесь в доступности Newsfeed API
- Проверьте значение
NEWSFEED_API_VERSIONв настройках - При необходимости вернитесь на v1 и создайте issue
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels