Selectel Cloud Management API

Selectel Cloud Management API предназначен для управления ресурсами Облачной платформы. Предоставляет функциональность, аналогичную возможностям панели управления my.selectel.ru:

  • создание/изменение/удаление проектов;
  • изменение количества потенциально доступных проекту ресурсов — облачных серверов, дисков, сетей и других (квот проекта);
  • создание, изменение и удаление пользователей проекта;
  • создание лицензий (для Windows Server);
  • создание VRRP-подсетей.

Selectel Cloud Management API не предоставляет доступа непосредственно к созданию облачных серверов, дисков, сетей и других ресурсов, а только позволяет настроить условия для их корректного создания с помощью OpenStack API.

Авторизация

Для работы с Selectel Cloud Management API используются токены Keystone, которые передаются в заголовке X-Auth-Token.

Адрес (URL) можно посмотреть в списке URL.

Пример запроса для создания проекта:

curl -i -XPOST \
-H 'X-Auth-Token: <keystone_token>' \
-H 'Content-Type: application/json' \
-d '{"project":{"name":"<name>"}}' \
https://api.selectel.ru/vpc/resell/v2/projects

Укажите <keystone_token> — токен Keystone.

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

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

  1. Получите токен OpenStack для авторизации в Gnocchi REST API.
  2. Посмотрите потребление для всего аккаунта или отдельного проекта.

Получить токен OpenStack

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

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

    curl -XPOST \
    -H 'X-Token: <token>' \
    -H 'Content-type: application/json' \
    -d '{"token":{"account_name":"<account_id>"}}' \
    https://api.selectel.ru/iam/v1/tokens
    

    Укажите:

    • <token> — токен Selectel (ключ API);
    • <account_id> — номер аккаунта. Можно посмотреть в панели управления в правом верхнем углу.
  3. В заголовке ответа X-Subject-Token вернется токен OpenStack:

    x-subject-token: <openstack_account_token>
    

Посмотреть потребление аккаунта

  1. Получите постоянный идентификатор учётной записи Selectel:

    curl \
    -H 'X-Auth-Token: <openstack_account_token>' \
    -H 'Content-type: application/json' \
    https://ru-3.cloud.api.selcloud.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": "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 'X-Auth-Token: <openstack_account_token>' \
    -H 'Content-type: application/json' \
    https://ru-3.cloud.api.selcloud.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
  4. В ответе на запрос каждый элемент списка содержит: дату начала периода, длительность периода в секундах, значение потребления за период в копейках.

    Пример ответа для 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]]
    

Посмотреть потребление проекта

  1. Запросите список проектов внутри аккаунта:

    curl \
    -H 'X-Auth-Token: <openstack_account_token>' \
    -H 'Content-type: application/json' \
    https://ru-3.cloud.api.selcloud.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-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 'X-Auth-Token: <openstack_account_token>' \
    -H 'Content-type: application/json' \
    https://ru-3.cloud.api.selcloud.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
  4. В ответе на запрос каждый элемент списка содержит: дату начала периода, длительность периода в секундах, значение потребления за период в копейках.

    Пример ответа для 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]]