Управление сервисом Address Book

Просмотр запущенных контейнеров:

docker ps

Остановка сервиса Address Book без очистки docker container и docker network:

./ecss-address-book.sh stop

Остановка сервиса Address Book с очисткой docker container и docker network:

./ecss-address-book.sh down

Запуск сервиса Address Book:

./ecss-address-book.sh up

Перезагрузка сервиса Address Book:

./ecss-address-book.sh restart

Настройка сервиса Address Book

Миграция данных из LDAP

Данный раздел необязателен, если необходима лишь работа с персональными адресными книгами или планируется импортировать адресную книгу CSV-формата.

Подключитесь к docker-контейнеру сервиса Address Book:

docker exec -it address-book-stable_server_1 bash

Далее подключитесь к Erlang node по имени:

./ecss_address_book remote --name ecss_address_book

Выполните команду для запуска миграции LDAP:

EcssAddressBookCore.Actions.LdapImport.import()

Для базовой проверки полноты миграции можно обратиться напрямую к БД с запросом количества контактов:

EcssAddressBookDb.Actions.Contacts.count(%{})
{:ok, 1557}

Число после :ok должно совпадать с количеством контактов LDAP.

Для выхода из iex нажмите Ctrl+C дважды.

Миграция данных из CSV

Данный раздел необязателен, если необходима лишь работа с контактами из LDAP.
Чтобы извлечь контакты из БД SSW, необходимо подключится к ней, выбрать БД ecss_address_book и выполнить следующий запрос:
use ecss_address_book;


SELECT
    'external_id', 
    'full_name',
    'first_name',
    'middle_name',
    'last_name',
    'org',
    'title',
    'description',
    'avatar_path',
    'source',
    'emails',
    'phone_numbers',
    'phone_description',
    'phone_types'
UNION ALL
SELECT
    contact.uuid, 
    contact.contact_name,
    contact.first_name,
    contact.middle_name,
    contact.last_name,
    contact.company,
    contact.position,
    contact.description,
    contact.photo,
    source.domain,
    IFNULL((SELECT GROUP_CONCAT(DISTINCT email.email ORDER BY email.email SEPARATOR ',') FROM email WHERE email.contact_id = contact.id), ''),
    IFNULL((SELECT GROUP_CONCAT(DISTINCT phone.digits ORDER BY phone.digits SEPARATOR ',') FROM phone WHERE phone.contact_id = contact.id), ''),
    IFNULL((SELECT GROUP_CONCAT(DISTINCT phone.description ORDER BY phone.description SEPARATOR ',') FROM phone WHERE phone.contact_id = contact.id), ''),
    IFNULL((SELECT GROUP_CONCAT(DISTINCT label.name ORDER BY label.name SEPARATOR ',') FROM label INNER JOIN phone ON label.id = phone.label_id WHERE phone.contact_id = contact.id), '')
INTO OUTFILE '/var/lib/mysql-files/your_file.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM contact
LEFT JOIN source ON source.id = contact.source_id
GROUP BY contact.id;

sНазвание CSV файла не должно содержать кириллические символы и точки. Также файл должен иметь расширение .csv.

Чтобы сервис мог увидеть данный файл, необходимо поместить его по следующему пути:

/var/lib/docker/volumes/address-book-stable_csv_data_volume/_data/

Имя файла влияет на источник контакта. Например, для файла с именем valid_format.csv, источник (source) будет указан как csv.valid_format. В имени файла допускаются только латинские буквы и цифры, все остальные символы заменяются на нижнее подчеркивание.

Подключитесь к docker-контейнеру сервиса Address Book:

docker exec -it address-book-stable-server-1 bash

Далее подключитесь к Erlang node по имени:

./ecss_address_book remote --name ecss_address_book

Выполните команду для запуска миграции LDAP:

EcssAddressBookCore.Actions.CsvImport.import("/home/csv_data/your_file.csv")

Для базовой проверки полноты миграции можно обратиться напрямую к БД с запросом количества контактов:

EcssAddressBookDb.Actions.Contacts.count(%{})
{:ok, 1337}

Число после :ok должно совпадать с количеством контактов CSV.

Для выхода из iex нажмите Ctrl+C дважды.


  • Нет меток