Преднастроенные сущности (fixtures)

Путь расположения

Путь в сборочном каталоге Описание

/era_dc/priv/_master/*.json

Сущности для мастер-домена

/era_dc/priv/<solution>/*.json

Сущности по типу домена

/era_dc/priv/_worker/*.json

Общие сущности для любого рабочего домена

Обзор

Определяют конкретные сущности и их параметры для автоматического создания в соответствующем домене (только сущности, управляемые доменным центром – роли mdc).

Применяются к домену в момент его создания и возможно в момент перезагрузки домена ролью mdc. Загрузка fixture происходит на мастер сайте.

Применение происходит в первую очередь: сначала в домене создаются общие сущности, но затем применяются файлы фикстур конкретного солюшена, и при определенных настройках могут перезаписать. При этом к мастер-домену, применяются только фикстуры мастер-домена (солюшен мастер-домена также может быть задан, но это лишено смысла). Любой другой домен применяет общие фикстуры рабочего домена и фикстуры своего солюшена.

Каждый файл может содержать множество объектов подлежащих созданию. Каждый каталог может содержать произвольное множество файлов-фикстур, применяемых в порядке лексикографической сортировки имен файлов. Если не удалось загрузить fixture, то пишется строчка в логе с указанием информации об ошибке, все остальные файлы в каталоге пропускаются.

Формат:
{
  "objects": [
    {
      "crud": str,
      "applycondition": "always" | "notexist",
      "data": object
    },
    ...
  ]
}
  • "crud" – тип создаваемого объекта в формате известном роли mdc (domain, user, featurecode, sipuser, vectorrule, addressbook, …​).

  • "applycondition" – условия создания сущностей при загрузке домена:

    • "always" – пересоздавать объект при каждой загрузке домена;

    • "notexist" – создавать объект только при условии, что он не существует в домене.

  • "data" – создаваемый объект (поля и значения)

Пример

Создает пользователя, если он отсутствует, с конкретными идентификационными данными, ролью. Не модифицирует пользователя, если его изменили вручную, но пересоздает его, если он будет удален.

Пример:
{
  "objects": [
    {
      "crud": "user",
      "applycondition": "notexists",
      "data":
        {
          "id": "8de96fb8-afc2-67e1-057a-60115bc80006",
          "name": "sample_user",
		  "pwd": "user123",
		  "login": "sample_user"
          "opts": {"roles": ["sample"]}
        }
    }
  ]
}