Перейти к содержанию

Стандартная реализация TarantoolContainer

Стандартная реализация интерфейса TarantoolContainer

На странице приводится описание стандартной реализации интерфейса TarantoolContainer.

Диаграмма классов

GenericContainerSELF// some methodsTarantool3ContainerTarantool3Container(DockerImageName dockerImageName, String node)withMigrationsPath(Path): Tarantool3ContainerwithEtcdPrefix(String): Tarantool3Containerstop(): voidstopWithSafeMount(): voidmappedAddress(): InetSocketAddressinternalAddress(): InetSocketAddresswithEtcdAddresses(HttpHost[]): Tarantool3ContainerwithConfigPath(Path): Tarantool3Containernode(): Stringstart(): void«interface»TarantoolContainerSELFDEFAULT_TARANTOOL_PORT: intDEFAULT_DATA_DIR: Pathrestart(long, TimeUnit): voidwithMigrationsPath(Path): TarantoolContainer<SELF>internalAddress(): InetSocketAddressstopWithSafeMount(): voidwithConfigPath(Path): TarantoolContainer<SELF>mappedAddress(): InetSocketAddressnode(): String
GenericContainerSELF// some methodsTarantool3ContainerTarantool3Container(DockerImageName dockerImageName, String node)withMigrationsPath(Path): Tarantool3ContainerwithEtcdPrefix(String): Tarantool3Containerstop(): voidstopWithSafeMount(): voidmappedAddress(): InetSocketAddressinternalAddress(): InetSocketAddresswithEtcdAddresses(HttpHost[]): Tarantool3ContainerwithConfigPath(Path): Tarantool3Containernode(): Stringstart(): void«interface»TarantoolContainerSELFDEFAULT_TARANTOOL_PORT: intDEFAULT_DATA_DIR: Pathrestart(long, TimeUnit): voidwithMigrationsPath(Path): TarantoolContainer<SELF>internalAddress(): InetSocketAddressstopWithSafeMount(): voidwithConfigPath(Path): TarantoolContainer<SELF>mappedAddress(): InetSocketAddressnode(): String

Класс Tarantool3Container позволяет создать объект контейнера Tarantool 3.x, удовлетворяющий контракту TarantoolContainer.

Описание реализации

Расположение монтируемых директорий и файлов

Реализация обеспечивает следующее поведение при конфигурировании контейнера:

Tarantool3Container::start()Экземплярсконфигурирован?данетreturnTarantool3Container.start()Создать временнуюмонтируемую директориюна хостеmountDirectoryСмонитровать директорииmountDirectoryна хосте и/dataв контейнереПуть к файлу конфигурациисуществует и это регулярныйфайл?данетСмонитровать путь к файлуконфигурациpathToConfigFileк файлу/data/configFileNameв контейнереОповестить клиента черезLOGGER::info(...), что файлконфигурации скопирован суказаниемinputиtargetфайловОповестить клиента черезLOGGER::warn(...),что файл конфигурациине задан, null, илине существуетдаПуть к директорииc миграциями -регулярный файл?Оповестить клиентачерезLOGGER::warn(...),что передан путь крегулярному файлудаПуть к директории с миграциями null?нетОповестить клиентачерезLOGGER::warn(...),что путь к директориис миграциями несуществует или nullСмонтировать директориюк миграциямmigrationsDirк директории/data/migrationsDirNameв контейнереОповестить клиента черезLOGGER::info(...), чтодиректория с миграциямископирована с указаниемinputиtargetдиректорийПереданы ли адреса к etcd?данетИспользовать конфигурациюизetcd. Задать адреса ипрефиксы через переменныеTT_CONFIG_ETCD_ENDPOINTS,TT_CONFIG_ETCD_PREFIXИспользовать конфигурацию,заданную в конфигурационномфайле. Задать путь к файлуконфигурации через переменнуюTT_CONFIGreturnTarantool3Container::start()
Tarantool3Container::start()Экземплярсконфигурирован?данетreturnTarantool3Container.start()Создать временнуюмонтируемую директориюна хостеmountDirectoryСмонитровать директорииmountDirectoryна хосте и/dataв контейнереПуть к файлу конфигурациисуществует и это регулярныйфайл?данетСмонитровать путь к файлуконфигурациpathToConfigFileк файлу/data/configFileNameв контейнереОповестить клиента черезLOGGER::info(...), что файлконфигурации скопирован суказаниемinputиtargetфайловОповестить клиента черезLOGGER::warn(...),что файл конфигурациине задан, null, илине существуетдаПуть к директорииc миграциями -регулярный файл?Оповестить клиентачерезLOGGER::warn(...),что передан путь крегулярному файлудаПуть к директории с миграциями null?нетОповестить клиентачерезLOGGER::warn(...),что путь к директориис миграциями несуществует или nullСмонтировать директориюк миграциямmigrationsDirк директории/data/migrationsDirNameв контейнереОповестить клиента черезLOGGER::info(...), чтодиректория с миграциямископирована с указаниемinputиtargetдиректорийПереданы ли адреса к etcd?данетИспользовать конфигурациюизetcd. Задать адреса ипрефиксы через переменныеTT_CONFIG_ETCD_ENDPOINTS,TT_CONFIG_ETCD_PREFIXИспользовать конфигурацию,заданную в конфигурационномфайле. Задать путь к файлуконфигурации через переменнуюTT_CONFIGreturnTarantool3Container::start()

Обеспечение сохранения монтируемых данных

Согласно контракту TarantoolContainer при вызове метода TarantoolContainer::stopWithSafeMount() и последующего вызова TarantoolContainer::start() монтируемые данные должны сохраниться. Tarantool3Container реализует этот механизм следующим образом:

Контейнер закрыт черезTarantool3Container::stop()?данетВыбросить исключениеСконфигурировать контейнерОбозначить, что контейнер сконфигурированnoКонтейнер уже сконфигурирован?даreturnTarantool3Container::start()
Контейнер закрыт черезTarantool3Container::stop()?данетВыбросить исключениеСконфигурировать контейнерОбозначить, что контейнер сконфигурированnoКонтейнер уже сконфигурирован?даreturnTarantool3Container::start()

Остановить контейнернетКонтейнер закрыт через Tarantool3Container::stop()?даreturnTarantool3Container::stopWithSafeMount()
Остановить контейнернетКонтейнер закрыт через Tarantool3Container::stop()?даreturnTarantool3Container::stopWithSafeMount()

Удалить монтируемые директорииОстановить контейнерОбозначит, что контейнер остановленнетКонтейнер закрыт через Tarantool3Container::stop()?даreturnTarantool3Container::stop()
Удалить монтируемые директорииОстановить контейнерОбозначит, что контейнер остановленнетКонтейнер закрыт через Tarantool3Container::stop()?даreturnTarantool3Container::stop()

Удаление монтируемых директорий происходит только при вызове метода Tarantool3Container::stop(). Конфигурирование контейнера происходит один раз при первом вызове Tarantool3Container::start().

Привязка портов

На этапе конфигурирования контейнера привязка портов не производится. Привязка портов производится после запуска контейнера Tarantool3Container::start().