Валидация#

Пререквизиты#

  • модули приложения развернуты;

  • граф репликации создан;

  • пользователь авторизовался под ролью APPADMIN, INSPECTOR или APPDUTY.

Процесс#

Валидация конфигурации#

  1. UI консоль вызывает метод /config/{configId}/state:

    • если в качестве параметров заданы источник или приемник, проверяет, корректно ли будет создать из этой конфигурации и переданных соединений модуль;

    • если источник и приемник не заданы, проверяет только синтаксическую корректность JSON-данных.

  2. Возвращается JSON-ответ: "status":"VALID","error_list":[] с кодом ответа HTTP/200, если в процессе валидации не произошло технических ошибок.

    Это означает, что информации в объекте connection (соединение) достаточно для установления соединения с БД или Очередью, и для всех значений, которые модуль будет получать или генерировать, в целевой базе есть соответствующие схемы, таблицы, поля.

Альтернативный сценарий#

Если конфигурация некорректна, возвращается JSON-ответ: "status":"INVALID","error_list":[...]. Каждый элемент error_list содержит поле path, указывающее, где ошибка: в Source или в Target, и поле description с описанием ошибки. Пример ответа:

    {
    "status": "INVALID",
    "error_list": [
    {
      "path": "TARGET/{имя_схемы}",
      "code": "311",
      "description": "Схема {имя_схемы} не найдена в БД c connectionId = {id_соединения}"
    }
    ]
    }

Валидация соединения#

  1. UI консоль вызывает метод /connection/{connectionId}/state и подключается к хранилищу, описанному в соединении.

  2. Возвращается ответ: код 200, если попытка соединения с БД или Очередью успешна.

Альтернативный сценарий#

Если соединение не установлено, возвращается JSON-ответ: "status":"INVALID","error_list":[...]. Каждый элемент error_list содержит поле path, указывающее, где ошибка: в Source, Target или Queue, и поле description с описанием ошибки.

Валидация модуля#

Валидация модуля включает проверку его соединений (левое и правое) и конфигурации, которую модуль содержит. Так модуль применения содержит конфигурацию для приемника, поэтому при валидации модуля применения конфигурация для источника проверяться не будет.

  1. UI консоль вызывает метод /module/{moduleId}/state.

  2. Возвращается результат полной валидации модуля.

    Это означает, что:

    • соединения Source или Target доступны;

    • соединение Queue доступно;

    • схемы, таблицы и поля в конфигурации модуля содержатся в метаданных БД соединения этого модуля;

    • в приемнике есть все таблицы и поля, в которые модуль должен записывать данные.

Альтернативный сценарий#

Если модуль не валиден, возвращается JSON-ответ: "status":"INVALID","error_list":[...]. Каждый элемент error_list содержит поле path, указывающее, где ошибка: в Source или в Target, и поле description с описанием ошибки.