Миграция создаёт в AuP 2.10 устройства и аккаунты, присутствующие в AuP 1.4, пересоздает все связки и пишет дополнительную информацию (additional_info).
Далее вся информация сортируется по additional_info и группируется в несколько цепочек внутри одного потока.
Каждый пайплайн содержит комплексные узлы BLF и SIP, а также два дополнительных узла с общими и специфическими параметрами.
|
Логика работы интеграции:
Поток формируется с использованием простой эвристики, может быть от одной до трёх:
Все цепочки содержат четыре узла конфигуратора [BLF complex node], [SIP complex node], [Common] и [SIP static params]:
На рисунке ниже показан вариант, где первая цепочка включает в себя большинство из известных устройств, которые также имеют второстепенные общие Common параметры.
Вторая цепочка содержит только базовые параметры, достаточные для настройки SIP complex node, но второстепенные общие Common параметры или отсутствуют, или присутствуют у менее чем трети доступных устройств, а потому проигнорированы.
Третья цепочка имеет деактивированный узел Common, не содержащий параметров. При этом узел выбора устройств содержит идентификаторы всех устройств, которые имели уникальные свойства и не были включены ни в первую, ни во вторую цепочку.

Заходим внутрь контейнера:
docker exec -it autoprovision-stable-core-1 bash |
Запускаем оболочку Elixir:
./ecss_aup_core remote |
Рекомендуется запускать миграцию данных в синхронном режиме, для отслеживания прогресса и возникающих проблем. Однако, при таком запуске консоль будет заблокирована до окончания выполнения и ее придется держать открытой. Асинхронный же запрос создаст фоновую задачу.
Команда для синхронного запуска (следует указать актуальный хост размещения ecss-autoprovision 1.4, порт, актуальные учётные данные и размер request_chunk_size (количество объектов обрабатываемых за раз, по умолчанию = 4)):
data = %CoR.Data{
assigns: %{
data: %{
payload: %{
host: "http://10.24.0.101:1350/",
login: "root",
password: "ecss-autoprovision",
default_ttl: 480_000,
request_chunk_size: 4,
chunk_size: 20
}
},
},
private: %{}
}
EcssAupCore.CoR.AupLegacy.Action.Migrate.call(data, []) |
Команда для асинхронного запуска:
payload = %{
host: "http://10.24.0.101:1350/",
login: "root",
password: "ecss-autoprovision",
default_ttl: 480_000,
request_chunk_size: 4,
chunk_size: 20
}
EcssAupCore.Subscriber.request("/ecss_aup_core/request/aup_legacy/migrate", %{payload: payload}, ttl: 180_000_000) |
Ожидаем завершения миграции.
Проверить количество устройств можно командой:
import Ecto.Query EcssAupDb.Models.Device |> Ecto.Query.select([a], count(a.uuid)) |> EcssAupDb.Repo.one() |