О продукте

Система автоматического обеспечения (Autoprovision, сокр. AuP) предназначена для автоматизированной настройки конфигурации и обновления ПО телекоммуникационных устройств.

В отличие от версий 1.0, текущая реализация поставляется в Docker-контейнерах.

Система AuP состоит из набора сервисов, таких как:

  • Core — основа системы, в которой заключена логика управления и взаимодействия с остальными сервисами, проверяет права на исполнение API-методов и обрабатывает их вызовы, поставляет конфигурационные параметры в сервис управления конфигурациями, хранит их историю, осуществляет интеграцию с ECSS.
  • Device Adapter (DA)-интерфейс — сервис для взаимодействия с оборудованием. Служит для обслуживания запросов от устройств, отправляет готовые конфигурационные файлы, файлы ПО с последующим обновлением и другие необходимые данные. Поддерживает перечень протоколов:
    • HTTP;
    • HTTPS;
    • TFTP (использовать исключительно для Cisco);
    • WS/WSS/MQTT — сейчас не используется, зарезервировано для будущих интеграций.
  • WEB Backend (BFF) — сервис для взаимодействия с пользователем. Обеспечивает функции аутентификации и авторизации пользователей, выполняет обращения к Core.
  • Configuration Properties Graph (CPG/Node-RED) — сервис, обеспечивающий графический интерфейс и функции для управления и конструирования конфигураций устройств.
  • WEB Frontend (Веб-сервер NginX) — сервис проксирует статические ресурсы веб-интерфейса и CPG.
  • Identity Provider (IdP/Keycloak) — сервис, обеспечивающий хранение пользовательских данных, групп, ролей и привилегий. Имеет возможность синхронизации пользователей LDAP/AD. Производит аутентификацию и авторизацию пользователей, генерирует токены доступа, представляет интерфейс учетных данных пользователей.
  • S3 Storage (Minio) — объектное хранилище, обеспечивающее хранение ресурсов, которыми оперирует AuP.

Рисунок 1 — Схема AuP

