Concern
В ADCM реализовано уведомление пользователей в виде concern. Такие concern-уведомления возникают, например, в случае некорректной конфигурации, когда не заполнены поля обязательных параметров в конфигурациях сервисов, компонентов либо других объектов. Другим примером, при котором ADCM создаёт concern-уведомление, является ситуация, когда после изменения конфигурации объекта пользователь забывает применить её на хостах кластера и продолжает работу с устаревшей конфигурацией.
Причины возникновения concern, а также их типы и свойства подробно описаны ниже.
Типы concern
В ADCM есть три типа concern:
-
Flag
-
Lock
-
Issue
Concern всех типов отображаются в UI.
Concern могут быть блокирующими либо неблокирующими. Если concern является блокирующим, то для связанного с ней объекта ADCM недоступны какие-либо action и обновления. В UI блокирующие concern обозначаются красным цветом, а неблокирующие — жёлтым.

Рассмотрим каждый из типов отдельно.
Flag
ВАЖНО
Concern типа flag доступны только в том случае, если это поддерживается использующимся продуктом.
|
Flag (флаг) — это неблокирующий concern, который указывает на некоторое событие.
Флаги подразделяются на два типа:
-
встроенные (embedded);
-
кастомные (custom).
Кастомные флаги создаются с помощью плагина Ansible adcm_change_flag
. Встроенные флаги создаются каждый раз, когда наступают соответствующие события.
Одим из событий, которое может привести к появлению флага, является устаревание конфигурации на хостах после изменения параметров объекта в ADCM без последующего применения. Чтобы устранить concern, необходимо применить изменения на хостах кластера, выполнив соответствующие действия (actions).
Причина (cause) concern типа flag отображается в UI. В случае рассмотренного выше события сообщение имеет вид <Object> has a flag: outdated configuration.
Цель возникновения concern типа flag для рассмотренного выше события — исключить взаимодействие с объектами, конфигурация которых устарела на хостах, а также обеспечить возможность гибкой настройки порядка выполнения action для взаимосвязанных сервисов. Например, изменение конфигурации уже установленного сервиса может потребовать его перезапуска. В этом случае ADCM создаёт concern типа flag, который напоминает пользователю о необходимости выполнения перезапуска.
Lock
Lock — это блокирующий concern, который возникает каждый раз при запуске action на объекте. При этом элементы UI и API, связанные с объектом, становятся недоступны.
Причина concern типа lock отображается в UI в виде сообщения Object was locked by running job <job>.
Цель возникновения concern типа lock — предотвратить одновременный запуск нескольких action пользователем.
Issue
Issue — это блокирующий concern, который может быть вызван несколькими причинами:
-
У объекта есть незаполненные либо невалидные поля в его конфигурации. Эта причина отображается в UI в виде сообщения <Concern owner> has an issue with its config.
-
Объект содержит сервис с обязательным импортом. Эта причина отображается в UI в виде сообщения <Concern owner> has an issue with required import.
-
Для работы кластера требуется установить обязательный сервис. Эта причина отображается в UI в виде сообщения <Concern owner> has an issue with required service.
-
Объект содержит сервис, для работы которого требуется установить другой сервис. Эта причина отображается в UI в виде сообщения <Concern owner> has an issue with requirement. Need to be installed: <target service>.
-
В объекте не настроен маппинг между хостами и компонентами. Эта причина отображается в UI в виде сообщения <Concern owner> has an issue with host-component mapping.
Цель возникновения concern типа issue — предотвратить некорректное взаимодействие и работу объектов.
Источники concern
У concern существует источник (owner). Источник concern типа flag и issue — это объект ADCM, на который воздействует этот concern.
В UI источник concern демонстрируется во всплывающем окне с сообщением о причине рядом со значком concern.

У concern типа lock источником является соответствующая задача (job).
Приоритизация и наследование concern
Если у объекта ADCM есть несколько concern, один из которых — блокирующий, то блокирующий concern обладает более высоким приоритетом. Значок concern всегда окрашивается в цвет более приоритетного concern.
Также concern могут наследоваться объектами от других объектов. Например, если concern есть у хостпровайдера, то он может быть унаследован хостом, созданным с помощью этого хостпровайдера.
Между родительским и дочерним объектами concern наследуются в обе стороны. Объекты находятся в родительско-дочерних отношениях, если между ними существует явная иерархическая связь. Если concern есть у сервиса, то он наследуется как кластером, содержащим этот сервис, так и компонентом, который содержится в этом сервисе. Concern сервиса не наследуется хостами, если компоненты сервиса не добавлены на хост. При этом, если concern есть у кластера, содержащего хост без компонентов, то этот concern кластера не будет унаследован хостом, пока на этом хосте не появится хотя бы один компонент. Аналогично, в случае появления concern на хосте без компонентов он не будет передаваться кластеру, содержащему этот хост.
Concern типа flag у сервиса не распространяется на другие сервисы в кластере. Concern типа lock и issue распространяются от хоста на компоненты, которые находятся на хосте, даже если источником concern является другой родительский объект: кластер, сервис, компонент или хостпровайдер.
Если удалить объект-источник concern, то будут удалены и concern всех связанных с ним объектов (как родительских, так и дочерних). Например, если удалить из кластера сервисы, которые содержат concern, то у кластера эти concern тоже исчезнут. При этом concern, источником которых является сам кластер, не исчезнут.
Возможность запуска действий в неблокирующем режиме
Начиная с версии ADCM 2.5.0 доступен запуск действий для всех объектов ADCM без блокировки самих объектов. Это значит, что в результате запуска действия могут быть созданы неблокирующие concern, которые не препятствует параллельному запуску других действий для данного объекта, его родительских или дочерних элементов.
Запуск действия в неблокирующем режиме на примере действия Install statuschecker:
-
На вкладке Hosts в таблице найдите хост и нажмите на иконку
.
-
Из выпадающего списка выберите Install statuschecker.
-
В открывшемся диалоговом окне переведите переключатель Raise non-blocking concern в активное состояние.
Запуск действия в неблокирующем режиме -
Ознакомьтесь с текстом предупреждения и нажмите Next.
-
Установите флажок Verbose, чтобы просмотреть дополнительную информацию о выполнении действия на странице Jobs, и нажмите Run.
В результате успешного запуска действия будет создан неблокирующий concern типа flag. В столбце Concerns отобразится иконка
. При наведении курсора на иконку появляется всплывающее окно с описанием ошибки, которое имеет вид
<Object> has a flag: running job <job>
, где<Object>
— наименование объекта,<job>
— название действия.Страница Hosts при запуске действия в неблокирующем режиме