# Подготовка к релизу [TOC] ## Checklists ### Функциональный тест (таблица) - [ ] Сконфигурировать ran-routing - [ ] Создать новый workspace в ran-routing для нужного региона - [ ] Перейти на https://cloud.everynet.io/ - [ ] Выбрать "тестовую" организацию. - [ ] Выбрать нужный регион, например US - [ ] Workspaces -> New Workspace - [ ] Ввести название `ran routing functional test` - [ ] Скопировать URL и Access Token как `RAN_ROUTING_URL` и `RAN_ROUTING_TOKEN` - [ ] Сконфигурировать ran-config + ran-lorawan (попросить Дениса помочь) - [ ] Создать новую запись в БД ran-config для виртуального гейтвея. - [ ] Создать новый токен доступа для этого виртуального гейтвея. - [ ] Получить URL для подключения к Ran-Config и токен доступа, записать их как `RAN_CONFIG_URL` `RAN_CONFIG_TOKEN` - [ ] Заполнить прочие [переменные окружения](https://gitlab.everynet.io/ran-routing/observer/-/blob/master/REAMDE_FUNCTEST.md) Финальная конфигурация теста должна выглядеть подобным образом: ```yaml= environment: # Настройки подключения к RAN-CONFIG + RAN-LORAWAN для эмуляции устройства - RAN_CONFIG_URL=${RAN_CONFIG_URL} - RAN_CONFIG_TOKEN=${RAN_CONFIG_TOKEN} # Настройки подключения к RAN-ROUTING для эмуляции клиента - RAN_ROUTING_URL=${RAN_ROUTING_URL} - RAN_ROUTING_TOKEN=${RAN_ROUTING_TOKEN} # Прочие настройки - SENTRY_ENVIRONMENT=stand - SENTRY_SERVER_NAME=ran-routing-observer - SENTRY_RELEASE=latest - SENTRY_DSN=${SENTRY_DSN} - LOG_LEVEL=info - HEALTHCHECK_PORT=9091 - METRICS_PORT=9092 ``` ### Функциональный тест (wildcard) - [ ] Сконфигурировать ran-routing - [ ] Создать новый workspace в ran-routing для нужного региона - [ ] Перейти на https://cloud.everynet.io/ - [ ] Выбрать "тестовую" организацию. - [ ] Выбрать нужный регион, например US - [ ] Workspaces -> New Workspace - [ ] Ввести название `ran routing functional test (wildcard)` - [ ] Скопировать URL и Access Token в .env-файл как `RAN_ROUTING_URL` и `RAN_ROUTING_TOKEN` - [ ] Настроить wildcard для этого workspace - [ ] Составить нужные маски для `join_eui`, `dev_addr` - [ ] Попросить Никиту или Глеба выполнить запрос к wokrspace-api, поскольку этот API недоступен публично и требует авторизации. ```bash curl -X POST http://{workspace-api-url}/api/v1/workspace/set_wildcard \ -H "Authorization: Bearer $WORKSPACE_API_TOKEN" \ -d '{\ "id": "<uuid, взять из URL cloud.everynet.io, когда выбран нужный воркспейс>",\ "allowed_join_eui": 0,\ # нужная маска "allowed_dev_addr": 0,\ # нужная маска }' ``` - [ ] Сконфигурировать ran-config + ran-lorawan (попросить Дениса помочь) - [ ] Создать новую запись в БД ran-config для виртуального гейтвея. - [ ] Создать новый токен доступа для этого виртуального гейтвея. - [ ] Получить URL для подключения к Ran-Config и токен доступа, записать их как `RAN_CONFIG_URL` `RAN_CONFIG_TOKEN` - [ ] Заполнить прочие [переменные окружения](https://gitlab.everynet.io/ran-routing/observer/-/blob/master/REAMDE_FUNCTEST.md) Финальная конфигурация теста должна выглядеть подобным образом: ```yaml= environment: # Настройки подключения к RAN-CONFIG + RAN-LORAWAN для эмуляции устройства - RAN_CONFIG_URL=${RAN_CONFIG_URL} - RAN_CONFIG_TOKEN=${RAN_CONFIG_TOKEN} # Настройки подключения к RAN-ROUTING для эмуляции клиента - RAN_ROUTING_URL=${RAN_ROUTING_URL} - RAN_ROUTING_TOKEN=${RAN_ROUTING_TOKEN} # Прочие настройки - SENTRY_ENVIRONMENT=stand - SENTRY_SERVER_NAME=ran-routing-observer - SENTRY_RELEASE=latest - SENTRY_DSN=${SENTRY_DSN} - LOG_LEVEL=info - HEALTHCHECK_PORT=9091 - METRICS_PORT=9092 ``` ### Интеграционный тест - [ ] Сконфигурировать ran-config + ran-lorawan (попросить Дениса помочь) - [ ] Создать новую запись в БД ran-config для виртуального гейтвея. - [ ] Создать новый токен доступа для этого виртуального гейтвея. - [ ] Получить URL для подключения к Ran-Config и токен доступа, записать их как `RAN_CONFIG_URL` `RAN_CONFIG_TOKEN` - [ ] В каждом из тестируемых NS создать и настроить устройство. - [ ] Создать уникальное (см. ниже) OTAA устройство и добавить его в нужный NS - [ ] Убедиться, что интеграции (bridge) запущены, а списки устройств синхронизированы - [ ] **Если NS использует routing table** - Убедиться, что произошла синхронизация устройства с ran-routing - [ ] **если NS подключен как wildcard** - Убедиться, что wildcard настроен правильно - [ ] Сформировать JSON, содержащий настройки устройства, см. пример ниже. - [ ] Заполнить `TEST_DEVICE_LIST` (json array) нужными устройствами - [ ] Заполнить прочие [переменные окружения](https://gitlab.everynet.io/ran-routing/observer/-/blob/master/REAMDE_INTEGRTEST.md) Финальная конфигурация теста должна выглядеть подобным образом: ```yaml= environment: # Настройки подключения к RAN-CONFIG + RAN-LORAWAN для эмуляции устройства - RAN_CONFIG_URL=${RAN_CONFIG_URL} - RAN_CONFIG_TOKEN=${RAN_CONFIG_TOKEN} # Список устройств, которые будет эмулировать этот тест - TEST_DEVICE_LIST=|- [ { "id": "ns", "dev_eui": "f38e74fcdb2bd427", "join_eui": "1aef23bdfd3a8a67", "app_key":"1561b3cdd81265fa4f77a51300b77a05", "band": "EU868" }, { "id": "fns", "dev_eui": "2224848c93d72744", "join_eui": "58edcf624f8bbeef", "app_key": "52f42247d5527fb087abd05fd608baac", "band": "US915" } ] # Прочие настройки - SENTRY_ENVIRONMENT=stand - SENTRY_SERVER_NAME=ran-routing-observer - SENTRY_RELEASE=latest - SENTRY_DSN=${SENTRY_DSN} - LOG_LEVEL=info - HEALTHCHECK_PORT=9091 - METRICS_PORT=9092 ``` ### Создание устройств для интеграционного теста При создании отличных, от указанных здесь, устройств и при наличии любых wildcard-соединений с ran-routing (например, FNS bridge включён), обязательно убедитесь, что устройство обладает такими идентификаторами (DevEUI, JoinEUI, DevAddr), чтобы трафик от него передавался только нужному NS! #### Everynet NS - [ ] Зайти на https://ns.stage.everynet.dev/devices (для STAGE/DEV) или **УТОЧНИТЬ URL** (для PROD) - [ ] Нажать на `+`, чтобы добавить устройство - [ ] Выбрать Organisation ID - организацию Test или Test Everynet - [ ] Указать в поле Device EUI `f38e74fcdb2bd427` - [ ] Указать в поле Application EUI `1aef23bdfd3a8a67` - [ ] Добавить тег `test-integration` - [ ] Указать тип активации OTAA (По умолчанию) - [ ] Указать шифрование NS - [ ] Указать Application key `1561b3cdd81265fa4f77a51300b77a05` - [ ] Указать LoRaWAN protocol version - v1.0.3 - [ ] Указать Band `EU863-870`. - **Важно** - на данный момент интеграционный тест поддерживает только US915 и EU863, поэтому предпочтительно использовать один из этих. Поскольку и гейтвей и устройство виртуальное - реальный band указывать не обязательно. - [ ] Нажать `Save`, чтобы сохранить устройство. - [ ] Для интеграционного теста заполнить конфигурацию`TEST_DEVICE_LIST` таким образом: ```json [{ "id": "ns", // Идентификатор NS, который будет отображаться в dashboard "dev_eui": "f38e74fcdb2bd427", "join_eui": "1aef23bdfd3a8a67", "app_key":"1561b3cdd81265fa4f77a51300b77a05", "band": "EU868" // Используйте тот же BAND, что вы указали в NS для эмуляции устройства }] ``` #### FNS **TBD!** --- ## Что нужно сделать Список вещей, которые нужно сделать с релизом (или до релиза) нового ran-routing ### Streaming API - [x] Поддержка нескольких TxWindow - [x] Фильтрация трафика по приватным сетям ### Subscription API - [x] Покрыть тестами метод upsert ### Workspace API - [x] Сделать API для настройки wildcard (?) - [x] Сделать API для управления send_gps и другими параметрами (?) ### Спецификация - [ ] Сделать отдельный repo на gitlab, где будет лежать спецификация (сейчас она в старом репо [ran-routing](https://gitlab.everynet.io/platform/ran/ran-routing/-/blob/master/docs/RanAPI_Spec.MD)) - [ ] Обновить информацию об эндпоинтах - [ ] Обновить описания структур данных согласно новой схеме - [ ] Добавить информацию про новый формат TxWindow (с поддержкой нескольких) - [ ] Обновить примеры с использованием curl ### SDK #### Python - [x] Добавить поддержку upsert для subscription-api #### GO - [ ] Добавить поддержку upsert для subscription-api - [ ] Упразднить ConnectionManager ### Bridges #### ChirpStack v3/v4 - [x] Cинхронизация устройств - [x] Завершить систему быстрого считывания информации об устройствах из ChirpStack (прочти готово, доделать и закоммитить) - [x] Использовать upsert для быстрой синхронизации устройств - [ ] Обновить документацию у бриджей по необходимости - [x] У bridge дляChirpStack v4 обновить контракты chirpstack-api (было минорное обновление) - [ ] Сделать релиз нового бриджа на GitHub #### TTN **!!!** Код этого бриджа сильно устарел. - [ ] Поддержка нового Streaming API - [ ] Обновление tti-contracts - [ ] etc