Управление настройками через GraphQL API¶
Этот раздел посвящен различным запросам, позволяющим просматривать и изменять настройки TDG.
Все запросы на просмотр и изменение настроек TDG передаются по протоколу HTTP в формате GraphQL. При этом они должны иметь соответствующий заголовок для авторизации.
Note
Для выполнения GraphQL-запросов можно использовать встроенный веб-клиент GraphiQL (на вкладке Graphql веб-интерфейса) или любой сторонний GraphQL-клиент, либо иное средство для отправки HTTP-запросов. При этом специализированные GraphQL-клиенты, в отличие от средств отправки HTTP-запросов, могут использовать функции автодополнения и проверки синтаксиса запросов, а также автоматического формирования документации на GraphQL API. Данные стандартные возможности GraphQL позволяют определять состав функций API, а также состав аргументов функций, типы исходных данных и возвращаемых результатов.
GraphQL-запросы от клиентов (за исключением встроенного веб клиента GraphiQL) необходимо направлять на соответствующие адреса (endpoints):
/graphql
(без указания схемы или с указанием в заголовке схемыdefault
) – используется для запросов к пользовательским данным, хранящимся в TDG. Подробнее смотрите Раздел про GraphQL-запросы к данным./graphql
(с указанием в заголовке схемыadmin
) – используется для основных настроек TDG./admin/api
– используется для изменения топологии кластера и других настроек Tarantool Cartridge.
Данные по аргументам вызова функций и возвращаемым результатам не приводятся, исходя из того, что GraphQL обладает встроенными механизмами обмена этой информацией с клиентским программным обеспечением, выполняющим запросы. Описания параметров и аргументов приведены в исключительном порядке для отдельных случаев, требующих пояснения.
Основные настройки TDG¶
Для выполнения запроса направьте его по протоколу HTTP на HTTP-порт экземпляра кластера с ролью connector
с указанием адреса ресурса (endpoint) /graphql
и
заголовком admin
, а также данными авторизации.
Пример выполнения запроса при помощи утилиты curl
:
curl --request POST \
--url http://172.19.0.2:8080/graphql \
--header 'Authorization: Bearer 2fc136cf-8cae-4655-a431-7c318967263d' \
--header 'schema: admin' \
--data '{"query":"query{ user{ list{ username } } } "}'
Далее приведены все типы запросов на чтение или изменение основных настроек TDG. Для некоторых запросов дополнительно указаны возвращаемые значения и пояснения к ним.
Запросы на получение информации по текущим настройкам и состоянию (query)¶
Пример запроса на получение названия роли по ее id
(access_role.get):
query {
access_role {
get(id: 1) {
name
}
}
}
- query.jobs¶
Чтение ремонтной очереди неудавшихся отложенных работ (попытка выполнения которых закончилась неудачно, вкладка Failed jobs):
get_list
– возвращает список объектов ремонтной очереди отложенных работ.
- query.repair_list¶
Возвращает список объектов, находящихся в ремонтной очереди (вкладка Repair).
- query.tasks¶
Чтение списка задач:
get_list
– возвращает список задач и результатов их исполнения.
- query.password_generator¶
Генерация и проверка валидности паролей, чтение настроек требований к сложности паролей:
generate
– возвращает сгенерированный пароль.validate
– выполняет проверку переданного пароля на соответствие имеющимся требованиям к сложности пароля.config
– возвращает текущие настройки требований к сложности пароля.
- query.output_processor¶
Чтение данных ремонтной очереди объектов на отправку (вкладка Output Processor):
get_list
– возвращает список объектов в ремонтной очереди на отправку (объекты, отправка которых не удалась).
- query.access_role¶
Чтение настроек ролевой модели:
actions_list
– возвращает список всех возможных действий, доступ к которым настраивается при помощи ролевой модели.get_access_role_actions
– возвращает список действий, доступных для роли по ееid
.list
– возвращает список ролей.get
– возвращает данные о роли по ееid
.
- query.cartridge¶
Чтение данных из конфигурации:
test_soap_data
– возвращает текст подсказки по умолчанию на вкладке Test веб-интерфейса.self
– отображает информацию о текущем сервере (экземпляре TDG).
- query.data_access_action¶
Чтение информации о шаблонах доступа к действиям над данными:
list
– возвращает список настроенных шаблонов доступа.get
– возвращает информацию о шаблоне по егоid
.
- query.user¶
Чтение информации о пользователях и настройке доступа анонимных пользователей:
is_anonymous_allowed
– возвращает статус настройки, разрешающей доступ без авторизации.self
– возвращает информацию о текущем пользователе.list
– возвращает список пользователей.
- query.notifier_get_users¶
Возвращает список подписчиков (вкладка Subscribers).
- query.audit_log¶
Чтение данных о журнале событий безопасности:
get
– возвращает журнал событий безопасности (аудит лог).enabled
– возвращает статус настройки, отвечающей за включение и отключение ведения журнала аудита.
- query.maintenance¶
Чтение служебной информации:
clock_delta
– данные по рассинхронизации времени на внутренних (системных) часах экземпляров. Может возвращать следующие значения:value
– возвращает максимальное текущее значение отклонения часов между экземплярами кластера.is_threshold_exceeded
– отвечает на вопрос, превышено ли предельное значение отклонения часов среди экземпляров кластера.
get_aggregates
– возвращает список агрегатов модели данных.current_tdg_version
– проверяет версию TDG при применении конфигурации (только в схемеadmin
).unlinked_space_list
– возвращает список агрегатов, которые были удалены из модели, но при этом в хранилище остались их сохраненные данные.
- query.token¶
Чтение информации о токенах приложений:
list
– выводит список всех токенов приложений.get
– выводит информацию о токене по его имени. В запрос передается единственный аргументname
– имя токена.
- query.get_mail_server¶
Возвращает настройки почтового сервера для отправки оповещений.
- query.config¶
Чтение настроек кластера:
vshard-timeout
– возвращает таймаут выполнения удаленного вызова для операции модуля Tarantoolvshard
.force_yield_limits
– возвращает количество чтений записей спейса, после которых происходит принудительная передача управления (yield) для обеспечения кооперативной многозадачности.hard_limits
– возвращает текущие настройки ограничений при выполнении GraphQL-запросов. Может возвращать следующие значения:scanned
– ограничение числа записей в спейсах, которые могут быть прочитаны для выполнения запроса.returned
– ограничение числа записей, которые могут быть возвращены в ответе на запрос.
graphql_query_cache_size
– возвращает ограничение количества кэшируемых уникальных GraphQL-запросов. Кэшируется только текст запроса, но не переменные.locked_sections_list
– Список закрепленных секций. Если в список закрепленных секций добавить любую секцию, например, секциюmetrics
, а потом загрузить новый файл конфигурации, в котором секцииmetrics
не будет, то эта секция не удалится – вместо нее будет использована последняя загруженная версия секцииmetrics
. Прописать закрепленные секции в файле конфигурации явным образом нельзя.
- query.account_provider¶
Управление доступом:
ldap
– возвращает конфигурацию LDAP.
- query.checks¶
Валидация различных настроек:
cron_syntax
– проверяет корректность синтаксиса заданного cron-выражения.storage_dir_writable
– проверяет возможность записи в заданную директорию.
- query.data_type¶
Доступ к текущей модели данных:
model
– возвращает текущую модель данных.expiration
– возвращает настройки устаревания данных.versioning
– возвращает параметры версионирования модели данных.
- query.logs¶
Доступ к общему журналу событий:
get
– возвращает записи общего журнала событий (логи).config
– возвращает конфигурацию журнала событий.
- query.metrics¶
Доступа к метрикам:
config
– возвращает настройки метрик.
- query.migration¶
Управление миграцией данных:
stats
– возвращает ход выполнения миграции данных.
- query.settings¶
Настройки учетной записи:
get
– возвращает настройки учетной записи.
Запросы на внесение изменений в настройки (mutation)¶
Пример запроса на изменение настроек требований к сложности паролей пользователей (password_generator.config):
mutation {
password_generator {
config(lower: true, digits: true, symbols: false, min_length: 6)
}
}
- mutation.jobs¶
Работа с ремонтной очередью неудавшихся отложенных работ (попытка выполнения которых закончилась неудачно, вкладка Failed jobs):
delete_all_jobs
– удалить все отложенные работы из ремонтной очереди отложенных работ.try_again_all
– выполнить повторную попытку обработки всех отложенных работ из ремонтной очереди отложенных работ.try_again
– выполнить повторную попытку обработки неудавшейся отложенной работы по ееid
.delete_job
– удалить неудавшуюся отложенную работу по ееid
.
- mutation.token¶
Работа с токенами приложений:
remove
– удалить токен приложения по его имени. В запрос передается единственный аргументname
– имя токена.import
– импортировать токен приложения. Возможные аргументы:state_reason
(опционально) – пояснение к присвоению текущего статуса.expires_in
– ограничение времени действия токена в секундах. Значение0
означает неограниченный срок действия.uid
– внутреннийID
токена.role
– имя роли из ролевой модели доступа.state
– статус (active
/blocked
).created_at
– дата и время создания в формате Unix time.name
– имя токена.last_login
(опционально) – дата и время последнего входа в формате Unix time.unblocked_at
(опционально) – дата и время последней разблокировки в формате Unix time.
add
– добавить новый токен приложения. Возможные аргументы:expires_in
– ограничение времени действия токена в секундах. Значение0
означает неограниченный срок действия.name
– имя токена.role
– имя роли из ролевой модели доступа.
update
– отредактировать данные токена приложения (срок действия или роль). Возможные аргументы:expires_in
– ограничение времени действия токена в секундах. Значение0
означает неограниченный срок действия.name
– имя токена.role
– имя роли из ролевой модели доступа.
set_state
– изменить статус токена приложения (заблокировать или разблокировать). Возможные аргументы:state
– статус (active
/blocked
/new
).reason
(опционально) – пояснение к присвоению нового статуса.name
– имя токена.
- mutation.notifier_upsert_user¶
Добавление нового или редактирование существующего адреса для оповещения (вкладка Subscribers). Возможные аргументы:
name
– имя контакта для оповещения.addr
– адрес электронной почты.id
– внутренний идентификатор (строка).
- mutation.clear_repair_queue¶
Очистить ремонтную очередь (вкладка Repair).
- mutation.password_generator¶
Изменение настроек требований к сложности паролей пользователей.
- mutation.output_processor¶
Работа с ремонтной очередью на отправку (вкладка Output processor):
clear_list
– удалить все объекты на отправку из ремонтной очереди.try_again_all
– выполнить повторную попытку обработки всех объектов на отправку из ремонтной очереди.try_again
– выполнить повторную попытку обработки объекта на отправку из ремонтной очереди по егоid
.delete_from_list
– удалить объект на отправку из ремонтной очереди по егоid
.
- mutation.access_role¶
Управление настройками ролевой модели:
delete
– удаление роли пользователя по ееid
.create
– создание новой роли пользователя. Возможные аргументы:name
– имя новой роли.description
(опционально) – описание новой роли.
update
– изменение имени или описания роли пользователя.update_access_role_actions
– изменение прав доступа для роли. Возможные аргументы:id
– идентификатор роли.actions
– список изменяемых прав:id
– идентификатор права.allowed
– данные о наличии права для роли (Boolean).
- mutation.set_mail_server¶
Изменение настроек почтового сервера для отправки оповещений (см. Подробнее про модуль SMTP). Возможные аргументы:
username
– имя учетной записи, с которой будет проводиться рассылка.password
– пароль от учетной записи.url
– адрес почтового сервера.from
– адрес, указываемый в поле отправителя сообщения.skip_verify_host
– при установкеtrue
позволяет пропускать проверку валидности сертификата хоста.timeout
– таймаут отправки.
- mutation.cartridge¶
Изменение конфигурации:
load_config_example
– загружает тестовый пример конфигурации вместо имеющейся конфигурации.
- mutation.data_access_action¶
Внесение изменений в шаблоны доступа к действиям над данным:
delete
– удалить шаблон.create
– добавить новый шаблон.update
– отредактировать существующий шаблон.
- mutation.user¶
Управление пользователями:
import
– импорт пользователя.add
– добавление нового пользователя.remove
– удаление существующего пользователя по егоuid
.modify
– редактирование существующего пользователя по егоuid
.self_modify
– редактирование пароля или имени учетной записи для текущего пользователя (из-под которого выполняется GraphQL-запрос).set_state
– блокирование или разблокирование пользователя.reset_password
– сброс пароля пользователя по егоuid
.
- mutation.tasks¶
Управление задачами:
start
– запуск задачи по ееid
.stop
– остановка задачи по ееid
.forget
– удаляет один из результатов выполнения задачи по егоid
.
- mutation.maintenance¶
Служебные функции:
drop_unlinked_spaces
– удаление спейсов от агрегатов, которые были удалены из модели, но при этом в хранилище остались их сохраненные данные.truncate_unlinked_spaces
– удаление данных из спейсов агрегатов, которые были удалены из модели, но при этом в хранилище остались их сохраненные данные.
- mutation.audit_log¶
Ведение журнала событий безопасности (аудит лог):
enabled
– включение функции ведения журнала событий безопасности.clear
– очистка журнала событий безопасности.severity
– настройка уровня важности событий, которые будут записываться в журнал событий безопасности.
- mutation.notifier_delete_user¶
Удаляет запись из списка подписчиков (вкладка Subscribers) по ее
id
.
- mutation.repair_all¶
Выполняет повторную попытку обработки всех объектов из ремонтной очереди (вкладка Repair).
- mutation.repair¶
Выполняет повторную попытку обработки объекта из ремонтной очереди (вкладка Repair) по его
id
.
- mutation.delete_from_repair_queue¶
Выполняет удаление объекта из ремонтной очереди (вкладка Repair) по его
id
.
- mutation.config¶
Изменение настроек кластера:
vshard-timeout
– таймаут выполнения удаленного вызова для операции модуля Tarantoolvshard
.force_yield_limits
– количество чтений записей спейса, после которых происходит принудительная передача управления (yield) для обеспечения кооперативной многозадачности.hard_limits
– ограничения при выполнении GraphQL-запросов. Возможные аргументы:scanned
– ограничение числа записей в спейсах, которые могут быть прочитаны для выполнения запроса.returned
– ограничение числа записей, которые могут быть возвращены в ответе на запрос.
graphql_query_cache_size
– ограничение количества кэшируемых уникальных GraphQL-запросов.
- mutation.account_provider¶
Управление доступом:
ldap
– позволяет изменить конфигурацию LDAP.
- mutation.backup¶
Управление резервным копированием конфигураций:
config_apply
– применяет конфигурацию заданной версии.config_delete
– удаляет конфигурацию заданной версии.config_save_current
– создает резервную копию конфигурации с заданным комментарием.settings
– изменяет настройки резервного копирования конфигураций.
- mutation.connector¶
Управление коннекторами:
http_request
– отправляет заданный объект используя HTTP.soap_request
– отправляет заданный объект используя SOAP.
- mutation.data_type¶
Доступ к текущей модели данных:
model
– позволяет изменить текущую модель данных.expiration
– позволяет изменить настройки устаревания данных.versioning
– позволяет изменить версию модели данных.
- mutation.expiration_cleanup¶
Очистка (сброс) настроек устаревания данных по имени агрегата.
- mutation.logs¶
Управление общим журналом событий:
truncate
– очищает журнал событий.config
– позволяет изменить конфигурацию журнала событий.
- mutation.metrics¶
Управление метриками:
config
– позволяет изменить настройки метрик.
- mutation.migration¶
Управление миграцией данных:
apply
– позволяет поменять настройки миграции данных.dry_run
– запускает миграцию данных.
- mutation.settings¶
Управление настройками учетной записи:
put
– добавляет заданные настройки учетной записи.delete
– удаляет заданные настройки учетной записи.
Настройки Tarantool Cartridge¶
Для выполнения запроса, его необходимо направить по протоколу HTTP на HTTP порт
любого экземпляра кластера с указанием адреса ресурса (endpoint) /admin/api
,
а также данными авторизации.
Пример выполнения запроса при помощи утилиты curl
:
curl --request POST \
--url http://172.19.0.2:8080/admin/api \
--header 'Authorization: Bearer 2fc136cf-8cae-4655-a431-7c318967263d' \
--header 'content-type: application/json' \
--data '{"query":"query{\n cluster{\n known_roles{\n name\n dependencies\n }\n }\n}"}'
Далее приведены все типы запросов на чтение или изменение основных настроек Tarantool Cartridge. Для некоторых запросов дополнительно указаны возвращаемые значения и пояснения к ним.
Запросы на получение информации по текущим настройкам и состоянию кластера (query)¶
Пример запроса на получение информации о пользователе по его имени (cluster.users):
query {
cluster {
users { username }
}
}
- query.cluster¶
Управление кластером:
self
– позволяет получить информацию о текущем сервере (который выполняет запрос).failover
– возвращает текущий статус включения функции failover.failover_params
– возвращает текущие настройки функции failover. Может возвращать следующие значения:tarantool_params
– параметры подключения:uri
– адрес подключения.password
– пароль для подключения.
mode
– режим работы (disabled, eventual или stateful).state_provider
– тип внешнего хранилища для режима работы stateful.
vshard_bucker_count
– возвращает число виртуальных бакетов в кластереissues
– возвращает список проблем (issues), зарегистрированных в кластере.auth_param
– возвращает параметры авторизации. Эти параметры относятся к авторизации в Tarantool Cartridge, а не в TDG:enabled
– включена ли функция авторизации.username
– имя текущего пользователя.cookie_max_age
– максимальное время жизни пользовательской cookie (в секундах).cookie_renew_age
– если передаваемая пользовательская cookie старше, чем указано в данном параметре, то ее необходимо обновить.implements_add_user
– в кластере реализована функция добавления пользователей.implements_remove_user
– в кластере реализована функция удаления пользователей.implements_edit_user
– в кластере реализована функция редактирования пользователей.implements_list_user
– в кластере реализована функция вывода списка пользователей.implements_get_user
– в кластере реализована функция вывода информации о конкретном пользователе.implements_check_password
– в кластере реализована функция проверки аутентификатора пользователя.
known_roles
– возвращает список всех известных ролей экземпляров и их зависимостей.webui_blacklist
– возвращает список страниц веб-интерфейса, которые должны быть скрыты (исключены из отображения). Обычно это те страницы, доступ к которым запрещен (запрет доступа осуществляется другими механизмами).vshard_groups
– информация об имеющихся группах модуляvshard
, используемых для распределенного хранения данных.can_bootstrap_vshard
– имеется ли возможность вызвать функцию bootsrap_vshard.config
– возвращает текущую конфигурацию.
- query.servers¶
Возвращает информацию по серверам кластера.
- query.replicasets¶
Возвращает информацию по наборам реплик кластера.
Запросы на внесение изменений в настройки (mutation)¶
Пример запроса на изменение настроек автоматического восстановления (cluster.failover):
mutation {
cluster {
failover(enabled: false)
}
}
- mutation.cluster¶
Настройки кластера:
schema
– применение новой модели данных.failover
– включение или отключение функции автоматического восстановления.failover_params
– настройка функции автоматического восстановления.edit_topology
– позволяет задавать топологию кластера (наборы реплик и их роли).auth_params
– настройка параметров авторизации. Эти параметры относятся к авторизации в Tarantool Cartridge, а не к TDG:enabled
– включена ли функция авторизации.cookie_max_age
– максимальное время жизни пользовательской cookie (в секундах).cookie_renew_age
– если передаваемая пользовательская cookie старше, чем указано в данном параметре, то ее необходимо обновить.
failover_promote
– переключение мастера в наборе реплик с указаннымid
на экземпляр с указаннымid
. Работает только в stateful-режиме функции автоматического восстановления (failover).
edit_server
– редактирование основных параметров сервера. Устаревшая функция. Оставлена для обратной совместимости. Используйтеcluster
/edit_topology
вместо данной функции.probe_server
– проверяет, доступен ли экземпляр по указанному адресу для подключения его к кластеру.edit_replicaset
– редактирование основных параметров набора реплик. Устаревшая функция. Оставлена для обратной совместимости. Используйтеcluster
/edit_topology
вместо данной функции.join_server
– подключение нового экземпляра к существующему набору реплик. Устаревшая функция. Оставлена для обратной совместимости. Используйтеcluster
/edit_topology
вместо данной функции.bootstrap_vshard
– при вызове происходит распределение данных по серверам (См. bootsrap_vshard).expel_server
– необратимое удаление сервера из кластера. Устаревшая функция. Оставлена для обратной совместимости. Используйтеcluster
/edit_topology
вместо данной функции.