Selectel Cloud Management API
Selectel Cloud Management API предназначен для управления ресурсами Облачной платформы. Предоставляет функциональность, аналогичную возможностям панели управления my.selectel.ru:
- создание/изменение/удаление проектов;
- изменение количества потенциально доступных проекту ресурсов — облачных серверов, дисков, сетей и других (квот проекта);
- создание, изменение и удаление пользователей проекта;
- создание лицензий (для Windows Server);
- создание VRRP-подсетей.
Selectel Cloud Management API не предоставляет доступа непосредственно к созданию облачных серверов, дисков, сетей и других ресурсов, а только позволяет настроить условия для их корректного создания с помощью OpenStack API.
Авторизация
Авторизация в Selectel Cloud Management API происходит с помощью токена Selectel, который передается в заголовке X-Token каждого запроса. Подробнее о получении токена Selectel читайте в инструкции Авторизация.
Адрес (URL): https://api.selectel.ru/vpc/resell/v2
Пример типового запроса, с помощью которого можно создать проект в аккаунте пользователя Облачной платформы Selectel:
curl 'https://api.selectel.ru/vpc/resell/v2/projects' -X POST -H "Content-Type: application/json" --data-binary '{"project":{"name":"<name>"}}' -H "X-Token: <token>"
Статистика потребления
Чтобы просмотреть статистику потребления ресурсов Облачной платформы:
- Получите токен OpenStack для авторизации в Gnocchi REST API.
- Посмотрите потребление для всего аккаунта или отдельного проекта.
Получить токен OpenStack
-
Получите токен Selectel (ключ API) для работы с Selectel API.
-
Получите токен OpenStack для аккаунта (его требуется перевыпускать не реже одного раза в сутки):
curl -X POST -H 'X-Token: <token_value>' -H 'Content-type: application/json' -d '{"token":{"account_name":"<account_id>"}}' -H 'Content-type: application/json' https://my.selectel.ru/api/vpc/resell/v2/tokens
Укажите:
<token_value>
— токен Selectel (ключ API);<account_id>
— номер аккаунта в панели управления.
-
В ответе вернется токен OpenStack:
{"token": {"id": "<openstack_account_token>"}}
Посмотреть потребление аккаунта
- Получите постоянный идентификатор учётной записи Selectel:
curl -H 'Content-type: application/json' -H 'X-Auth-Token: <openstack_account_token>' https://api.ru-3.selvpc.ru/metric/v1/resource/sel_account
- В ответе вернется структура вида:
[
{
"creator": "---",
"started_at": "2020-08-30T10:16:17.244227+00:00",
"revision_start": "2020-08-30T10:16:17.404943+00:00",
"ended_at": null,
"user_id": null,
"project_id": "01be84552e6a452aa14995",
"original_resource_id": "01be84552e6a452aa14995",
"id": "01be8455-2e6a-452a-a149-95",
"type": "sel_account",
"name": "000000",
"revision_end": null,
"metrics": {
"vpc.account.full.cost": "01d1-7be1-46a8-9ced-00bd"
},
"created_by_user_id": "a0e0123e8c364232b1234dbb31ce1a5e",
"created_by_project_id": "5e200c6ffe184b9f8b69344d36123456"
}
]
Сохраните значение id
— ID аккаунта. В дальнейших запросах это переменная <openstack_account_id>
.
3. Запросите изменения метрики аккаунта с названием vpc.account.full.cost
:
curl -H 'Content-type: application/json' -H 'X-Auth-Token: <openstack_account_token>' 'https://api.ru-3.selvpc.ru/metric/v1/resource/sel_account/<openstack_account_id>/metric/vpc.account.full.cost/measures?aggregation_methods=mean&granularity=<granularity>&start=<start_date>&stop=<stop_date>'
Укажите:
<granularity>
— значение3600
для просмотра стоимости за один час или86400
для просмотра средней стоимости часа за сутки;<start_date>
— дата начала сбора статистики в формате2021-01-31T21:00:00
<stop_date>
— дата окончания сбора статистики в формате2021-04-16T21:00:00
- В ответе на запрос каждый элемент списка содержит: дату начала периода, длительность периода в секундах, значение потребления за период в копейках.
Пример ответа для
granularity=86400
:
Пример ответа для[["2021-01-31T00:00:00+00:00", 86400.0, 86.33333333333333], ["2021-02-01T00:00:00+00:00", 86400.0, 205.83333333333334], ... ["2021-04-16T00:00:00+00:00", 86400.0, 191.79166666666666]]
granularity=3600
:[["2021-01-31T21:00:00+00:00", 3600.0, 205.0], ["2021-01-31T22:00:00+00:00", 3600.0, 209.0], ... ["2021-04-16T20:00:00+00:00", 3600.0, 191.0]]
Посмотреть потребление проекта
- Запросите список проектов внутри аккаунта:
curl -H 'Content-type: application/json' -H 'X-Auth-Token: <openstack_account_token>' https://api.ru-3.selvpc.ru/metric/v1/resource/sel_project
- В ответе вернется структура вида:
[
{
"creator": "---",
"started_at": "2021-04-27T09:00:00+00:00",
"revision_start": "2021-04-27T10:42:02.957886+00:00",
"ended_at": null,
"user_id": null,
"project_id": "01be84552e6a452aa14995a73b12345a",
"original_resource_id": "a10c12341eb247d1b1c225a4902018e3",
"id": "a10c1234-1eb2-47d1-b1c2-25a4902018e3",
"type": "sel_project",
"parent_id": "01be8455-2e6a-452a-a149-95a73b12345a",
"name": "Test",
"revision_end": null,
"metrics": {
"vpc.compute_cores.ru-7a.cost": "7fe07d04-1f2b-4f3a-a376-fcc0",
"vpc.compute_cores.ru-7a.quantity": "c0007aca-0a0a-4a2a-a053-da12",
"vpc.compute_ram.ru-7a.cost": "d2ac0509-f6b3-40ae-03e2-125d",
"vpc.compute_ram.ru-7a.quantity": "2ad22fad-d01f-4d44-8fb6-123b",
...
"vpc.project.ru-3.cost": "fba81bd8-bb9d-4f95-9018",
"vpc.project.ru-7.cost": "9fc7beaa-d94c-46d1-a56a",
},
"created_by_user_id": "ec05e123a2b64596bf1e12c4b80",
"created_by_project_id": "5e204c6ffe123b9f8b69344d3"
},
...
]
Сохраните значение id
— ID проекта. В дальнейших запросах это переменная <project_id>
.
3. Запросите изменения конкретной метрики:
curl -H 'Content-type: application/json' -H 'X-Auth-Token: <openstack_account_token>' 'https://api.ru-3.selvpc.ru/metric/v1/resource/sel_project/<project_id>/metric/<metric_name>/measures?aggregation_methods=mean&granularity=<granularity>&start=<start_date>&stop=<stop_date>'
Укажите:
<metric_name>
— имя метрики, список можно посмотреть в ответе API на шаге 2;<granularity>
— значение3600
для просмотра стоимости за один час или86400
для просмотра средней стоимости часа за сутки;<start_date>
— дата начала сбора статистики в формате2021-01-31T21:00:00
<stop_date>
— дата окончания сбора статистики в формате2021-04-16T21:00:00
- В ответе на запрос каждый элемент списка содержит: дату начала периода, длительность периода в секундах, значение потребления за период в копейках.
Пример ответа для
granularity=86400
:
Пример ответа для[["2021-01-31T00:00:00+00:00", 86400.0, 86.33333333333333], ["2021-02-01T00:00:00+00:00", 86400.0, 205.83333333333334], ... ["2021-04-16T00:00:00+00:00", 86400.0, 191.79166666666666]]
granularity=3600
:[["2021-01-31T21:00:00+00:00", 3600.0, 205.0], ["2021-01-31T22:00:00+00:00", 3600.0, 209.0], ... ["2021-04-16T20:00:00+00:00", 3600.0, 191.0]]