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>"

Статистика потребления

Чтобы просмотреть статистику потребления ресурсов Облачной платформы:

  1. Получите токен (ключ API) для работы с Selectel API.

  2. Получите токен для аккаунта (его требуется перевыпускать не реже одного раза в сутки) с помощью запроса:

    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> — номер аккаунта в панели управления.
  3. В ответе вернется OpenStack Token вида:

    {"token": {"id": "<openstack_account_token>"}}
  4. Работа со статистикой потребления выполняется через Gnocchi REST API. Авторизация выполняется с помощью полученного ранее <openstack_account_token>.

Источники данных

Данные о потреблении сервисов облака хранятся в распределённой по нескольким регионам структуре.

Эндпоинт Сервисы продукта
https://api.ru-3.selvpc.ru/metric/v1/ Ядро облака: виртуальные машины, диски, сети
и PaaS-продукты (MKS, DBaaS, Serverless)
https://api.ru-1.selvpc.ru/metric/v1/ Облачное хранилище
https://api.ru-2.selvpc.ru/metric/v1/ CDN

Работа с крупно агрегированными данными

  1. Чтобы получить информацию о потреблении всего аккаунта облака, получите постоянный идентификатор учётной записи 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
  2. В ответе вернется структура вида:

    [
      {
         "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": "01be84552e6a452aa14995a73b12345a", 
         "original_resource_id": "01be84552e6a452aa14995a73b12345a", 
         "id": "01be8455-2e6a-452a-a149-95a73b12345a",
         "type": "sel_account", 
         "name": "000000", 
         "revision_end": null, 
         "metrics": {
            "vpc.account.full.cost": "01d9b2e1-7be1-46a8-9ced-000cdcf72cbd"
         }, 
         "created_by_user_id": "a0e0123e8c364232b1234dbb31ce1a5e", 
         "created_by_project_id": "5e200c6ffe184b9f8b69344d36123456"
      }
    ]

    Из ответа API необходимо взять поле 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=max&granularity=86400&start=2021-01-31T21:00:00&stop=2021-04-16T21:00:00'
  4. Пример ответа:

    [["2021-01-31T00:00:00+00:00", 86400.0, 86.33333333333333], 
    ["2021-02-01T00:00:00+00:00", 86400.0, 205.83333333333334],
    ...
    ["2021-02-02T00:00:00+00:00", 86400.0, 242.75]]

    Каждый элемент списка в ответе на запрос содержит три поля: дату начала периода, длительность периода в секундах, и значение потребления аккаунта в копейках.

Работа с информацией о потреблении отдельных проектов

  1. Чтобы получить информацию об отдельном проекте облака, запросите список проектов:

    curl -H 'Content-type: application/json' -H 'X-Auth-Token: <openstack_account_token>' https://api.ru-3.selvpc.ru/metric/v1/resource/sel_project
  2. В ответе вернется структура вида:

    [
      {
         "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-fcc00eb6be95", 
            "vpc.compute_cores.ru-7a.quantity": "c0007aca-0a0a-4a2a-a053-da123dc15a55", 
            "vpc.compute_ram.ru-7a.cost": "d2ac0509-f6b3-40ae-03e2-125db025fc0a", 
            "vpc.compute_ram.ru-7a.quantity": "2ad22fad-d01f-4d44-8fb6-123b2cb7fc09", 
            ...
            "vpc.project.ru-3.cost": "fba81bd8-bb9d-4f95-9018-e05f912410e3", 
            "vpc.project.ru-7.cost": "9fc7beaa-d94c-46d1-a56a-b05c8a79ba23", 
         }, 
         "created_by_user_id": "ec05e123a2b64596bf1e12c4b80139c1", 
         "created_by_project_id": "5e204c6ffe123b9f8b69344d36178355"
      },
    ...
    ]

    Из ответа API необходимо взять поле id. В дальнейших запросах этот идентификатор нужно подставлять в переменную <project_id>.

  3. Запросите изменения конкретной метрики (<metric_name>), представленных в ответе API выше:

    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=max&granularity=86400&start=2021-01-31T21:00:00&stop=2021-04-16T21:00:00'
  4. Пример ответа:

    [["2021-03-12T00:00:00+00:00", 86400.0, 10.0]]

    Каждый элемент списка в ответе на запрос содержит три поля: дату начала периода, длительность периода в секундах, и значение потребления аккаунта в копейках.