Concern

В ADCM реализовано уведомление пользователей в виде concern. Такие concern-уведомления возникают, например, в случае некорректной конфигурации, когда не заполнены поля обязательных параметров в конфигурациях сервисов, компонентов либо других объектов. Другим примером, при котором ADCM создаёт concern-уведомление, является ситуация, когда после изменения конфигурации объекта пользователь забывает применить её на хостах кластера и продолжает работу с устаревшей конфигурацией.

Причины возникновения concern, а также их типы и свойства подробно описаны ниже.

Типы concern

В ADCM есть три типа concern:

  • Flag

  • Lock

  • Issue

Concern всех типов отображаются в UI.

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

Блокирующие и неблокирующие concern в интерфейсе ADCM
Блокирующие и неблокирующие concern в интерфейсе ADCM

Рассмотрим каждый из типов отдельно.

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 (кластер ADS-prod) в интерфейсе ADCM
Источник concern (кластер ADS-prod) в интерфейсе ADCM

У 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:

  1. На вкладке Hosts в таблице найдите хост и нажмите на иконку actions default dark actions default light.

  2. Из выпадающего списка выберите Install statuschecker.

  3. В открывшемся диалоговом окне переведите переключатель Raise non-blocking concern в активное состояние.

    Запуск действия в неблокирующем режиме
    Запуск действия в неблокирующем режиме
  4. Ознакомьтесь с текстом предупреждения и нажмите Next.

  5. Установите флажок Verbose, чтобы просмотреть дополнительную информацию о выполнении действия на странице Jobs, и нажмите Run.

    В результате успешного запуска действия будет создан неблокирующий concern типа flag. В столбце Concerns отобразится иконка concern yellow dark concern yellow light. При наведении курсора на иконку появляется всплывающее окно с описанием ошибки, которое имеет вид <Object> has a flag: running job <job>, где <Object> — наименование объекта, <job> — название действия.

    Страница Hosts при запуске действия в неблокирующем режиме
    Страница Hosts при запуске действия в неблокирующем режиме
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней