Lean Cloud

Примечание

В разделе не приводятся следующие данные, но предполагается, что они известны:

  1. Адрес узла, который принимает запросы REST API.
  2. Пароль и имя пользователя, использующего REST API.

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.

POST
/auth/
Получение токена.

Для того, чтобы получить токен, необходимо выполнить REST API запрос. REST API вернет токен, который необходимо передавать в HTTP заголовке при выполнении запросов к защищенным методам.

Пример запроса:

POST /auth
Content-Type: application/json

{
    "username": "foo",
    "bar": "bar"
}

Ответ:

{
    "access_token": "long string...."
}

Auditor API

POST
/auditor/
Запуск аудита.

Метод валидирует входные данные и ставит в очередь задачу на проведение аудита в модуле Auditor.

Параметры запроса:

Name In Type Description
algorithm body string

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

  • balancing;
  • consolidation;
  • force_balncing;
  • force_consolidation.
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

Тип операции. Возможные значения:

  • migration;
  • drop_vm;
  • restore_vm.
source_host_id body string Идентификатор узла, на котором находится виртуальная машина.
vm_id body string Идентификатор виртуальной машины, над которой производится операция.
destination_host_id body string Идентификатор узла, куда необходимо мигрировать виртуальную машину.
status body enum Текущий статус операции. Поддерживается только если подключен модуль Robodmin.
status_history body list[dictionary] История смены статуса операции с информацией об отладке. Поддерживается только если подключен модуль Robodmin.
GET
/auditor/{audit_request_id}/
Получение информации о текущем состоянии аудита.

Параметры запроса:

Name In Type Description
audit_request_id body integer Идентификатор аудита.

Пример запроса:

GET /auditor/$audit_request_id
Content-Type: application/json
Authorization: Bearer $access_token

Ответ:

Возвращает тот же результат, что и метод запуска аудита.

POST
/auditor/{audit_request_id}/apply/
Применение плана аудита.

Метод проверяет, что аудит план можно выполнить, и ставит задачу в очередь на применение плана аудита через модуль Robodmin. В зависимости от инсталляции, могут применяться ограничения на применение планов аудита.

Список ограничений:

  • Можно применить только самый актуальный план аудита.

Параметры запроса:

Name In Type Description
audit_request_id body integer Идентификатор аудита.

Пример запроса:

POST /auditor/$audit_request_id/apply
Content-Type: application/json
Authorization: Bearer $access_token

Ответ:

Возвращает тот же результат, что и метод запуска аудита.

DELETE
/auditor/{audit_request_id}
Удаление аудита.

Параметры запроса:

Name In Type Description
audit_request_id body integer Идентификатор аудита.

Пример запроса:

DELETE /auditor/$audit_request_id
Content-Type: application/json
Authorization: Bearer $access_token

Ответ:

Эта операция не имеет содержания ответа.

Scheduler API

POST
/scheduler/schedule
Определение узла для размещения новой виртуальной машины.

Пример запроса:

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 Идентификатор сервера, на который необходимо поместить виртуальную машину.