Lean Cloud¶
Содержание
Примечание
В разделе не приводятся следующие данные, но предполагается, что они известны:
REST API Lean Cloud¶
В данном разделе документации рассматривается REST API программного обеспечения Lean Cloud. REST API Lean Cloud реализуются в модулях Auditor API и Scheduler API. Задача модулей: провалидировать входные данные и делегировать исполнение запросов модулям Auditor, Scheduler, Robodmin. REST API использует JSON для представления данных.
Авторизация¶
Для того, чтобы работать с REST API, необходимо предварительно пройти авторизацию в сервисе и получить специальный токен, который необходимо будет отправлять в HTTP заголовке с каждым запросом. Авторизация является опциональным механизмом REST API и может включаться или выключаться в зависимости от инсталляции программного обеспечения Lean Cloud.
Для того, чтобы получить токен, необходимо выполнить REST API запрос. REST API вернет токен, который необходимо передавать в HTTP заголовке при выполнении запросов к защищенным методам.
Пример запроса:¶
POST /auth
Content-Type: application/json
{
"username": "foo",
"bar": "bar"
}
Ответ:¶
{
"access_token": "long string...."
}
Auditor API¶
Метод валидирует входные данные и ставит в очередь задачу на проведение аудита в модуле Auditor.
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
algorithm | body | string | Наименование алгоритма. Список доступных алгоритмов может зависеть от инсталляции. Список поддерживаемых алгоритмов по умолчанию:
|
algorithm_parameters | body | dictionary | Параметры алгоритма. Каждый алгоритм может поддерживать дополнительные параметры, которые передаются в виде ключ-значение. Опционально по умолчанию никаких дополнительных параметров не передается. |
hosts_filter | body | dictionary | Критерии фильтрации узлов для построения состояния кластера. В зависимости от инсталляции могут поддерживаться различные параметры фильтрации узлов. Опционально по умолчанию для построения состояния кластера используются все узлы кластера. |
period | body | integer | Указывается период с момента запуска аудита, за который будут отбираться данные о потреблении ресурсов виртуальными машинами в днях. Опционально, значение по умолчанию 7. Например: Аудит запущен 10.12.2018 в 23:59:59. Тогда будут выбраны профили потребления ресурсов ВМ в период с 03.12.2018 23:59:59 по 10.12.2018 в 23:59:59. |
metric_history_period_start | body | string | Указывается время, начиная с которого система начнет учитывать данные по потреблению ресурсов. Используется формат: YYYY-MM-DDThh::mm:ss . Пример: 2018-01-01T00:00:00 . |
metric_history_period_end | body | string | Указывается время, до которого система будет учитывать данные по потреблению ресурсов (не включительно). Используется формат: YYYY-MM-DDThh::mm:ss . Пример: 2018-12-31T23:59:59 . В случае, если указан период [2018-01-01T00:00:00, 2018-12-31T23:59:59] , то будут учтены все значения, которые записаны, начиная с 2018-01-01T00:00:00 и до 2018-12-31T23:59:59 . При этом метрики записанные ровно в 2018-12-31T23:59:59 не будут учтены. |
hard_limits | body | dictionary | Предельное значение для лимита на ресурсы. Значение опционально. Значение по умолчанию зависит от инсталляции. Список доступных ресурсов также зависит от инсталляции. Например: {“cpu”: 0.3} , означает что по ресурсу CPU установлено ограничение в 30%, т.е. недопустимо такое состояние кластера, в котором среди всех узлов есть узлы, на которых суммарное потребление CPU больше 30%. |
Пример запроса:¶
POST /auditor
Content-Type: application/json
Authorization: Bearer $access_token
Параметры алгоритмов balancing
, consolidation
:¶
Name | In | Type | Description |
---|---|---|---|
max_migrations | body | integer | Указывается строгое ограничение на количество найденных миграций в процессе работы алгоритма. По умолчанию алгоритм ничем не ограничен, но можно заставить его завершить работу ранее, когда будет найдено указанное количество миграций. |
Критерии фильтрации узлов:¶
Name | In | Type | Description |
---|---|---|---|
datacenter_id | body | string | Идентификатор кластера. Значение по умолчанию: DEFAULT . Если в инсталляции поддерживается только один кластер, то это значение не нужно указывать. |
host_ids | body | list[string] | Список идентификаторов узлов. Если не указан параметр datacenter_id и указан host_ids , то состояние будет определено по этим узлам. |
aggregate_id | body | string | Идентификатор агрегации OpenStack. Подробнее описано в разделе «Host Aggregates» документации OpenStack. Если параметр указан, то будет построено состояние только по узлам из данной агрегации, при этом все остальные критерии не учитываются. |
Ответ:¶
Структура данных AuditRequest:¶
Возвращает JSON представление модели AuditRequest.
Name | In | Type | Description |
---|---|---|---|
id | body | integer | Идентификатор аудита. |
algorithm | body | string | Имя алгоритма, который был указан в параметрах запуска аудита. |
algorithm_parameters | body | dictionary | Параметры алгоритма, которые были указаны в параметрах запуска аудита. |
hosts_filter | body | dictionary | Параметры фильтрации узлов, которые были указаны в параметрах запуска аудита. |
metrics_history_period | body | dictionary | Период времени, за который были выбраны записи данных потребления ресурсов виртуальными машинами. Содержит два поля: start и end . |
status | body | enum | Текущий статус аудита. |
status_history | body | list[dictionary] | История смены статуса аудита с информацией об отладке. |
audit_plan | body | AuditPlan | Информация о плане аудита, отображается только если аудит завершен успешно. |
План аудита:¶
Name | In | Type | Description |
---|---|---|---|
id | body | integer | Идентификатор плана аудита. |
operations | body | List[ClusterOperation] | Список операций плана аудита, отсортированный в порядке выполнения. |
status | body | enum | Текущий статус плана аудита. Поддерживается только в случае, если подключен модуль Robodmin. |
status_history | body | list[dictionary] | История смены статуса плана аудита с информацией об отладке. Поддерживается только в случае, если подключен модуль Robodmin. |
Cluster Operation:¶
Name | In | Type | Description |
---|---|---|---|
id | body | integer | Идентификатор операции. |
operation_type | body | string | Тип операции. Возможные значения:
|
source_host_id | body | string | Идентификатор узла, на котором находится виртуальная машина. |
vm_id | body | string | Идентификатор виртуальной машины, над которой производится операция. |
destination_host_id | body | string | Идентификатор узла, куда необходимо мигрировать виртуальную машину. |
status | body | enum | Текущий статус операции. Поддерживается только если подключен модуль Robodmin. |
status_history | body | list[dictionary] | История смены статуса операции с информацией об отладке. Поддерживается только если подключен модуль Robodmin. |
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
audit_request_id | body | integer | Идентификатор аудита. |
Пример запроса:¶
GET /auditor/$audit_request_id
Content-Type: application/json
Authorization: Bearer $access_token
Ответ:¶
Возвращает тот же результат, что и метод запуска аудита.
Метод проверяет, что аудит план можно выполнить, и ставит задачу в очередь на применение плана аудита через модуль Robodmin. В зависимости от инсталляции, могут применяться ограничения на применение планов аудита.
Список ограничений:
- Можно применить только самый актуальный план аудита.
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
audit_request_id | body | integer | Идентификатор аудита. |
Пример запроса:¶
POST /auditor/$audit_request_id/apply
Content-Type: application/json
Authorization: Bearer $access_token
Ответ:¶
Возвращает тот же результат, что и метод запуска аудита.
Scheduler API¶
Пример запроса:¶
POST /scheduler/schedule
Content-Type: application/json
Authorization: Bearer $access_token
Список параметров запроса зависит от инсталляции.
Список параметров при интеграции с OpenStack:¶
Name | In | Type | Description |
---|---|---|---|
flavor_id | body | string | Идентификатор типа виртуально машины в OpenStack, который определяет требования к виртуальным ресурсам: RAM, DISK, CPU. Подробнее описано в разделе «Flavors» документации OpenStack. |
Ответ:¶
В случае, если удалось определить узел, то запрос возвращает следующие данные:
Name | In | Type | Description |
---|---|---|---|
server_id | body | string | Идентификатор сервера, на который необходимо поместить виртуальную машину. |