Глоссарий

  • Устройство — объект, над которым выполняются манипуляции конфигурирования. По типам устройства подразделяются на "физические" и "виртуальные".
  • Физическое устройство — устройство, опознанное системой как физическое по обмену между ТА и AuP. После регистрации физическим устройством может стать любое виртуальное.
  • Виртуальное устройство — устройство, которое было создано внутри системы для дальнейшего подключения физических устройств при помощи "Информации о регистрации устройств (DRI)".
  • Device Registration Information (DRI) — набор параметров, определяющих настройки физических устройств для работы с системой Autoprovision, закодированный в формат, специфичный для конкретного типа устройств. (QR-код или др.).
  • Device Registration Token (DRT) — используется для сопоставления физического и виртуального устройств на этапе регистрации.
  • Метод обслуживания — устройство обслуживается с помощью одного из четырех методов:
    • Конфигурация (Configuration) — будут обрабатываться только запросы, относящиеся к категории конфигураций;
    • Файлы ПО (Firmware) — будут обрабатываться только запросы на обновления ПО;
    • Конфигурация и файлы ПО (Configuration and firmware) — будут обрабатываться запросы и Configuration, и Firmware;
    • Не обслуживается (Ignore) — любые запросы от устройства игнорируются системой.
  • Контекст устройства — внутренняя структура данных, которая представляет собой информацию устройства, является основой для создания конфигураций устройств.
 Пример контекста устройства
{
    "ctx": {
        "device_uuid": "0a24bfd8-c655-4a98-9ad1-b735bad3cf45", 	- Идентификатор устройства
        "device_ctx": {
            "account": [{ 										- Секция аккаунтов
<------------------------------------- параметры открытого списка аккаунта --------------------------------------->
                "accountAdditionalInfo": {	
                    "sip_server_port": {
                        "insertedAt": "2022-08-26 07:04:06",
                        "key": "sip_server_port",
                        "updatedAt": "2022-08-26 07:04:06",
                        "uuid": "30e6a54e-2409-4812-ab46-928ed72b2b0b",
                        "value": "5090"							- Значение параметра "sip_server_port"
                    },
>------------------------------------- ... -------------------------------- --------------------------------------<
                    "password": {
                        "insertedAt": "2022-08-26 07:04:06",
                        "key": "password",
                        "updatedAt": "2022-08-26 07:04:06",
                        "uuid": "22ddd7fe-aa80-4165-bc08-535b47efae69",
                        "value": "123"							- Значение параметра "password"
                    }
                },
<------------------------------------- параметры аккаунта -------------------------------------------------------->
                "accountTag": {},								- Список тегов (меток) аккаунта
>------------------------------------- ... -------------------------------- --------------------------------------<
                "uuid": "76beb08e-2120-46dd-b983-c25aacd845d7"  - Идентификатор аккаунта
            }],
<------------------------------------- список конфигураций, сформированных для устройства ------------------------>
            "configuration": [{									- Список конфигураций
                "deviceUuid": "0a24bfd8-c655-4a98-9ad1-b735bad3cf45",
                "insertedAt": "2022-08-31 03:24:10",
                "updatedAt": "2022-08-31 03:24:10",
                "uuid": "c226fcbf-4e14-4ad1-9847-4d8afe93f9d2",
                "value": "{\"configuration\":{\"nodes_configuration\":[{\"node\":\"\",\"properties\":[]}],\"prop_map\":{}},\"format\":\"v1\"}"
            }, 
>------------------------------------- ... -------------------------------- --------------------------------------<
{
                "deviceUuid": "0a24bfd8-c655-4a98-9ad1-b735bad3cf45",
                "insertedAt": "2022-08-31 03:24:46",
                "updatedAt": "2022-08-31 03:24:46",
                "uuid": "dc887514-7e08-451d-8a7d-fbaf9578f4d5",
                "value": "{\"configuration\":{\"nodes_configuration\":[{\"node\":\"\",\"properties\":[]}],\"prop_map\":{}},\"format\":\"v1\"}"
            }],
<------------------------------------- параметры устройства ------------------------------------------------------->
            "descriptions": [],
            "deviceAdditionalInfo": {
                "device_adapter": {										- секция содержит описание Device Adapter, с которым работает ТА
                    "deviceUuid": "0a24bfd8-c655-4a98-9ad1-b735bad3cf45",
                    "insertedAt": "2022-08-26 07:05:35",
                    "key": "device_adapter",
                    "updatedAt": "2022-08-26 07:05:35",
                    "uuid": "77cf0314-c611-4cb4-aad2-5a96b8aaf0f4",
                    "value": "ecss_aup_device_adapter"
                }
            },
            "deviceAlias": [{											- содержит описание параметров, ip-адрес и mac-адрес устройства
                "deviceUuid": "0a24bfd8-c655-4a98-9ad1-b735bad3cf45",
                "insertedAt": "2022-08-26 07:05:35",
                "ip": "192.168.116.167",
                "mac": "80:5e:c0:43:89:13",
                "updatedAt": "2022-08-26 07:05:35",
                "uuid": "a9b1d408-d285-4b25-99c1-753d7cabd1a4"
            }],
            "deviceTag": {},											- список тегов устройства
<------------------------------------- список файлов, запрошенных устройством ------------------------------------->
            "fileRequest": [{
                "deviceUuid": "0a24bfd8-c655-4a98-9ad1-b735bad3cf45",
                "fileName": "/805ec0438913.boot",
                "fileRequestTags": [],
                "fileType": "ignore",
                "insertedAt": "2022-08-26 07:05:35",
                "lastRequestDatetime": "2022-09-05 04:35:12Z",
                "productionMethod": "{\"response\":{\"payload\":null,\"status\":403}}",
                "registerDatetime": "2022-04-28 08:23:26Z",
                "requestInfo": "{\"method\":\"GET\",\"scheme\":[\"http\",\"tftp\"]}",
                "updatedAt": "2022-09-05 04:35:19",
                "uuid": "e20bb7c5-63d0-4dfd-a6f6-2903707d9d41"
            },
>------------------------------------- ... -------------------------------- --------------------------------------< 
{
                "deviceUuid": "0a24bfd8-c655-4a98-9ad1-b735bad3cf45",
                "fileName": "/firmware.rom",
                "fileRequestTags": [],
                "fileType": "firmware",
                "insertedAt": "2022-08-26 07:05:35",
                "lastRequestDatetime": "2022-08-26 07:03:51Z",
                "productionMethod": "{}",
                "registerDatetime": "2022-08-24 07:58:20Z",
                "requestInfo": "{\"method\":\"GET\",\"scheme\":[\"http\"]}",
                "updatedAt": "2022-08-26 07:05:35",
                "uuid": "76f157f9-cdee-445b-aa0f-8f45e3e6b454"
            }],
<------------------------------------- информация об устройстве -------------------------------------------------->
            "firmwareInfo": "53.84.14.7",									- текущая версия ПО устройства
            "insertedAt": "2022-08-26 07:05:35",
            "lastRequestDatetime": "2022-09-05 04:35:12Z",
            "model": "SIP-T19P_E2",											- модель, которую анонсировало устройство 
            "name": null,
            "provide": "U",													- метод обслуживания
            "registerDatetime": "2022-04-28 08:23:26Z",
            "type": "VOIP_PHONE",
            "updatedAt": "2022-09-05 04:35:19",
            "uuid": "0a24bfd8-c655-4a98-9ad1-b735bad3cf45",
            "vendor": "YealinkX",											- производитель, которого анонсирует устройство
            "virtual": false
        },
        "inject_payload": 1662352655267,
        "nodes_config": []
    }
}
PY
  • Конфигурация — совокупность параметров, характерных для конкретного устройства, определенная в формате файла или группы файлов.
  • Параметр конфигурации — представляет собой настройки, которые коррелируют с опциями на настраиваемом устройстве. Семантически параметры представлены в доменной нотации, логически сгруппированные по функциональному признаку.