Документация Public API v1
Общее
API используется для автоматизации рутинных задач в облаке и позволяет управлять элементами инфраструктуры с помощью HTTP-запросов.
Формат запросов
При выполнении запроса, ID сущности передается в URL.
Остальные параметры передаются в теле запроса.
Токен передается в заголовке запроса (см. “Авторизация”).
Параметры ответа возвращаются в теле ответа.
Ошибки и коды ответа
В данном разделе представлено описание структуры ответа, ошибок и кодов. Сервис возвращает тело ответа в формате JSON.
Структура
Успешный ответ может не содержать тела, но содержит код ответа.
Ошибочный ответ содержит объект error
, который содержит в себе поля: code
— числовой идентификатор и message
— строковое пояснение к ошибке.
{
"code": 400,
"title": "Bad request",
"error": {
"message": "Volume must be in ('in-use',) statuses"
}
}
Успешный ответ имеет следующую структуру:
{
"code": 200,
"title": "Ok",
"result": {
...
}
}
Или такую:
{
"code": 200,
"title": "Ok",
"results": [
...
]
}
Где result
— объект, содержащий информацию о единичном ресурсе, а results
— массив таких объектов.
Успешный ответ
- 200 (OK) — запрос выполнен успешно, подробности в теле ответа.
- 201 (Created) — объект успешно создан.
- 202 (Accepted) — запрос на создание объекта принят.
- 204 (No Content) — запрос на удаление объекта принят.
Ошибки
Клиентские ошибки
- 400 (Bad request) — неверные данные запроса. Также возникает, если в параметре передан неверный тип, например,
str
вместоint
. - 401 (Unauthorized) — авторизация не пройдена или адрес источника заблокирован сервисом.
- 403 (Forbidden) — доступ к объекту с текущими правами запрещен.
- 404 (Not Found) — объект не найден.
- 405 (Method Not Allowed) — для данного объекта не применяется указанный метод.
- 409 (Conflict) — запрос не применим из-за текущего статуса ресурса, например, нельзя перезагрузить сервер, если изменяется количество ресурсов.
- 429 (Too Many Requests) — слишком много запросов в единицу времени. Применяется при лимитировании ресурса.
Ошибки сервиса
- 500 (Internal Server Error) — общая ошибка, сигнализирующая о проблеме.
Текстовый код ошибки
В теле ответа присутствует текстовый код ошибки. Коды могут добавляться, но не могут быть изменены или удалены в рамках одной мажорной версии API. Примеры кодов:
Bad request
— в запросе передан неверный аргументInternalError
— проблема в работе сервисаToo many Requests
— сработало ограничение на количество операций с данным ресурсом в единицу времениNot found
— ресурс не найденForbidden
— доступ к ресурсу запрещенUnauthorized
— авторизация не пройдена
Методы
Методы делятся на идемпотентные и неидемпотентные.
Метод HTTP является идемпотентным, если повторный идентичный запрос, сделанный один или несколько раз подряд, имеет один и тот же эффект, не изменяющий состояние ресурса инфраструктуры.
GET
Идемпотентный.
Запрос возвращает объект или список объектов. На GET
запрос к любому ресурсу сервис генерирует ответ, содержащий следующие поля:
- именованный объект — объект верхнего уровня или список объектов (например server или servers)
- id — уникальный идентификатор в рамках сервиса.
- status — текущий статус объекта (см ниже).
- links — список состоящий из объектов, которые содержат ссылку на подробную информацию о ресурсе (сервер, плавающий IP, диск или снапшот). В будущем в этом списке появятся ссылки на другие версии API.
rel
указывает версию API.
При успешном запросе возвращает 200 (ОК) с телом ответа или 404 (Not Found) без тела, если ресурс не найден.
POST
Неидемпотентный.
Возвращает 201 (Created), если объект успешно создан.
Если объект создается, ресурс возвращает 202 (Accepted). В этом случае изменение статуса объекта отображается в поле объекта status
, при GET-запросе.
При запросе с конкретным ID, например, POST /servers/1
— сервис возвращает 404 (Not Found) с текстовым кодом Not Found
.
DELETE
Неидемпотентный.
Возвращает 204 (No Content), если объект удалось удалить или соответствующую ошибку.
Может быть использован в длительных операциях. В этом случае изменение статуса объекта отображается в поле объекта status
при GET-запросе.
Фильтрация и сортировка
Сервис поддерживает сортировку и фильтрацию с помощью параметров запроса.
Сортировка поддерживается для разных страниц в режиме пагинации.
Ключевые слова для фильтрации:
{field_name}__{условие}={значение}
Условия:
- gt: > (Больше чем)
- gte: >= (Больше или равно)
- lt: < (Меньше чем)
- lte: <= (Меньше или равно)
- range: field_name >= value1 and field_name <= value2
value1 или value2 могу быть пустыми:
{field_name}__range={value1}:{value2}
- in:
{field_name}__in={value1},{value2},{value3},{value4}
Ключевое слово для сортировки:
order={field_name}
для сортировки по возрастанию (ASC)order=-{field_name}
для сортировки по убыванию (DESC)
Пагинация
Длинные коллекции объектов поддерживают пагинацию на стороне клиента. В параметрах запроса передается:
limit
— указывающий на количество записей, которые клиент хочет получитьoffset
— смещение, относительно начала списка
Если параметры не доступны для конкретного ресурса, сервис вернет ошибку с кодом 400.
Инфраструктура
В этом разделе описаны методы работы с инфраструктурными сущностями проекта.
Проект
Логическая структура, содержащая в себе другие элементы, такие как: серверы, диски, IP-адреса и т.д.
Проекты (список)
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор проекта
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив проектов
- results.itemobject
Объект, содержащий параметры проекта
- results.item.created_instring
Дата создания проекта
- results.item.has_abuseboolean
Наличие неразрешенного тикета за нарушение правил. Если это значение
true
, то проект может быть остановлен в течение 24 часов - results.item.idstring
Уникальный идентификатор проекта
- results.item.namestring
Название проекта
- results.item.statusstring
Статус проекта
- results.item.stopping_reasonstring
Причина остановки
- results.item.summaryobject
Общая информация о проекте
- results.item.summary.floating_ipsinteger
Количество используемых плавающих IP адресов
- results.item.summary.networksinteger
Количество используемых сетей
- results.item.summary.serversinteger
Количество используемых серверов
- results.item.summary.volumesinteger
Количество используемых дисков
Проекты (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "status": "ACTIVE", "summary": { "servers": 3, "volumes": 2, "floating_ips": 1, "networks": 1 }, "name": "visionary-fractal-tench", "id": "81de94b0-5749-4dea-aa2d-f8a0d328dfcc", "has_abuse": false, "stopping_reason": null } ], "count": 1 }
Образы операционных систем (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив образов ОС
- results.itemobject
Объект, содержащий параметры образов ОС
- results.item.idstring
Уникальный идентификатор образа
- results.item.namestring
Наименование образа
- results.item.operation_systemobject
Объект операционной системы с параметрами ниже
- results.item.operation_system.distributionstring
Название дистрибутива
- results.item.operation_system.os_familystring
Семейство операционных систем
- results.item.operation_system.versionstring
Версия операционной системы
Образы операционных систем (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/images" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "operation_system": { "version": "10", "distribution": "debian", "os_family": "linux" }, "name": "Debian 10", "id": "29efc774-eeba-45ac-86e1-3a806eeaee45" }, { "operation_system": { "version": "20", "distribution": "ubuntu", "os_family": "linux" }, "name": "Ubuntu 20", "id": "a9a954ea-40ee-463a-814e-49070317556c" }, { "operation_system": { "version": "8", "distribution": "centos", "os_family": "linux" }, "name": "CentOS 8", "id": "d09ea90e-0a54-4342-b637-e31a022a47ab" }, ], "count": 3 }
Лимиты проекта (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта, для которого получаем список образов ОС. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив лимитов
- results.itemobject
Объект, содержащий параметры лимита
- results.item.maxinteger
Верхнее ограничение по использованию ресурса
- results.item.measurestring
Единица измерения
- results.item.namestring
Наименование ресурса
- results.item.usedinteger
Количество использованного ресурса
Лимиты проекта (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/limits" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "max": 0, "name": "bandwidth" }, { "max": 300, "name": "disk-space", "used": 60 }, { "max": 5, "name": "floating-ips", "used": 1 }, { "max": 5, "name": "servers", "used": 3 }, { "max": 100, "name": "ssh-keypair", "used": 1 }, { "max": 10, "name": "volumes", "used": 3 } ] "count": 6 }
Рецепты
Также называемое в сервисе Приложениями - это набор ПО, который может быть предустановлен автоматически вместе с операционной системой после создания сервера.
Рецепты (список)
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор проекта
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив рецептов
- results.itemobject
Объект, содержащий параметры рецепта
- results.item.idstring
Уникальный идентификатор рецепта
- results.item.min_diskinteger
Минимально допустимый объём диска для установки рецепта
- results.item.min_raminteger
Минимально допустимое количество RAM для установки рецепта
- results.item.min_vcpusinteger
Минимально допустимое количество vCPU для установки рецепта
- results.item.namestring
Наименование рецепта
- results.item.suitable_imagesarray
Список, содержащий объекты образов ОС, с которыми возможна установка рецепта
- results.item.suitable_images.itemstring
Объект, содержащий информацию об образах ОС, с которыми возможна установка рецепта
Рецепты (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/recipes" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "min_ram": 1, "name": "Bitrix Env Crm", "min_vcpus": 1, "id": "a10ffcb5-a068-4aac-9e76-5641be05d0d4", "suitable_images": [ "d016331e-6260-45e2-b429-c598188e21f3" ], "min_disk": 10 } ] }
Объектное хранилище S3
Хранилище для долговременного хранения данных в облаке. Для использования хранилища необходимо создать отдельного пользователя S3. Данные в хранилище находятся в специальных объектах - бакетах.
Пользователи (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив пользователей S3
- results.itemobject
Объект, содержащий параметры пользователя S3
- results.item.canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- results.item.idstring
Уникальный идентификатор пользователя S3
- results.item.max_bucketsinteger
Лимит пользователя по количеству бакетов
- results.item.namestring
Имя пользователя S3. Может быть неуникальным.
- results.item.quotasarray
Массив лимитов пользователя S3
- results.item.quotas.itemobject
Объект, содержащий информацию о лимите пользователя
- results.item.quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- results.item.quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- results.item.quotas.item.typestring
Тип лимита пользователя - для каждого бакета, либо общая для пользователя S3
- results.item.statusstring
Статус пользователя S3
- results.item.tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Пользователи (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/s3_users" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "tenant": "energetic_spectacular_lynxy", "max_buckets": 5, "name": "test_bucket", "quotas": [ { "max_objects": 10, "type": "user", "max_size": 500 }, { "max_objects": 10, "type": "bucket", "max_size": 500 } ], "canonical_name": "test_name1223", "id": "5c0a5361-bccb-40e6-a145-240bdb0f8d59", "status": "AVAILABLE" } ] }
Создать пользователя
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
- bucket_quotaobject
Объект, который содержит параметры лимита пользователя для каждого бакета. При создании пользователя параметр необязательный . В лимите можно указать максимальное количество объектов в бакете и максимальный объем данных в Кб.
- bucket_quota.max_objectsinteger,
nullМаксимально допустимое количество объектов
- bucket_quota.max_sizeinteger,
nullМаксимально допустимый объем данных в Кб
- canonical_name*string
Каноническое имя пользователя S3. Уникальное имя пользователя.
- default_bucketboolean
При значении true создаст пользователя S3 вместе с бакетом
- max_buckets*integer
Лимит по количеству бакетов создаваемого пользователя S3
- namestring
Имя пользователя S3. Может быть неуникальным.
- user_quota*object
Объект, который содержит параметры общего лимита пользователя. В лимите необходимо указать максимальный занимаемый объем данных в Кб, также можно указать максимальное количество объектов (бакеты не учитываются).
- user_quota.max_objectsinteger,
nullМаксимально допустимое количество объектов
- user_quota.max_size*integer
Максимально допустимый объем данных в Кб
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит пользователя по количеству бакетов
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Создать пользователя
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/s3_users" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post( url = URL, headers = HEADERS, json = { "bucket_quota": { "max_objects": 10, "max_size": 1000 }, "canonical_name": "test", "default_bucket": true, "max_buckets": 10, "name": "test_name", "user_quota": { "max_objects": 10, "max_size": 1000 } } )
{ "code": 201, "title": "Created" }
Удалить пользователя
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
Удалить пользователя
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Пользователь (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий параметры пользователя S3
- result.canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- result.idstring
Уникальный идентификатор пользователя S3
- result.max_bucketsinteger
Лимит пользователя по количеству бакетов
- result.namestring
Имя пользователя S3. Может быть неуникальным.
- result.quotasarray
Массив лимитов пользователя S3
- result.quotas.itemobject
Объект, содержащий информацию о лимите
- result.quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- result.quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- result.quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- result.statusstring
Статус пользователя S3
- result.tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Пользователь (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "result": { "tenant": "energetic_spectacular_lynxy", "max_buckets": 5, "name": "test_bucket", "quotas": [ { "max_objects": 10, "type": "user", "max_size": 500 }, { "max_objects": 10, "type": "bucket", "max_size": 500 } ], "canonical_name": "test_name1223", "id": "5c0a5361-bccb-40e6-a145-240bdb0f8d59", "status": "AVAILABLE" } }
Получение ключей доступа пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- access_keystring
Уникальный идентификатор ключа пользователя S3
- secret_keystring
Секретный ключ пользователя S3
- userstring
Уникальный идентификатор пользователя в рамках хранилища S3
Получение ключей доступа пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/keys" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK" }
Сброс ключей доступа пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- access_keystring
Уникальный идентификатор ключа пользователя S3
- secret_keystring
Секретный ключ пользователя S3
- userstring
Уникальный идентификатор пользователя в рамках хранилища S3
Сброс ключей доступа пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/keys" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 201, "title": "Created" }
Изменение простых полей пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
- name*string
Новое имя пользователя S3. Неуникальное имя пользователя.
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит пользователя по количеству бакетов
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Изменение простых полей пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.patch(url = URL, headers = HEADERS, json = {"name": "new_name"})
{ "code": 200, "title": "OK" }
Изменение лимитов пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
- bucket_quotaobject
Объект, который содержит параметры лимита для каждого бакета. Лимит может содержать ограничения на максимальное количество объектов в бакете и максимальный объем данных в Кб
- bucket_quota.max_objectsinteger,
nullМаксимально допустимое количество объектов
- bucket_quota.max_sizeinteger,
nullМаксимально допустимый объем данных в Кб
- max_bucketsinteger
Максимальное количество бакетов пользователя
- user_quotaobject
Объект, который содержит параметры общего лимита пользователя. В лимите обязательно указан максимальный занимаемый объем данных в Кб, также можно содержать ограничение на максимальное количество объектов (бакеты не учитываются).
- user_quota.max_objectsinteger,
nullМаксимально допустимое количество объектов
- user_quota.max_sizeinteger
Максимально допустимый объем данных в Кб
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит по количеству бакетов создаваемого пользователя S3
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Изменение лимитов пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/quotas" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.patch( url = URL, headers = HEADERS, json = { "bucket_quota": { "max_objects": 20, "max_size": 2000 }, "max_buckets": 20, "user_quota": { "max_objects": 20, "max_size": 2000 } } )
{ "code": 202, "title": "Accepted" }
Остановка пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит пользователя по количеству бакетов
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Остановка пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/suspend" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 202, "title": "Accepted" }
Включение пользователя S3
Параметры запроса
- ПараметрТип данныхОписание
- s3_user_id*stringПередается в path.
Уникальный идентификатор пользователя S3. Можно получить из запроса GET /v1/projects/{project_id}/s3_users
Формат ответа
- ПараметрТип данныхОписание
- canonical_namestring
Каноническое имя пользователя S3. Уникальное имя пользователя.
- idstring
Уникальный идентификатор пользователя S3
- max_bucketsinteger
Лимит по количеству бакетов
- namestring
Имя пользователя S3. Может быть неуникальным.
- quotasarray
Массив лимитов пользователя S3
- quotas.itemobject
Объект, содержащий информацию о лимите
- quotas.item.max_objectsinteger
Максимально допустимое количество объектов
- quotas.item.max_sizeinteger
Максимально допустимый объем данных в Кб
- quotas.item.typestring
Тип лимита - для каждого бакета, либо общая для пользователя S3
- statusstring
Статус пользователя S3
- tenantstring
Уникальный идентификатор тенанта. По умолчанию используется имя проекта.
Включение пользователя S3
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/s3_users/{s3_user_id}/unsuspend" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 202, "title": "OK" }
Серверы
Блок вычислительных ресурсов, к которому подключаются диски и IP-адреса.
Серверы (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив серверов
- results.itemobject
Объект, содержащий параметры сервера
- results.item.addressesarray
Массив IP-адресов сервера
- results.item.addresses.itemobject
IP-адрес сервера
- results.item.addresses.item.ddos_protectionboolean
Наличие защиты от DDoS-атак для конкретного адреса
- results.item.addresses.item.externalboolean
Является ли IP-адрес внешним
- results.item.addresses.item.idstring
Идентификатор IP-адреса
- results.item.addresses.item.mac_addrstring
MAC-адрес, связанный с IP
- results.item.addresses.item.namestring
Имя IP-адреса
- results.item.addresses.item.ptrstring
PTR-запись для IP-адреса
- results.item.addresses.item.typestring
Тип адреса
- results.item.addresses.item.versioninteger
Версия IP-адреса
- results.item.created_instring
Дата создания сервера
- results.item.disk_dataarray
Список дисков, которые подключены к серверу
- results.item.disk_data.itemobject
Объект, содержащий информацию о диске
- results.item.disk_data.item.idstring
Уникальный идентификатор диска
- results.item.disk_data.item.linksarray
Список ссылок на детальную информацию о диске
- results.item.disk_data.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.disk_data.item.links.item.hrefstring
Ссылка
- results.item.disk_data.item.links.item.relstring
Версия API
- results.item.disk_data.item.storage_typestring
Тип диска.
volume
— для сетевых дисков,local
— для локальных - results.item.flavorobject
Объект, содержащий параметры о вычислительных ресурсах сервера
- results.item.flavor.raminteger
Количество RAM
- results.item.flavor.vcpusinteger
Количество vCPU
- results.item.idstring
Уникальный идентификатор сервера
- results.item.imagestring
Образ операционной системы, используемый для создания сервера
- results.item.in_rescuestring
Находится ли сервер в режиме восстановления
- results.item.linksarray
Список ссылок на детальную информацию о сервере
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.namestring
Имя сервера
- results.item.project_idstring
Уникальный идентификатор проекта
- results.item.recipestring
Рецепт доп. ПО, используемый для создания сервера
- results.item.statusstring
Статус проекта
Серверы (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{object_id}/servers" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/servers/934d0fff-a3fc-4c43-8b0c-2f4762a7f63d/detail" } ], "name": "test", "addresses": [ { "ddos_protection": true, "name": "82.202.173.237", "mac_addr": "02:8b:72:43:40:d0", "ptr": "default.clo.ru", "id": "423e8ca6-bb34-43a6-8689-2e85d1a012dd", "type": "FIXED", "version": 4, "external": true } ], "flavor":{ "vcpus": 1, "ram": 2048 }, "status": "BUILDING", "id": "934d0fff-a3fc-4c43-8b0c-2f4762a7f63d", "project_id": "8104913be7b44ac4871b106e8104e1", "disk_data": [ { "id": "cc7f8329-3083-412e-9c07-b59d06d895f4", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/volumes/cc7f8329-3083-412e-9c07-b59d06d895f4/detail" } ], "storage_type": "volume" } ], "recipe": "e53e9b62-dd91-4a41-a794-4d6533b8139e", "created_in": "2023-07-17T04:27:45Z", "image": "25b600e9-8026-46e3-9c89-f002b24b0842" } ] }
Создать сервер
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
- addresses*array
Массив IP-адресов сервера
- addresses.item*object
Элемент, представляющий IP-адрес сервера. Если передать пустой массив, то создастся сервер без IP адреса
- addresses.item.address_idstring
Идентификатор IP-адреса
- addresses.item.ddos_protectionboolean
При установке флага вы получите защищенный от DDoS-атак IP
- addresses.item.external*boolean
При значении true создаст сервер со статическим IP-адресом
- addresses.item.floatingip_idstring
Если в проекте уже есть плавающий IP, то, передав ID этого IP, его можно подключить на этапе создания
- addresses.item.version*integer
Версия IP. Либо 4, Либо 6
- addresses.item.with_floatingboolean
При значении true создаст плавающий IP и подключит его к серверу
- flavor*object
Объект, указывающий количество ресурсов сервера
- flavor.ram*integer
Количество RAM создаваемого сервера
- flavor.vcpus*integer
Количество vCPU создаваемого сервера
- imagestring
Образ операционной системы, используемый для создания сервера
- keypairsarray
Массив SSH-ключей сервера
- keypairs.itemstring
Значение SSH-ключа, передаваемого на сервер
- licensesarray
Массив лицензий сервера
- licenses.itemobject
Объект, содержащий параметры лицензии сервера
- licenses.item.addon*string
Тип лицензии. Например ISPmanager или Windows Server
- licenses.item.namestring
Наименование лицензии. Необходим для определения конкретной лицензии одного типа, если их несколько.
- licenses.item.valueinteger
Количество лицензий. Может потребоваться для ПО с несколькими однотипными лицензиями
- name*string
Имя сервера
- recipestring
Рецепт доп. ПО, используемый для создания сервера
- storages*array
Массив дисков сервера
- storages.item*object
Элемент, представляющий диск
- storages.item.bootableboolean
Является ли диск загрузочным. Только один диск, подключенный к серверу может быть загрузочным, на остальные диски ограничений нет.
- storages.item.size*integer
Размер диска сервера в гигабайтах
- storages.item.storage_typestring
Тип диска.
volume
- для сетевых дисков,local
- для локальных - user_datastring
Пользовательский скрипт cloud-init в виде строки base64
- volumestring
Идентификатор диска, подключаемого к серверу
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.created_instring
Дата создания сервера
- result.disk_dataarray
Список, содержащий объекты дисков сервера
- result.disk_data.itemobject
Объект, содержащий информацию о диске
- result.disk_data.item.idstring
Уникальный идентификатор диска
- result.disk_data.item.linksarray
Список ссылок на детальную информацию о диске
- result.disk_data.item.links.itemobject
Объект, содержащий ссылку и версию API
- result.disk_data.item.links.item.hrefstring
Ссылка
- result.disk_data.item.links.item.relstring
Версия API
- result.disk_data.item.storage_typestring
Тип диска.
volume
- для сетевых дисков,local
- для локальных - result.flavorobject
Шаблон, используемый для создания сервера.
- result.flavor.raminteger
Количество RAM
- result.flavor.vcpusinteger
Количество vCPU
- result.idstring
Уникальный идентификатор сервера
- result.imagestring
Образ операционной системы, используемый для создания сервера
- result.linksarray
Список ссылок на детальную информацию о сервере
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя сервера
- result.statusstring
Статус сервера
Создать сервер
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{object_id}/servers" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post( url = URL, headers = HEADERS, json = { "name": "test", "flavor": { "ram": 2, "vcpus": 1 }, "storages": [ { "bootable": true, "size": 10, "storage_type": "local" }, { "size": 20, "type": "storage" } ], "addresses": [ { "ddos_protection": true, "external": true, "version": 4, "with_floating": true } ], "image": "25b600e9-8026-46e3-9c89-f002b24b0842", "recipe": "e53e9b62-dd91-4a41-a794-4d6533b8139e", "keypairs": [ "5e13f293-bcae-4551-b437-ca8cba47ce03" ] } )
{ "code": 201, "title": "Created", "result": { "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/servers/934d0fff-a3fc-4c43-8b0c-2f4762a7f63d/detail" } ], "name": "test", "flavor": { "vcpus": 1, "ram": 2048 }, "status": "BUILDING", "id": "934d0fff-a3fc-4c43-8b0c-2f4762a7f63d", "disk_data": [ { "id": "cc7f8329-3083-412e-9c07-b59d06d895f4", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/volumes/cc7f8329-3083-412e-9c07-b59d06d895f4/detail" } ], "storage_type": "volume" }, { "id": "d6595d27-83d6-472f-85d4-97eeb8c6f26b", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/local-disks/d6595d27-83d6-472f-85d4-97eeb8c6f26b/detail" } ], "storage_type": "local" } ], "created_in": "2023-07-17T04:27:45.499221+00:00", "image": "25b600e9-8026-46e3-9c89-f002b24b0842" } }
Удаление сервера
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
- clear_fstabboolean
Флаг очистки fstab
- delete_addressesarray,
stringМассив, содержащий список удаляемых адресов
- delete_volumesarray,
stringСписок удаляемых виртуальных дисков
Формат ответа
Удаление сервера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{object_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Сервер (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса.
- result.addressesarray
Массив IP-адресов сервера
- result.addresses.itemobject
Элемент, представляющий IP-адрес сервера
- result.addresses.item.ddos_protectionboolean
Защита от DDoS-атак
- result.addresses.item.externalboolean
Является ли IP-адрес внешним
- result.addresses.item.idstring
Идентификатор IP-адреса
- result.addresses.item.mac_addrstring
MAC-адрес интерфейса
- result.addresses.item.namestring
Имя IP-адреса
- result.addresses.item.ptrstring
Значение PTR-записи IP-адреса
- result.addresses.item.typestring
Тип IP-адреса
- result.addresses.item.versioninteger
Версия IP-адреса
- result.created_instring
Дата создания сервера
- result.disk_dataarray
Список, содержащий объекты дисков сервера
- result.disk_data.itemobject
Объект, содержащий информацию о диске
- result.disk_data.item.idstring
Уникальный идентификатор диска
- result.disk_data.item.linksarray
Список ссылок на детальную информацию о диске
- result.disk_data.item.links.itemobject
Объект, содержащий ссылку и версию API
- result.disk_data.item.links.item.hrefstring
Ссылка
- result.disk_data.item.links.item.relstring
Версия API
- result.disk_data.item.storage_typestring
Тип диска.
volume
- для сетевых дисков,local
- для локальных - result.flavorobject
Шаблон, используемый для создания сервера
- result.flavor.raminteger
Количество RAM
- result.flavor.vcpusinteger
Количество vCPU
- result.guest_agentboolean
Установлен ли guest-agent в систему
- result.idstring
Уникальный идентификатор сервера
- result.imagestring
Образ операционной системы, используемый для создания сервера
- result.namestring
Имя сервера
- result.project_idstring
Уникальный идентификатор проекта
- result.recipestring
Рецепт доп. ПО, используемый для создания сервера
- result.rescue_modestring
Находится ли сервер в режиме восстановления
- result.statusstring
Статус сервера
Сервер (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{object_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "name": "test", "guest_agent": true, "addresses": [ { "ddos_protection": true, "name": "82.202.173.237", "mac_addr": "02:8b:72:43:40:d0", "ptr": "default.clo.ru", "id": "423e8ca6-bb34-43a6-8689-2e85d1a012dd", "type": "FIXED", "version": 4, "external": true } ], "flavor":{ "vcpus": 1, "ram": 2048 }, "status": "ACTIVE", "id": "934d0fff-a3fc-4c43-8b0c-2f4762a7f63d", "project_id": "8104913be7b44ac4871b106e8104e781", "disk_data": [ { "id": "d6595d27-83d6-472f-85d4-97eeb8c6f26b", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/local-disks/d6595d27-83d6-472f-85d4-97eeb8c6f26b/detail" } ], "storage_type": "local" } ], "rescue_mode": "NO", "recipe": "e53e9b62-dd91-4a41-a794-4d6533b8139e", "created_in": "2023-07-17T04:27:45+00:00", "image": "25b600e9-8026-46e3-9c89-f002b24b0842" } }
Смена пароля сервера
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
- password*string
Новое значение пароля
Формат ответа
Смена пароля сервера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{object_id}/password" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS, json = {'password': 'my_strong_password'})
Изменение PTR-записи статического IP
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
- value*string
Новое значение PTR-записи
Формат ответа
Изменение PTR-записи статического IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/ptr" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.put(url = URL, headers = HEADERS, json = {"value":"default.clo.ru"})
Перезагрузить сервер
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
- rebootobject
Объект, содержащий параметры запроса на перезагрузку
- reboot.type*string
Либо HARD, либо SOFT
Формат ответа
Перезагрузить сервер
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{object_id}/reboot" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {'reboot': {'type': 'SOFT'}})
{ "code": 202, "title": "Accepted", "result": null }
Изменить параметры сервера
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
- ram*integer
Новое значение RAM
- vcpus*integer
Новое значение vCPU
Формат ответа
Изменить параметры сервера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{object_id}/resize" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {'ram': 4, 'vcpus': 2})
{ "code": 202, "title": "Accepted", "result": null }
Включить сервер
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
Формат ответа
Включить сервер
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{server_id}/start" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 202, "title": "Accepted", "result": null }
Выключить сервер
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса GET /v1/projects/{project_id}/servers.
Формат ответа
Выключить сервер
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{object_id}/stop" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 202, "title": "Accepted", "result": null }
Диски
Диски в инфраструктуре CLO — аналоги физических дисков для хранения оперативной информации и работы с ней. Диски отличаются по типу и назначению.
Локальный диск (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- local_disk_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса v1/projects/{project_id}/local-disks
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.attached_to_serverobject
Объект содержащий информацию о сервере, к которому прикреплен диск
- result.attached_to_server.idstring
Уникальный идентификатор сервера
- result.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- result.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.attached_to_server.links.item.hrefstring
Ссылка
- result.attached_to_server.links.item.relstring
Версия API
- result.bootableboolean
Является ли диск загрузочным
- result.created_instring
Дата создания диска
- result.idstring
Уникальный идентификатор диска
- result.linksarray
Массив ссылок на детальную информацию о локальном диске
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя диска
- result.sizeinteger
Размер диска в гигабайтах
- result.statusstring
Статус локального диска
Локальный диск (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/local-disks/{local_disk_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "size": 20, "status": "IN-USE", "bootable": true, "created_in": "2021-05-07T03:32:04Z", "name": "Local disk for ubuntu20_1cpu_2048ram", "id": "c5335cdd-a386-4f7e-9c00-fa361b3ae9c6", "attached_to_server": { "id": "dd30177a-2c06-46a8-8f1d-19830f44d389", links": [ { "href": "https://api.clo.ru/v1/servers/dd30177a-2c06-46a8-8f1d-19830f44d389/detail", "rel": "self" } ] }, "links": [ { "href": "https://api.clo.ru/v1/local-disks/c5335cdd-a386-4f7e-9c00-fa361b3ae9c6/detail", "rel": "self" } ] } }
Локальные диски (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в списке
- resultsarray
Массив локальных дисков
- results.itemobject
Объект, содержащий параметры локального диска
- results.item.attached_to_serverobject
Объект содержащий информацию о сервере, к которому прикреплен диск
- results.item.attached_to_server.idstring
Уникальный идентификатор сервера
- results.item.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- results.item.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.attached_to_server.links.item.hrefstring
Ссылка
- results.item.attached_to_server.links.item.relstring
Версия API
- results.item.bootableboolean
Является ли диск загрузочным. В случае локальных дисков всегда будет возвращать true
- results.item.created_instring
Дата создания диска
- results.item.idstring
Уникальный идентификатор диска
- results.item.linksarray
Массив ссылок на детальную информацию о локальном диске
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.namestring
Имя локального диска
- results.item.sizeinteger
Размер диска в гигабайтах
- results.item.statusstring
Статус локального диска
Локальные диски (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/local-disks" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "size": 20, "status": "IN-USE", "bootable": true, "created_in": "2021-05-07T03:32:04Z", "name": "Local disk for ubuntu20_1cpu_2048ram", "id": "c5335cdd-a386-4f7e-9c00-fa361b3ae9c6", "attached_to_server": { "id": "dd30177a-2c06-46a8-8f1d-19830f44d389", "links": [ { "href": "https://api.clo.ru/v1/servers/dd30177a-2c06-46a8-8f1d-19830f44d389/detail", "rel": "self" } ] }, "links": [ { "href": "https://api.clo.ru/v1/local-disks/c5335cdd-a386-4f7e-9c00-fa361b3ae9c6/detail", "rel": "self" } ] } ] "count": 1 }
Сетевые диски (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в списке
- resultsarray
Массив сетевых дисков
- results.itemobject
Объект, содержащий параметры сетевого диска
- results.item.attached_to_serverobject
Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск
- results.item.attached_to_server.idstring
Уникальный идентификатор сервера
- results.item.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- results.item.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.attached_to_server.links.item.hrefstring
Ссылка
- results.item.attached_to_server.links.item.relstring
Версия API
- results.item.bootableboolean
Является ли сетевой диск загрузочным
- results.item.created_instring
Дата создания диска
- results.item.descriptionstring
Комментарий к диску
- results.item.devicestring
Путь до устройства в операционной системе
- results.item.idstring
Уникальный идентификатор сетевого диска
- results.item.linksarray
Массив ссылок на детальную информацию о сетевом диске
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.namestring
Имя сетевого диска
- results.item.sizeinteger
Размер диска в гигабайтах
- results.item.statusstring
Статус сетевого диска
- results.item.undetachableboolean
Является ли диск неотключаемым
Сетевые диски (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/volumes" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 2, "results": [ { "bootable": true, "name": "6159d234-ed37-4921-8c5f-90177d3287fb", "attached_to_server": { "id": "00c3903d-2974-47fb-bffe-86aa4c7b25a1", "links": [ { "href": "https://api.clo.ru/v1/servers/00c3903d-2974-47fb-bffe-86aa4c7b25a1/detail", "rel": "self" } ] }, "undetachable": false, "status": "IN-USE", "created_in": "2021-05-08T06:00:10Z", "size": 20, "device": "/dev/vda", "links": [ { "href": "https://api.clo.ru/v1/volumes/e84a00a1-c4d1-4627-baa4-37a958ddf48e/detail", "rel": "self" } ], "id": "e84a00a1-c4d1-4627-baa4-37a958ddf48e" }, { "bootable": true, "name": "13921f5d-8066-459b-a48e-b255b86d9628", "attached_to_server": { "id": "692b94d3-f9cb-4609-ad7c-7bc234892a6b", "links": [ { "href": "https://api.clo.ru/v1/servers/692b94d3-f9cb-4609-ad7c-7bc234892a6b/detail", "rel": "self" } ] }, "undetachable": false, "status": "IN-USE", "created_in": "2021-05-08T06:06:59Z", "size": 20, "device": "/dev/vda", "links": [ { "href": "https://api.clo.ru/v1/volumes/32b1bb31-3d67-4ef0-a833-a3ed7bffb6a8/detail", "rel": "self" } ] "id": "32b1bb31-3d67-4ef0-a833-a3ed7bffb6a8" } ] }
Создать сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects
- autorenameboolean
Автоматическое переименование диска
- name*string
Имя диска
- size*integer
Размер диска в гигабайтах
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.attached_to_serverobject
Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск. Отсутствует, если диск не подключен к серверу
- result.attached_to_server.idstring
Уникальный идентификатор сервера
- result.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- result.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.attached_to_server.links.item.hrefstring
Ссылка
- result.attached_to_server.links.item.relstring
Версия API
- result.bootableboolean
Является ли диск загрузочным
- result.created_instring
Дата создания диска
- result.descriptionstring
Комментарий к диску
- result.devicestring
Имя устройства в операционной системе
- result.idstring
Уникальный идентификатор диска
- result.linksarray
Массив ссылок на детальную информацию о сетевом диске
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя диска.
- result.sizeinteger
Размер диска в гигабайтах
- result.statusstring
Статус сетевого диска
- result.undetachableboolean
Является ли диск неотключаемым
Создать сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/volumes" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post( url = URL, headers = HEADERS, json = { "name": "test", "size": 10, "autorename": True} )
{ "code": 201, "title": "Created", "result": { "size": 10, "status": "PROCESSING", "bootable": false, "created_in": "2021-05-08T08:00:19Z", "name": "test", "id": "ed735e62-3003-47e1-beaa-caf7f2221319", "description": "", "attached_to_server": null, "links": [ { "href": "https://api.clo.ru/v1/volumes/ed735e62-3003-47e1-beaa-caf7f2221319/detail", "rel": "self" } ] } }
Подключить сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes
- mount_pathstring
Путь для подключения диска внутри файловой системы
- server_id*string
Уникальный идентификатор сервера, к которому нужно подключить диск
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.devicestring
Имя устройства в операционной системе
- result.mount_cmdstring
Команда монтирования устройства
- result.mountpointstring
Точка монтирования диска в операционной системе
- result.serverobject
Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск
- result.server.idstring
Уникальный идентификатор сервера
- result.server.linksarray
Массив ссылок на детальную информацию о сервере
- result.server.links.itemobject
Объект, содержащий ссылку и версию API
- result.server.links.item.hrefstring
Ссылка
- result.server.links.item.relstring
Версия API
- result.volumeobject
Объект содержащий в себе информацию о сетевом диске
- result.volume.idstring
Уникальный идентификатор сетевого диска
- result.volume.linksarray
Массив ссылок на детальную информацию о сетевом диске
- result.volume.links.itemobject
Объект, содержащий ссылку и версию API
- result.volume.links.item.hrefstring
Ссылка
- result.volume.links.item.relstring
Версия API
Подключить сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}/attach" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {'server_id': '7a7bed21-4816-4f24-93d7-fb019e6c3f7a'})
{ "code": 202, "title": "Accepted", "result": { "volume": { "id": "2ef2747a-b236-4a3f-891c-c0e634fd45ce", "links": [ { "href": "https://api.clo.ru/v1/volumes/2ef2747a-b236-4a3f-891c-c0e634fd45ce/detail", "rel": "self" } ] }, "server": { "id": "b7cd3947-84af-415a-ab26-59237db94221", "links": [ { "href": "https://api.clo.ru/v1/servers/b7cd3947-84af-415a-ab26-59237db94221/detail", "rel": "self" } ] }, "mountpoint": "/mnt/MyVolume", "device": "/dev/vdb", "mount_cmd": "mount -o discard, defaults /dev/vdb /mnt/MyVolume" } }
Удалить сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.
Формат ответа
Удалить сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Отключить сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.
- forceboolean
Игнорировать ошибки
Формат ответа
Отключить сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}/detach" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {'force': False})
{ "code": 202, "title": "Accepted" }
Сетевой диск (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.attached_to_serverobject
Объект содержащий в себе информацию о сервере, к которому прикреплён сетевой диск
- result.attached_to_server.idstring
Уникальный идентификатор сервера
- result.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- result.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.attached_to_server.links.item.hrefstring
Ссылка
- result.attached_to_server.links.item.relstring
Версия API
- result.bootableboolean
Является ли диск загрузочным
- result.created_instring
Дата создания диска
- result.descriptionstring
Комментарий к диску
- result.devicestring
Имя устройства в операционной системе
- result.idstring
Уникальный идентификатор диска
- result.linksarray
Массив ссылок на детальную информацию о сетевом диске
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя диска
- result.sizeinteger
Размер диска в гигабайтах
- result.statusstring
Статус сетевого диска
- result.undetachableboolean
Является ли диск неотключаемым
Сетевой диск (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "size": 20, "status": "AVAILABLE", "id": "2ef2747a-b236-4a3f-891c-c0e634fd45ce", "links": [ { "href": "https://api.clo.ru/v1/volumes/2ef2747a-b236-4a3f-891c-c0e634fd45ce/detail", "rel": "self" } ], "bootable": false, "created_in": "2021-05-11T10:52:30Z", "name": "MyVolume", "attached_to_server": null, "description": "", "device": null } }
Увеличить сетевой диск
Параметры запроса
- ПараметрТип данныхОписание
- volume_id*stringПередается в path.
Уникальный идентификатор диска. Можно получить из запроса GET /v1/projects/{project_id}/volumes.
- new_size*integer
Новый размер диска в гигабайтах
Формат ответа
Увеличить сетевой диск
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/volumes/{volume_id}/extend" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {'new_size': 20})
{ "code": 202, "title": "Accepted", "result": null }
Плавающие IP
Плавающий IP-адрес существует отдельно от сервера. Его можно отключить от сервера и подключить к другому в любой момент. После подключения адрес настраивается автоматически. Адрес остается закрепленным за клиентом всё время, пока клиент явно не удалит его. Через плавающий адрес сетевые операции проходят медленнее, чем через статический, поскольку адрес работает через NAT.
Подключить IP к серверу или балансировщику
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
- server_id*string
Уникальный идентификатор сервера, к которому нужно подключить адрес
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий информацию об адресе
- result.attached_to_loadbalancerobject
Информация о балансировщике, к которому подключен IP-адрес
- result.attached_to_loadbalancer.idstring
Идентификатор балансировщика
- result.attached_to_loadbalancer.linksarray
Массив ссылок на балансировщики, связанные с IP-адресом
- result.attached_to_loadbalancer.links.itemobject
Ссылка на балансировщик
- result.attached_to_loadbalancer.links.item.hrefstring
URL ссылки на балансировщик
- result.attached_to_loadbalancer.links.item.relstring
Версия API
- result.attached_to_serverobject
Информация о сервере, к которому подключен IP
- result.attached_to_server.idstring
Уникальный идентификатор сервера
- result.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- result.attached_to_server.links.itemobject
Ссылка на сервер
- result.attached_to_server.links.item.hrefstring
URL-адрес ссылки на сервер
- result.attached_to_server.links.item.relstring
Версия API
- result.created_instring
Дата создания адреса
- result.ddos_protectionboolean
Защита от DDoS-атак
- result.fixed_ip_addressstring
Внешний фиксированный IP-адрес
- result.floating_ip_addressstring
IP адрес в серой сети, к которому подключен IP-адрес
- result.idstring
Уникальный идентификатор адреса
- result.linksarray
Массив ссылок на детальную информацию об IP-адресе
- result.links.itemobject
Ссылка на IP-адрес
- result.links.item.hrefstring
URL-адрес ссылки на IP
- result.links.item.relstring
Версия API
- result.ptrstring
Значение PTR-записи
- result.statusstring
Статус IP-адреса
- result.updated_instring
Время последнего обновления элемента
Подключить IP к серверу или балансировщику
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}/attach" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending post request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {'server_id': '0efafbaf-6918-4070-bc9b-e573b14fc7a3'})
{ "code": 200, "title": "OK", "result": { "updated_in": "2023-07-10T06:46:22.865982+00:00", "ddos_protection": false, "id": "ba86d544-905c-4f8c-add1-ea6ead3fda2a", "ptr": "default.clo.ru", "created_in": "2023-07-10T06:23:43+00:00", "status": "PROCESSING", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/floatingips/ba86d544-905c-4f8c-add1-ea6ead3fda2a/detail" } ] } }
Удалить плавающий IP
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
Формат ответа
Удалить плавающий IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Отключить плавающий IP
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
Формат ответа
Отключить плавающий IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}/detach" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK" }
Плавающий IP (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.attached_to_loadbalancerobject
Информация о балансировщике, к которому подключен внешний IP
- result.attached_to_loadbalancer.idstring
Идентификатор балансировщика
- result.attached_to_loadbalancer.linksarray
Массив ссылок на балансировщик
- result.attached_to_loadbalancer.links.itemobject
Ссылка на балансировщик
- result.attached_to_loadbalancer.links.item.hrefstring
URL-адрес ссылки на балансировщик
- result.attached_to_loadbalancer.links.item.relstring
Версия API
- result.attached_to_serverobject
Информация о сервере, к которому подключен плавающий IP
- result.attached_to_server.idstring
ID сервера
- result.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- result.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.attached_to_server.links.item.hrefstring
Ссылка
- result.attached_to_server.links.item.relstring
Версия API
- result.created_instring
Дата создания адреса
- result.ddos_protectionboolean
Защита от DDoS-атак
- result.fixed_ip_addressstring
IP адрес в серой сети, к которому подключен плавающий IP
- result.floating_ip_addressstring
IP адрес
- result.idstring
Уникальный идентификатор адреса
- result.linksarray
Массив ссылок на детальную информацию о плавающем IP
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.ptrstring
Значение PTR-записи
- result.statusstring
Статус плавающего IP
- result.updated_instring
Время последнего обновления элемента
Плавающий IP (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "id": "e4630ff9-6b93-4dac-8c8a-37721f46ed41", "created_in": "2021-05-12T09:40:21+00:00", "status": "DOWN", "links": [ { "href": "https://api.clo.ru/v1/floatingips/e4630ff9-6b93-4dac-8c8a-37721f46ed41/detail", "rel": "self" } ], "attached_to_server": null, "floating_ip_address": "195.140.146.77", "updated_in": "2021-05-12T09:41:38+00:00", "ddos_protection": false, "ptr": "default.clo.ru" } }
Изменение PTR-записи плавающего IP
Параметры запроса
- ПараметрТип данныхОписание
- floating_id*stringПередается в path.
Уникальный идентификатор адреса. Можно получить из запроса GET /v1/projects/{project_id}/floatingips.
- value*string
Новое значение PTR-записи
Формат ответа
Изменение PTR-записи плавающего IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/floatingips/{floating_id}/ptr" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.put(url = URL, headers = HEADERS, json = {"value": "default.clo.ru"})
Список плавающих IP
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в результирующем ответе
- resultsarray
Массив плавающих IP
- results.itemobject
Объект, содержащий параметры плавающего IP
- results.item.attached_to_loadbalancerobject
Информация о балансировщике, к кторому прикреплён IP-адрес
- results.item.attached_to_loadbalancer.idstring
Идентификатор балансировщика
- results.item.attached_to_loadbalancer.linksarray
Массив ссылок на балансировщик
- results.item.attached_to_loadbalancer.links.itemobject
Ссылка на балансировщик
- results.item.attached_to_loadbalancer.links.item.hrefstring
URL-адрес ссылки на балансировщик
- results.item.attached_to_loadbalancer.links.item.relstring
Версия API
- results.item.attached_to_serverobject
Информация о сервере, к которому подключен плавающий IP
- results.item.attached_to_server.idstring
Уникальный идентификатор сервера
- results.item.attached_to_server.linksarray
Массив ссылок на детальную информацию о сервере
- results.item.attached_to_server.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.attached_to_server.links.item.hrefstring
Ссылка
- results.item.attached_to_server.links.item.relstring
Версия API
- results.item.created_instring
Дата создания
- results.item.ddos_protectionboolean
Защита от DDoS-атак
- results.item.fixed_ip_addressstring
IP адрес в серой сети, к которому подключен плавающий IP
- results.item.floating_ip_addressstring
IP адрес
- results.item.idstring
Уникальный идентификатор плавающего IP
- results.item.linksarray
Массив ссылок на детальную информацию о плавающем IP
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.ptrstring
Значение PTR-записи
- results.item.statusstring
Состояние плавающего IP адреса
- results.item.updated_instring
Время последнего обновления элемента
Список плавающих IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/floatingips" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "results": [ { "id": "e4630ff9-6b93-4dac-8c8a-37721f46ed41", "created_in": "2021-05-12T09:40:21Z", "status": "DOWN", "links": [ { "href": "https://api.clo.ru/v1/floatingips/e4630ff9-6b93-4dac-8c8a-37721f46ed41/detail", "rel": "self" } ], "fixed_ip_address": null, "attached_to_server": null, "floating_ip_address": "195.140.146.77", "updated_in": "2021-05-12T09:41:38Z" } ], "count": 1 }
Создать плавающий IP
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта. Можно получить из запроса GET /v1/projects.
- ddos_protectionboolean
При установке флага вы получите защищенный от DDoS-атак IP-адрес
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий результаты запроса
- result.fixed_ip_addressstring
Локальный IP-адрес, к которому подключен плавающий IP
- result.floating_ip_addressstring
IP адрес
- result.idstring
Уникальный идентификатор IP-адреса
- result.linksarray
Список ссылок на детальную информацию об IP-адресе
- result.links.itemobject
Ссылка на IP-адрес
- result.links.item.hrefstring
URL-адрес ссылки на IP
- result.links.item.relstring
Версия API
Создать плавающий IP
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/floatingips" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {"ddos_protection": True})
{ "code": 201, "title": "Created", "result": { "id": "e4630ff9-6b93-4dac-8c8a-37721f46ed41", "floating_ip_address": null, "links": [ { "href": "https://api.clo.ru/v1/floatingips/e4630ff9-6b93-4dac-8c8a-37721f46ed41/detail", "rel": "self" } ] } }
Снапшоты
“Снимок” состояния сервера на определенный момент. Создается за пару секунд, не мешает работе сервера и хранится 24 часа. Из снимка можно восстановить сервер — создать новый, который будет копией исходного сервера на момент создания снапшота.
Снапшот (список)
Параметры запроса
- ПараметрТип данныхОписание
- project_id*stringПередается в path.
Уникальный идентификатор проекта
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в списке
- resultsarray
Массив снапшотов
- results.itemobject
Объект, содержащий параметры снапшота
- results.item.child_serversarray
Список дочерних серверов
- results.item.child_servers.itemobject
Объект, содержащий информацию о дочернем сервере
- results.item.child_servers.item.idstring
Уникальный идентификатор сервера
- results.item.child_servers.item.linksarray
Список ссылок на детальную информацию о сервере
- results.item.child_servers.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.child_servers.item.links.item.hrefstring
Ссылка
- results.item.child_servers.item.links.item.relstring
Версия API
- results.item.created_instring
Дата создания снапшота
- results.item.deleted_instring
Время в которое снапшот будет удалён
- results.item.idstring
Уникальный идентификатор снапшота
- results.item.linksarray
Список ссылок на детальную информацию о снапшоте
- results.item.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.links.item.hrefstring
Ссылка
- results.item.links.item.relstring
Версия API
- results.item.namestring
Название снапшота
- results.item.parent_serverobject
Объект, содержащий информацию о сервере, с которого был сделан снапшот
- results.item.parent_server.idstring
Уникальный идентификатор сервера
- results.item.parent_server.linksarray
Список ссылок на детальную информацию о сервере
- results.item.parent_server.links.itemobject
Объект, содержащий ссылку и версию API
- results.item.parent_server.links.item.hrefstring
Ссылка
- results.item.parent_server.links.item.relstring
Версия API
- results.item.sizeinteger
Размер снапшота в гигабайтах
- results.item.statusstring
Статус снапшота
Снапшот (список)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/snapshots" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "child_servers": [], "size": 20971520, "deleted_in": "2021-05-12T20:50:56Z", "status": "ACTIVE", "parent_server": { "id": "0efafbaf-6918-4070-bc9b-e573b14fc7a3", "links": [ { "href": "https://api.clo.ru/v1/servers/0efafbaf-6918-4070-bc9b-e573b14fc7a3/detail", "rel": "self" } ] }, "id": "8c1f5fea-dd4c-4849-b416-6909f0bdea40", "links": [ { "href": "https://api.clo.ru/v1/snapshots/8c1f5fea-dd4c-4849-b416-6909f0bdea40/detail", "rel": "self" } ], "created_in": "2021-05-12T08:50:56Z", "name": "ubuntu20_1cpu_2048ram_16:50_12-05-2021" } ] }
Создать снапшот
Параметры запроса
- ПараметрТип данныхОписание
- server_id*stringПередается в path.
Уникальный идентификатор сервера. Можно получить из запроса v1/projects/{project_id}/servers
- name*string
Имя снапшота
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий результаты запроса
- result.child_serversarray
Массив, содержащий информацию о созданных с помощью снапшота серверах
- result.child_servers.itemobject
Сервер, созданный из снапшота
- result.child_servers.item.idstring
Идентификатор сервера
- result.child_servers.item.linksarray
Массив ссылок на сервер
- result.child_servers.item.links.itemobject
Ссылка на сервер
- result.child_servers.item.links.item.hrefstring
URL-адрес ссылки на сервер
- result.child_servers.item.links.item.relstring
Версия API
- result.created_instring
Время создания снапшота
- result.deleted_instring
Время удаления снапшота
- result.idstring
Идентификатор снапшота
- result.linksarray
Массив ссылок на снапшот
- result.links.itemobject
Ссылка на снапшот
- result.links.item.hrefstring
URL-адрес ссылки
- result.links.item.relstring
Версия API
- result.namestring
Имя снапшота
- result.parent_serverobject
Объект, содержащий сведеняи о сервере, с которого был сделан снапшот
- result.parent_server.idstring
Идентификатор сервера, с которого был сделан снапшот
- result.parent_server.linksarray
Массив ссылок на исходный сервер
- result.parent_server.links.itemobject
Ссылка на исходный сервер
- result.parent_server.links.item.hrefstring
URL-адрес ссылки на сервер
- result.parent_server.links.item.relstring
Версия API
- result.sizeinteger
Размер снапшота
- result.statusstring
Состояние снапшота
Создать снапшот
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/servers/{object_id}/snapshot" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {'name': 'my_first_snapshot'})
{ "code": 202, "title": "Accepted", "result": { "id": "fa19daa5-ed77-4a01-817f-3a334c8bed30", "links": [ { "href": "https://api.clo.ru/v1/snapshots/fa19daa5-ed77-4a01-817f-3a334c8bed30/detail", "rel": "self" } ] } }
Удалить снапшот
Параметры запроса
- ПараметрТип данныхОписание
- snapshot_id*stringПередается в path.
Уникальный идентификатор снапшота
Формат ответа
Удалить снапшот
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/snapshots/{snapshot_id}/delete" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Снапшот (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- snapshot_id*stringПередается в path.
Уникальный идентификатор снапшота
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий параметры снапшота
- result.child_serversarray
Список дочерних серверов
- result.child_servers.itemobject
Объект, содержащий информацию о дочернем сервере
- result.child_servers.item.idstring
ID сервера
- result.child_servers.item.linksarray
Список ссылок на детальную информацию о сервере
- result.child_servers.item.links.itemobject
Объект, содержащий ссылку и версию API
- result.child_servers.item.links.item.hrefstring
Ссылка
- result.child_servers.item.links.item.relstring
Версия API
- result.created_instring
Дата создания снапшота
- result.deleted_instring
Дата удаления снапшота
- result.idstring
Уникальный идентификатор снапшота
- result.linksarray
Список ссылок на детальную информацию о снапшоте
- result.links.itemobject
Объект, содержащий ссылку и версию API
- result.links.item.hrefstring
Ссылка
- result.links.item.relstring
Версия API
- result.namestring
Имя снапшота
- result.parent_serverobject
Объект, содержащий информацию о сервере, с которого был сделан снапшот
- result.parent_server.idstring
Уникальный идентификатор сервера
- result.parent_server.linksarray
Список ссылок на детальную информацию о сервере
- result.parent_server.links.itemobject
Объект, содержащий ссылку и версию API
- result.parent_server.links.item.hrefstring
Ссылка
- result.parent_server.links.item.relstring
Версия API
- result.sizeinteger
Размер снапшота в гигабайтах
- result.statusstring
Статус снапшота
Снапшот (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/snapshots/{snapshot_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "child_servers": [], "size": 20971520, "deleted_in": "2021-05-12T20:50:56Z", "status": "ACTIVE", "parent_server": { "id": "0efafbaf-6918-4070-bc9b-e573b14fc7a3", "links": [ { "href": "https://api.clo.ru/v1/servers/0efafbaf-6918-4070-bc9b-e573b14fc7a3/detail", "rel": "self" } ] }, "id": "8c1f5fea-dd4c-4849-b416-6909f0bdea40", "links": [ { "href": "https://api.clo.ru/v1/snapshots/8c1f5fea-dd4c-4849-b416-6909f0bdea40/detail", "rel": "self" } ], "created_in": "2021-05-12T08:50:56Z", "name": "ubuntu20_1cpu_2048ram_16:50_12-05-2021" } }
Восстановление сервера из снапшота
Параметры запроса
- ПараметрТип данныхОписание
- snapshot_id*stringПередается в path.
ID снапшота
- ddos_protectionboolean
Восстановить сервер с защищенным от DDoS-атак IP
- name*string
Название сервера
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса.
- result.namestring
Название сервера
- result.serverobject
Объект, содержащий информацию о сервере
- result.server.idstring
ID сервера
- result.server.linksarray
Список ссылок на детальную информацию о сервере
- result.server.links.itemobject
Объект, содержащий ссылку и версию API
- result.server.links.item.hrefstring
Ссылка
- result.server.links.item.relstring
Версия API
Восстановление сервера из снапшота
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/snapshots/{snapshot_id}/restore" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending get request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post( url = URL, headers = HEADERS, json = { "name": "restored_server", "ddos_protection": False } )
{ "code": 202, "title": "Accepted", "result": { "name": "restored_server", "server": { "id": "18b24279-ce05-4974-aa9d-ba818d460e4b", "links": [ { "href": "https://api.clo.ru/v1/servers/18b24279-ce05-4974-aa9d-ba818d460e4b/detail", "rel": "self" } ] } } }
SSH-ключи
Ключи нужны для доступа к серверам проекта по протоколу ssh. Используется как альтернатива аутентификации по логину и паролю.
Удалить SSH-ключ
Параметры запроса
- ПараметрТип данныхОписание
- keypair_id*stringПередается в path.
Уникальный идентификатор SSH-ключа, который необходимо удалить
Формат ответа
Удалить SSH-ключ
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/keypairs/{keypair_id}/delete" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
SSH-ключ (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- keypair_id*stringПередается в path.
Уникальный идентификатор SSH-ключа
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.idstring
Уникальный идентификатор SSH-ключа
- result.namestring
Имя ключа
- result.public_keystring
Значение публичного ключа
SSH-ключ (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/keypairs/{keypair_id}/detail" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "id": "d4671e8e-212a-401e-86bf-22d7f0430952", "public_key": "value of public key", "name": "test" } }
Список SSH-ключей
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор объекта, для которого возвращается список ключей
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов в списке
- resultsarray
Массив SSH-ключей
- results.itemobject
Объект, содержащий параметры SSH-ключа
- results.item.idstring
Уникальный идентификатор SSH-ключа
- results.item.namestring
Имя SSH-ключа
- results.item.public_keystring
Значение публичного ключа
Список SSH-ключей
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/keypairs" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "id": "d4671e8e-212a-401e-86bf-22d7f0430952", "public_key": "value of public key", "name": "test" } ] }
Создать SSH-ключ
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор SSH-ключа
- name*string
Имя SSH-ключа
- public_key*string
Значение публичного SSH-ключа
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий в себе результаты запроса
- result.idstring
Уникальный идентификатор SSH-ключа
- result.namestring
Имя SSH-ключа
- result.public_keystring
Значение публичного SSH-ключа
Создать SSH-ключ
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/keypairs" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post( url = URL, headers = HEADERS, json = { 'name': 'test', 'public_key': 'value_of_your_public_ssh_key' } )
{ "code": 201, "title": "Created", "result": { "id": "93fe3a6a-1bda-4845-b7e9-f92e0939e801", "public_key": "public_key_value", "name": "test" } }
Облачные базы данных
Облачные базы данных — это сервис, позволяющий быстро разворачивать кластеры баз данных в облаке проекта CLO.
Удаление бэкапа кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор резервной копии
Формат ответа
Удаление бэкапа кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/backups/{backup_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Ссылка на резервную копию для скачивания
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор резервной копии
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Резервная копия для скачивания
- result.urlstring
Адрес резервной копии для скачивания
Ссылка на резервную копию для скачивания
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/backups/{backup_id}/download" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "url": "https://storage.clo.ru/8104913be7b44ac487" } }
Детали резервной копии кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор резервной копии
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий результаты запроса
- result.backup_enabledboolean
Разрешение создавать резервную копию кластера
- result.cluster_idstring
Идентификатор кластера
- result.created_instring
Дата и время создания кластера
- result.data_sizeinteger
Размер резервной копии кластера
- result.databasesarray
Список баз данных в кластере
- result.databases.itemobject
База данных в кластере
- result.databases.item.admin_usernamestring
Имя администратора БД
- result.databases.item.idstring
Идентификатор базы данных
- result.databases.item.namestring
Имя БД
- result.datastoreobject
Информация о СУБД
- result.datastore.idstring
Идентификатор СУБД
- result.datastore.namestring
Имя СУБД
- result.datastore.versionstring
Версия СУБД
- result.idstring
Идентификатор резервной копии
- result.linksarray
Массив ссылок на резервную копию
- result.links.itemobject
Ссылка на резервную копию
- result.links.item.hrefstring
URL-адрес резервной копии
- result.links.item.relstring
Версия API
- result.namestring
Имя резервной копии
- result.parentstring
Родительский объект резервной копии
- result.sizeinteger
Размер резервной копии
- result.statusstring
Статус резервной копии
- result.typestring
Тип резервной копии
Детали резервной копии кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/backups/{backup_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "data_size": 22229, "status": "AVAILABLE", "type": "FULL", "datastore": { "version": "8.0", "name": "MySQL" }, "name": "Backup_mysql_8", "size": 1625, "databases": [ { "name": "database1", "admin_username": "database1", "id": "3fd0c354-7d7b-4b92-b20d-ac353bbf3171" } ], "created_in": "2024-05-24T13:00:20Z", "links": [ { "href": "http://api.clo.ru/v1/dbaas/backups/ef3e24a1-171b-469e-8ec2-fd69748eefc9", "rel": "self" } ], "cluster_id": "efee51cf-8a9e-4c2c-8917-74edabe5bfe9", "parent": null, "id": "ef3e24a1-171b-469e-8ec2-fd69748eefc9" } }
Создание резервной копии кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
- namestring
Название резервной копии
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий результаты запроса
- result.backup_enabledboolean
Разрешение создавать резервную копию кластера
- result.cluster_idstring
Идентификатор кластера
- result.created_instring
Дата и время создания кластера
- result.data_sizeinteger
Размер резервной копии кластера
- result.databasesarray
Список баз данных в кластере
- result.databases.itemobject
База данных в кластере
- result.databases.item.admin_usernamestring
Имя администратора БД
- result.databases.item.idstring
Идентификатор базы данных
- result.databases.item.namestring
Имя БД
- result.datastoreobject
Информация о СУБД
- result.datastore.idstring
Идентификатор СУБД
- result.datastore.namestring
Имя СУБД
- result.datastore.versionstring
Версия СУБД
- result.idstring
Идентификатор резервной копии
- result.linksarray
Массив ссылок на резервную копию
- result.links.itemobject
Ссылка на резервную копию
- result.links.item.hrefstring
URL-адрес резервной копии
- result.links.item.relstring
Версия API
- result.namestring
Имя резервной копии
- result.parentstring
Родительский объект резервной копии
- result.sizeinteger
Размер резервной копии
- result.statusstring
Статус резервной копии
- result.typestring
Тип резервной копии
Создание резервной копии кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/backup/create" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {"name":"my_backup"})
{ "code": 201, "title": "Created", "result": { "data_size": 0, "status": "BUILD", "type": "FULL", "datastore": { "version": "8.0", "name": "MySQL" }, "name": "Backup_test_mysql_8_2023-05-24T13:00:20.759669", "size": 0, "databases": [ { "name": "database_1", "admin_username": "database_1", "id": "3fd0c354-7d7b-4b92-b20d-ac353bbf3171" } ], "created_in": "2023-05-24T13:00:20.763572Z", "links": [ { "href": "http://api.clo.ru/v1/dbaas/backups/ef3e24a1-171b-469e-8ec2-fd69748eefc9", "rel": "self" } ], "cluster_id": "efee51cf-8a9e-4c2c-8917-74edabe5bfe9", "parent": null, "id": "ef3e24a1-171b-469e-8ec2-fd69748eefc9" } }
Отключение резервного копирования кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
Отключение резервного копирования кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/backup/disable" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": null }
Подключение резервного копирования для кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
Подключение резервного копирования для кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/backup/enable" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": null }
Информация о базах данных в кластере
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество объектов
- resultsarray
Массив объектов (БД), хранимых в кластере
- results.itemobject
Отдельная БД кластера
- results.item.admin_usernamestring
Имя администратора конкретной БД
- results.item.backup_enabledboolean
Разрешение создавать резервные копии БД
- results.item.cluster_idstring
Идентификатор кластера
- results.item.created_instring
Время создания БД
- results.item.idstring
Идентификатор БД
- results.item.linksarray
Массив ссылок на базы данных кластера
- results.item.links.itemobject
Отдельная ссылка на БД
- results.item.links.item.hrefstring
Адрес ссылки на БД
- results.item.links.item.relstring
Версия API
- results.item.namestring
Имя БД
- results.item.statusstring
Статус БД
Информация о базах данных в кластере
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/databases" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "backup_enabled": false, "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/dbaas/databases/cec03e6a-8cb3-44ed-ad42-72879ab4fa40" } ], "name": "database1", "created_in": "2023-05-21T17:00:15Z", "admin_username": "database1", "id": "cec03e6a-8cb3-44ed-ad42-72879ab4fa40", "status": "READY", "cluster_id": "f9b0a0ea-aa28-46f3-8b3e-3fd805fa3b97" } ] }
Создание базы данных
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
- admin_password*string
Пароль администратора
- admin_username*string
Имя администратора
- name*string
Название базы данных
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Созданная БД
- result.admin_usernamestring
Имя администратора созданной БД
- result.backup_enabledboolean
Разрешение создавать резервные копии БД
- result.cluster_idstring
Идентификатор кластера БД
- result.created_instring
Время создания БД
- result.idstring
Идентификатор БД
- result.linksarray
Массив ссылок на БД кластера
- result.links.itemobject
Отдельная ссылка на БД
- result.links.item.hrefstring
Адрес БД
- result.links.item.relstring
Версия API
- result.namestring
Имя БД
- result.statusstring
Статус БД
Создание базы данных
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/databases" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post( url = URL, headers = HEADERS json = { "name": "test_1", "admin_username": "name_1", "admin_password": "yor_strong_password" } )
{ "code": 201, "title": "Created", "result": { "admin_username": "test_1", "name": "name_1", "links": [ { "rel": "self", "href": "https://api.clo.ru/v1/dbaas/databases/2d510717-bb14-48c6-9223-7a430143ab5f" } ], "backup_enabled": false, "id": "2d510717-bb14-48c6-9223-7a430143ab5f", "created_in": "2022-12-31T17:12:52.188467Z", "status": "BUILD", "cluster_id": "9e7f4706-c514-41bb-96ae-a263a32c441c" } }
Удаление кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
Удаление кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Остановка кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий результаты запроса
- result.backup_enabledboolean
Разрешить резервное копирование кластера
- result.backup_hourinteger
Время создания резервной копии
- result.cluster_idstring
Идентификатор кластера
- result.created_instring
Дата создания кластера
- result.databases_countinteger
Количество баз данных в кластере
- result.datastoreobject
Используемая СУБД
- result.datastore.idstring
Идентификатор СУБД
- result.datastore.namestring
Название СУБД
- result.datastore.versionstring
Версия СУБД
- result.external_addressstring
Внешний адрес кластера
- result.flavorobject
Ресурсы нод кластера
- result.flavor.raminteger
Размер оперативной памяти (в КБ)
- result.flavor.vcpusinteger
Количество vCPU
- result.idstring
Идентификатор ноды
- result.internal_addressstring
Внутренний адрес кластера
- result.linksarray
Массив ссылок на кластер
- result.links.itemobject
Ссылка на кластер
- result.links.item.hrefstring
URL ссылки
- result.links.item.relstring
Версия API
- result.namestring
Имя кластера
- result.nodes_countinteger
Количество нод
- result.statusstring
Статус кластера
- result.storage_sizeinteger
Размер хранилища
- result.storage_used_KBinteger
Используемый объём хранилища (в Кб)
- result.system_disk_sizeinteger
Размер системного диска кластера
Остановка кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/disable" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 202, "title": "Accepted", "result": { "flavor": { "ram": 2048, "vcpus": 1 }, "nodes_count": 2, "datastore": { "name": "MySQL", "version": "8.0", "id": "99c839eb-9679-4e10-8f54-99125af9b2dc" }, "external_address": null, "backup_hour": 23, "name": "test_mysql_8", "system_disk_size": 10, "backup_enabled": true, "id": "9e7f4706-c514-41bb-96ae-a263a32c441c", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/dbaas/clusters/f0ed7719-ecbb-4ac4-8062-818c668b3906" } ], "internal_address": "8bd82f91-1d1d-42af-a820-db6d66a70d8e", "databases_count": 1, "created_in": "2022-12-28T12:20:15Z", "status": "STOPPING", "storage_used_KB": 2191523, "storage_size": 20 } }
Запуск кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Запущенный кластер
- result.backup_enabledboolean
Разрешить резервное копирование кластера
- result.backup_hourinteger
Время создания резервной копии
- result.cluster_idstring
Идентификатор кластера
- result.created_instring
Дата создания кластера
- result.databases_countinteger
Количество баз данных в кластере
- result.datastoreobject
Используемая СУБД
- result.datastore.idstring
Идентификатор СУБД
- result.datastore.namestring
Название СУБД
- result.datastore.versionstring
Версия СУБД
- result.external_addressstring
Внешний адрес кластера
- result.flavorobject
Ресурсы нод кластера
- result.flavor.raminteger
Размер оперативной памяти (в КБ)
- result.flavor.vcpusinteger
Количество vCPU
- result.idstring
Идентификатор ноды
- result.internal_addressstring
Внутренний адрес кластера
- result.linksarray
Массив ссылок на кластер
- result.links.itemobject
Ссылка на кластер
- result.links.item.hrefstring
URL ссылки
- result.links.item.relstring
Версия API
- result.namestring
Имя кластера
- result.nodes_countinteger
Количество нод
- result.statusstring
Статус кластера
- result.storage_sizeinteger
Размер хранилища
- result.storage_used_KBinteger
Используемый объём хранилища (в килобайтах)
- result.system_disk_sizeinteger
Размер системного диска кластера
Запуск кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/enable" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 202, "title": "Accepted", "result": { "flavor": { "ram": 2048, "vcpus": 1 }, "nodes_count": 2, "datastore": { "name": "MySQL", "version": "8.0", "id": "99c839eb-9679-4e10-8f54-99125af9b2dc" }, "external_address": null, "backup_hour": 23, "name": "test_mysql_8", "system_disk_size": 10, "backup_enabled": true, "id": "9e7f4706-c514-41bb-96ae-a263a32c441c", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/dbaas/clusters/f0ed7719-ecbb-4ac4-8062-818c668b3906" } ], "internal_address": "8bd82f91-1d1d-42af-a820-db6d66a70d8e", "databases_count": 1, "created_in": "2022-12-28T12:20:15Z", "status": "ACTIVE", "storage_used_KB": 2191523, "storage_size": 20 } }
Кластер (подробности)
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Выбранный кластер
- result.backup_enabledboolean
Разрешение на резервное копирование выбранного кластера
- result.backup_hourinteger
Время создания резервной копии
- result.cluster_idstring
Идентификатор кластера
- result.created_instring
Время создания кластера
- result.databases_countinteger
Количество баз данных в кластере
- result.datastoreobject
Информация о СУБД
- result.datastore.idstring
Идентификатор СУБД
- result.datastore.namestring
Название СУБД
- result.datastore.versionstring
Версия СУБД
- result.external_addressstring
Внешний адрес кластера
- result.flavorobject
Количество ресурсов кластера
- result.flavor.raminteger
Объём оперативной памяти в кластере
- result.flavor.vcpusinteger
Количество vCPU в кластере
- result.idstring
Идентификатор кластера
- result.internal_addressstring
Внутренний адрес кластера
- result.linksarray
Массив ссылок на кластер
- result.links.itemobject
Отдельная ссылка на кластер
- result.links.item.hrefstring
Адрес ссылки на кластер
- result.links.item.relstring
Версия API
- result.namestring
Имя кластера
- result.nodes_countinteger
Количество нод в кластере
- result.statusstring
Статус кластера
- result.storage_sizeinteger
Размер хранилища кластера
- result.storage_used_KBinteger
Используемый кластером объём хранилища (в килобайтах)
- result.system_disk_sizeinteger
Размер диска кластера
Кластер (подробности)
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "flavor": { "ram": 2048, "vcpus": 1 }, "nodes_count": 2, "datastore": { "name": "MySQL", "version": "8.0", "id": "99c839eb-9679-4e10-8f54-99125af9b2dc" }, "external_address": null, "backup_hour": 23, "name": "test_mysql_8", "system_disk_size": 10, "backup_enabled": true, "id": "9e7f4706-c514-41bb-96ae-a263a32c441c", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/dbaas/clusters/f0ed7719-ecbb-4ac4-8062-818c668b3906" } ], "internal_address": "8bd82f91-1d1d-42af-a820-db6d66a70d8e", "databases_count": 1, "created_in": "2022-12-28T12:20:15Z", "status": "ACTIVE", "storage_used_KB": 2191523, "storage_size": 20 } }
Список нод кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество нод кластера
- resultsarray
Список нод кластера
- results.itemobject
Нода кластера
- results.item.cluster_idstring
Идентификатор кластера, которому принадлежит нода
- results.item.created_instring
Время создания ноды
- results.item.idstring
Идентификатор ноды
- results.item.linksarray
Массив ссылок на ноду кластера
- results.item.links.itemobject
Ссылка на ноду
- results.item.links.item.hrefstring
URL ссылки на ноду
- results.item.links.item.relstring
Версия API
- results.item.namestring
Имя ноды
- results.item.private_ipstring
Внутренний IP-адрес ноды
- results.item.rolestring
Роль ноды
- results.item.statusstring
Статус ноды
Список нод кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/nodes" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 2, "results": [ { "name": "node", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/dbaas/nodes/23a75dc8-7239-4c87-a685-eb39383590f0" } ], "id": "23a75dc8-7239-4c87-a685-eb39383590f0", "created_in": "2022-12-28T12:20:15Z", "status": "ALIVE", "role": "MASTER", "private_ip": "10.174.87.17", "cluster_id": "9e7f4706-c514-41bb-96ae-a263a32c441c" }, { "name": "node", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/dbaas/nodes/801b87d1-02e5-499c-a4c7-83218f4cd531" } ], "id": "801b87d1-02e5-499c-a4c7-83218f4cd531", "created_in": "2022-12-28T12:20:15Z", "status": "ALIVE", "role": "SLAVE", "private_ip": "10.174.87.19", "cluster_id": "9e7f4706-c514-41bb-96ae-a263a32c441c" } ] }
Изменение имени кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
- name*string
Новое имя кластера (передаётся в теле запроса)
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий информацию о результатах запроса
- result.backup_enabledboolean
Разрешение создавать резервные копии выбранного кластера
- result.backup_hourinteger
Время создания резервных копий кластера
- result.cluster_idstring
Идентификатор кластера
- result.created_instring
Дата и время создания кластера
- result.databases_countinteger
Количество баз данных в кластере
- result.datastoreobject
Используемая СУБД
- result.datastore.idstring
Идентификатор СУБД
- result.datastore.namestring
Название СУБД
- result.datastore.versionstring
Версия СУБД
- result.external_addressstring
Внешний URL кластера
- result.flavorobject
Ресурсы кластера
- result.flavor.raminteger
Оперативная память ноды (в Гб)
- result.flavor.vcpusinteger
Количество vCPU
- result.idstring
Идентификатор кластера
- result.internal_addressstring
Внутренний IP-адрес кластера
- result.linksarray
Массив ссылок на кластер
- result.links.itemobject
Ссылка на кластер
- result.links.item.hrefstring
URL-адрес ссылки на кластер
- result.links.item.relstring
Версия API
- result.namestring
Имя кластера
- result.nodes_countinteger
Количество нод кластера
- result.statusstring
Состояние кластера
- result.storage_sizeinteger
Общий доступный размер дисков в кластере
- result.storage_used_KBinteger
Объём данных в хранилище (в Кб)
- result.system_disk_sizeinteger
Размер диска кластера
Изменение имени кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.patch(url = URL, headers = HEADERS, json = {"name": "your_cluster_name"})
{ "code": 200, "title": "OK", "result": { "flavor": { "ram": 2048, "vcpus": 1 }, "databases_count": 1, "backup_enabled": true, "backup_hour": 23, "external_address": null, "links": [ { "href": "http://api.clo.ru/v1/dbaas/clusters/aab9eb24-2761-43c7-a0df-d085bbcac75c", "rel": "self" } ], "storage_size": 20, "nodes_count": 2, "storage_used_KB": 2188296, "internal_address": "0afecb63-1a0b-4248-a333-a74de1bb9c28", "name": "new_test", "created_in": "2023-05-25T02:39:11Z", "system_disk_size": 10, "id": "aab9eb24-2761-43c7-a0df-d085bbcac75c", "status": "ACTIVE", "datastore": { "version": "8.0", "id": "99c839eb-9679-4e10-8f54-99125af9b2dc", "name": "MySQL" } } }
Изменение вычислительных ресурсов кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
- flavor*
Объект, содержащий сведения о вычислительных ресурсах кластера
Формат ответа
Изменение вычислительных ресурсов кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/resize/resources" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post( url = URL, headers = HEADERS, json = { "flavor": { "ram": 6, "vcpus": 3, "cpu_type": "SHARED" } } )
{ "code": 202, "title": "Accepted", "result": null }
Увеличение диска кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
- new_size*integer
Новый объём диска
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Кластер баз данных
- result.backup_enabledboolean
Разрешение создавать резервную копию кластера
- result.backup_hourinteger
Время создания бэкапов кластера
- result.cluster_idstring
Идентификатор кластера (передаётся в URL)
- result.created_instring
Дата создания кластера
- result.databases_countinteger
Количество баз данных в кластере
- result.datastoreobject
Информация об используемой СУБД
- result.datastore.idstring
Идентификатор СУБД
- result.datastore.namestring
Название СУБД
- result.datastore.versionstring
Версия СУБД
- result.external_addressstring
Внешний IP-адрес кластера
- result.flavorobject
Информация о ресурсах нод кластера
- result.flavor.raminteger
Объём оперативной памяти ноды (в Гб)
- result.flavor.vcpusinteger
Количество vCPU в каждой ноде
- result.idstring
Идентификатор кластера (передаётся в URL)
- result.internal_addressstring
Внутренний IP-адрес кластера
- result.linksarray
Массив ссылок на кластер
- result.links.itemobject
Ссылка на кластер
- result.links.item.hrefstring
URL-адрес ссылки на кластер
- result.links.item.relstring
Объекты, связанные с кластером по ссылке
- result.namestring
Название кластера
- result.nodes_countinteger
Количество нод кластера
- result.statusstring
Состояние кластера
- result.storage_sizeinteger
Размер хранилища, используемого кластером
- result.storage_used_KBinteger
Фактический объём данных в хранилище кластера (в Кб)
- result.system_disk_sizeinteger
Размер диска кластера
Увеличение диска кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/clusters/{cluster_id}/resize/storage" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url=URL, headers=HEADERS, json = {"new_size": 30})
{ "code": 202, "title": "Accepted", "result": { "external_address": null, "name": "MySQL-8.0", "backup_enabled": true, "datastore": { "version": "8.0", "name": "MySQL", "id": "99c839eb-9679-4e10-8f54-99125af9b2dc" }, "databases_count": 1, "created_in": "2022-12-20T04:46:50Z", "system_disk_size": 10, "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/dbaas/clusters/f0ed7719-ecbb-4ac4-8062-818c668b3906" } ], "status": "UPDATING", "nodes_count": 2, "backup_hour": 22, "storage_used_KB": 2188308, "storage_size": 20, "internal_address": "a48d50ea-a806-4d9d-82f8-3b3fc365420a", "id": "f0ed7719-ecbb-4ac4-8062-818c668b3906", "flavor": { "vcpus": 2, "ram": 4096 } } }
Создание резервной копии
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
- namestring
Имя кластера
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий информацию о результатах запроса
- result.backup_enabledboolean
Разрешение создавать резервную копию кластера
- result.cluster_idstring
Идентификатор кластера
- result.created_instring
Время создания резервной копии
- result.data_sizeinteger
Объём данных кластера
- result.databasesarray
Массив, содержащий сведения о базах данных кластера
- result.databases.itemobject
База данных кластера
- result.databases.item.admin_usernamestring
Имя администратора БД
- result.databases.item.idstring
Идентификатор БД
- result.databases.item.namestring
Имя БД
- result.datastoreobject
Используемая СУБД
- result.datastore.idstring
Идентификатор СУБД
- result.datastore.namestring
Имя СУБД
- result.datastore.versionstring
Версия СУБД
- result.idstring
Идентификатор кластера
- result.linksarray
Массив ссылок на кластер
- result.links.itemobject
Ссылка на кластер
- result.links.item.hrefstring
URL-адрес ссылки на кластер
- result.links.item.relstring
Версия API
- result.namestring
Имя кластера
- result.parentstring
Родительский объект кластера
- result.sizeinteger
Размер резервной копии
- result.statusstring
Статус кластера
- result.typestring
Тип кластера
Создание резервной копии
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}/backup/create" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {'name': 'new_backup_name'})
{ "code": 201, "title": "Created", "result": { "databases": [ { "admin_username": "database1", "name": "database1", "id": "9d5d2d9e-33c8-4f77-89ad-3e1d1b72b" } ], "data_size": 0, "links": [ { "href": "http://api.clo.ru/v1/dbaas/backups/063cc52398b8d09", "rel": "self" } ], "parent": null, "id": "063cc2e4-ab93-4f76-8491-56523", "status": "BUILD", "type": "PARTIAL", "cluster_id": "d46f0c0c-438ab-8907305f2959", "datastore": { "version": "8.0", "name": "MySQL" }, "created_in": "2023-05-22T12:23:45.667848Z", "name": "Backup_test_1_2023-05-22T12:23:45.659274", "size": 0 } }
Отключение резервного копирования кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
Отключение резервного копирования кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}/backup/disable" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": null }
Подключение резервного копирования кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор кластера
Формат ответа
Подключение резервного копирования кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}/backup/enable" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": null }
Удаление базы данных
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор БД
Формат ответа
Удаление базы данных
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Информация о базе данных
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Выбранная база данных
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий информацию о результатах запроса
- result.admin_usernamestring
Имя администратора БД
- result.backup_enabledboolean
Разрешение на создание резервной копии БД
- result.cluster_idstring
Идентификатор кластера БД
- result.created_instring
Дата создания БД
- result.idstring
Идентификатор БД
- result.linksarray
Массив ссылок на базу данных
- result.links.itemobject
Ссылка на БД
- result.links.item.hrefstring
URL-адрес базы данных
- result.links.item.relstring
Версия API
- result.namestring
Имя БД
- result.statusstring
Статус БД
Информация о базе данных
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "backup_enabled": false, "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/dbaas/databases/e93ba569-8552-44b3-8ede-75feac020b49" } ], "name": "database1", "created_in": "2023-05-21T17:24:19Z", "admin_username": "database1", "id": "e93ba569-8552-44b3-8ede-75feac020b49", "status": "READY", "cluster_id": "f9b0a0ea-aa28-46f3-8b3e-3fd805fa3b97" } }
Восстановление пароля к базе данных
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор БД
- password*string
Новый пароль
Формат ответа
Восстановление пароля к базе данных
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/databases/{database_id}/restore" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post(url = URL, headers = HEADERS, json = {'password': 'your_new_strong_password'})
{ "code": 200, "title": "OK", "result": null }
Детали ноды кластера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор ноды
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий информацию о результатах запроса
- result.cluster_idstring
Идентификатор кластера
- result.created_instring
Время создания кластера
- result.idstring
Идентификатор ноды
- result.linksarray
Массив ссылок на ноду кластера
- result.links.itemobject
Ссылка на ноду
- result.links.item.hrefstring
URL-адрес ссылки
- result.links.item.relstring
Версия API
- result.namestring
Имя ноды
- result.private_ipstring
Внутренний IP-адрес ноды
- result.rolestring
Роль ноды (master/slave)
- result.statusstring
Статус ноды
Детали ноды кластера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/dbaas/nodes/{node_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "name": "node", "id": "2f5ddfbe-1ff1-48d9-ad6b-16038dded93a", "cluster_id": "e6319a5b-6405-4501-8477-fd43a36bbd6a", "role": "MASTER", "links": [ { "rel": "self", "href": "https://api.clo.ru/v1/dbaas/nodes/2f5ddfbe-1ff1-48d9-ad6b-16038dded93a" } ], "created_in": "2023-05-21T16:01:39Z", "status": "BUILD", "private_ip": null } }
Список резервных копий кластеров проекта
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор проекта
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество резервных копий кластеров проекта
- resultsarray
Массив объектов, содержащих данные о бэкапах кластеров
- results.itemobject
Объект, содержащий данные о бэкапе кластера
- results.item.backup_enabledboolean
Разрешенеи создавать резервную копию кластера
- results.item.cluster_idstring
Идентификатор кластера
- results.item.created_instring
Дата и время создания бэкапа
- results.item.data_sizeinteger
Размер бэкапа
- results.item.databasesarray
Массив объектов, содержащих данные о БД кластера
- results.item.databases.itemobject
Объект, содержащий информацию о БД
- results.item.databases.item.admin_usernamestring
Имя пользователя БД
- results.item.databases.item.idstring
Идентификатор БД
- results.item.databases.item.namestring
Название БД
- results.item.datastoreobject
Информация об используемой СУБД
- results.item.datastore.idstring
Идентификатор СУБД
- results.item.datastore.namestring
Название СУБД
- results.item.datastore.versionstring
Версия СУБД
- results.item.idstring
Идентификатор базы данных
- results.item.linksarray
Массив ссылок на бэкапы кластера
- results.item.links.itemobject
Ссылка на бэкап кластера
- results.item.links.item.hrefstring
URL-адрес бэкапа
- results.item.links.item.relstring
Версия API
- results.item.namestring
Название бэкапа
- results.item.parentstring
Родительский объект бэкапа
- results.item.sizeinteger
Размер бэкапа
- results.item.statusstring
Статус бэкапа
- results.item.typestring
Тип бэкапа
Список резервных копий кластеров проекта
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/dbaas/backups" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "type": "FULL", "datastore": { "name": "PostgreSQL", "version": "13" }, "databases": [ { "name": "database1", "admin_username": "database1", "id": "68d5ae95-dafd-4f60-864b-07f6bfcf95dd" } ], "name": "Daily_backup_test_2022-12-27", "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/dbaas/backups/aa9e1878-6dad-4462-9cf2-8ad3cce2fbe3" } ], "size": 3999, "id": "aa9e1878-6dad-4462-9cf2-8ad3cce2fbe3", "created_in": "2022-12-27T03:00:00Z", "status": "AVAILABLE", "parent": null, "data_size": 178257, "cluster_id": "65b57d6d-733b-479e-893b-c458028769dc" } ] }
Список кластеров проекта
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор проекта
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество кластеров в проекте
- resultsarray
Массив объектов, содержащих информацию о кластерах
- results.itemobject
Объект, содержащий данные о кластере БД
- results.item.backup_enabledboolean
Разрешение создавать резервные копии кластера
- results.item.backup_hourinteger
Время создания резервной копии кластера
- results.item.cluster_idstring
Идентификатор кластера
- results.item.created_instring
Дата и время создания кластера
- results.item.databases_countinteger
Количество баз данных в кластере
- results.item.datastoreobject
Объект, содержащий сведения об используемой СУБД
- results.item.datastore.idstring
Идентификатор СУБД
- results.item.datastore.namestring
Название СУБД
- results.item.datastore.versionstring
Версия СУБД
- results.item.external_addressstring
Внешний IP-адрес кластера
- results.item.flavorobject
Данные о вычислительных ресурсах кластера
- results.item.flavor.raminteger
Объём оперативной памяти
- results.item.flavor.vcpusinteger
Количество vCPU
- results.item.idstring
Идентификатор кластера
- results.item.internal_addressstring
Внутренний IP-адрес кластера
- results.item.linksarray
Массив ссылок на кластер
- results.item.links.itemobject
Ссылка на кластер
- results.item.links.item.hrefstring
URL-адрес ссылки
- results.item.links.item.relstring
Версия API
- results.item.namestring
Название кластера
- results.item.nodes_countinteger
Количество нод кластера
- results.item.statusstring
Статус кластера
- results.item.storage_sizeinteger
Объём пространства для хранения данных
- results.item.storage_used_KBinteger
Используемый кластером объём данных (в Кб)
- results.item.system_disk_sizeinteger
Размер системного диска
Список кластеров проекта
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/dbaas/clusters" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "flavor": { "vcpus": 1, "ram": 2048 }, "external_address": null, "id": "65b57d6d-733b-479e-893b-c458028769dc", "status": "ACTIVE", "nodes_count": 2, "created_in": "2022-12-26T14:00:29Z", "system_disk_size": 10, "storage_size": 20, "databases_count": 1, "backup_enabled": true, "links": [ { "href": "http://api.clo.ru/v1/dbaas/clusters/65b57d6d-733b-479e-893b-c458028769dc", "rel": "self" } ], "name": "test", "internal_address": "6c09ab24-6f49-4b22-968f-d66c87aba19a", "storage_used_KB": 272629, "datastore": { "id": "2d090978-46ba-4a50-ac4b-2457b0a37c6d", "version": "13", "name": "PostgreSQL" }, "backup_hour": 3 } ] }
Создание кластера баз данных
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор проекта
- addressobject,
nullIP-адрес кластера БД
- backupstring
Идентификатор бэкапа, из которого создаётся кластер
- databaseobject,
nullПараметры базы данных кластера
- datastorestring
Идентификатор СУБД
- flavor*
Ресурсы кластера (количество vCPU, объём памяти ноды и т.д.)
- name*string
Название кластера
- storage_size*integer
Размер дискового пространства кластера
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий результаты запроса
- result.backup_enabledboolean
Разрешение создавать резервную копию кластера
- result.backup_hourinteger
Время создания резервной копии
- result.cluster_idstring
Идентификатор кластера
- result.created_instring
Дата и время создания кластера
- result.databases_countinteger
Количество баз данных в кластере
- result.datastoreobject
Объект, содержащий информацию об используемой СУБД
- result.datastore.idstring
Идентификатор СУБД
- result.datastore.namestring
Название СУБД
- result.datastore.versionstring
Версия СУБД
- result.external_addressstring
Внешний IP-адрес кластера
- result.flavorobject
Объект. содержащий информацию о вычислительных ресурсах кластера
- result.flavor.raminteger
Объём оперативной памяти
- result.flavor.vcpusinteger
Количество vCPU
- result.idstring
Идентификатор кластера
- result.internal_addressstring
Внутренний IP-адрес кластера
- result.linksarray
Массив ссылок на кластер
- result.links.itemobject
Ссылка на кластер
- result.links.item.hrefstring
URL-адрес кластера
- result.links.item.relstring
Версия API
- result.namestring
Имя кластера
- result.nodes_countinteger
Количество нод кластера
- result.statusstring
Статус кластера
- result.storage_sizeinteger
Объём дискового пространства кластера
- result.storage_used_KBinteger
Используемый кластром объём хранилища (в Кб)
- result.system_disk_sizeinteger
Размер системного диска кластера
Создание кластера баз данных
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/dbaas/clusters" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post( url = URL, headers = HEADERS, json = { "flavor": { "vcpus": 1, "ram": 2 }, "database": { "admin_password": "your_strong_password", "admin_username": "database_1", "name": "database_1" }, "datastore": "99c839eb-9679-4e10-8f54-99125af9b2dc", "name": "test", "storage_size": 20 } )
{ "code": 201, "title": "Created", "result": { "backup_hour": 23, "datastore": { "id": "9679-4e10-8f54-99125af9b", "version": "8.0", "name": "MySQL" }, "flavor": { "ram": 2048, "vcpus": 1 }, "storage_size": 20, "status": "CREATING", "databases_count": 1, "id": "3f77e0d8-fdd6-4438-8b7", "system_disk_size": 10, "nodes_count": 2, "links": [ { "rel": "self", "href": "https://api.clo.ru/v1/dbaas/clusters/3f77e0d8-fdd6-4438-8b71-8df27589f2e5" } ], "internal_address": null, "storage_used_KB": 0, "created_in": "2023-05-16T04:22:41.819015Z", "external_address": null, "backup_enabled": true, "name": "test_mysql_8" } }
Список СУБД для работы с базами данных
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор проекта
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество доступных СУБД
- resultsarray
Массив, содержащий идентификаторы доступных СУБД
- results.itemobject
Описание СУБД
- results.item.idstring
Идентификатор СУБД
- results.item.namestring
Название СУБД
- results.item.versionstring
Версия СУБД
Список СУБД для работы с базами данных
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/dbaas/datastores" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 4, "results": [ { "id": "99c839eb-9679-4e10-8f54-99125af9b2dc", "version": "8.0", "name": "MySQL" }, { "id": "fca09615-2948-4ac1-aab2-445fdae12500", "version": "14", "name": "PostgreSQL" }, { "id": "318462c0-9b4d-485e-88bb-3417e4c6b5bc", "version": "5.7", "name": "MySQL" }, { "id": "2d090978-46ba-4a50-ac4b-2457b0a37c6d", "version": "13", "name": "PostgreSQL" } ] }
Виртуальные роутеры
Виртуальный роутер позволяет подключить динамически переопределяемый внешний IP-адрес к локальной сети проекта, чтобы обеспечить доступ из проекта в Интернет.
Список виртуальных роутеров
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор проекта
Формат ответа
- ПараметрТип данныхОписание
- countinteger
Количество виртуальных роутеров
- resultsarray
Массив объектов, содержащих сведения о виртуальных роутерах
- results.itemobject
Объект, содержащий данные о виртуальном роутере
- results.item.external_gateway_address_idstring
Внешний IP-адрес роутера
- results.item.idstring
Идентификатор роутера
- results.item.linksarray
Массив ссылок на роутер
- results.item.links.itemobject
Ссылка на роутер
- results.item.links.item.hrefstring
URL-адрес ссылки на роутер
- results.item.links.item.relstring
Версия API
- results.item.namestring
Имя виртуального роутера
- results.item.private_networksarray
Список приватных сетей, работающих с виртуальным роутером
- results.item.private_networks.itemstring
Локальная сеть, работающая с роутером
- results.item.statusstring
Состояние виртуального роутера
Список виртуальных роутеров
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/vrouters" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "count": 1, "results": [ { "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/projects/78d6fc6b-42b9-42bc-a655-2f1194e22309/vrouters" } ], "name": "test", "external_gateway_address_id": "ce0fbe44-9c47-46c7-b1cf-52694d194d40", "private_networks": ["631fa872-5bcd-4110-b274-5d14c38ad5"], "status": "ACTIVE", "id": "78d6fc6b-42b9-42bc-a655-2f1194e22309" } ] }
Создание виртуального роутера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор роутера
- name*string
Имя роутера
- private_networksarray
Список приватных сетей, работающих с виртуальным роутером
- private_networks.itemstring
Локальная сеть
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий информацию о виртуальном роутере
- result.external_gateway_address_idstring
Внешний IP-адрес роутера
- result.idstring
Идентификатор роутера
- result.linksarray
Массив ссылок на роутер
- result.links.itemobject
Ссылка на роутер
- result.links.item.hrefstring
URL-адрес ссылки на роутер
- result.links.item.relstring
Версия API
- result.namestring
Имя виртуального роутера
- result.private_networksarray
Список локальных (приватных) сетей, работающих с виртуальным роутером
- result.private_networks.itemstring
Локальная сеть, работающая с роутером
- result.statusstring
Состояние виртуального роутера
Создание виртуального роутера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/projects/{project_id}/vrouters" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object # you need to replace all dummy values for appropriate keys with real parameters r = requests.post( url = URL, headers = HEADERS, data = { "name":"test", "private_networks":[ "631fa872-5bcd-4110-b274-5d14c38ad5b6" ] } )
{ "code": 201, "title": "Created", "result": { "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/projects/4288849c-ba0b-4ab7-ab47-a9a2e27d1b48/vrouters" } ], "name": "test", "external_gateway_address_id": "8132ff6e-70a7-4b68-96df-c13bc882d0f3", "private_networks": [ "631fa872-5bcd-4110-b274-5d14c38ad5b6" ], "status": "CREATING", "id": "4288849c-ba0b-4ab7-ab47-a9a2e27d1b48" } }
Удаление виртуального роутера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор роутера
Формат ответа
Удаление виртуального роутера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/vrouters/{vrouter_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.delete(url = URL, headers = HEADERS)
Информация о виртуальном роутере
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор роутера
Формат ответа
- ПараметрТип данныхОписание
- resultobject
Объект, содержащий информацию о выбранном роутере
- result.external_gateway_address_idstring
Идентификатор внешнего IP-адреса (шлюза) виртуального роутера
- result.idstring
Идентификатор виртуального роутера
- result.linksarray
Ссылки на детальную информацию о виртуальном роутере
- result.links.itemobject
Ссылка на данные о виртуальном роутере
- result.links.item.hrefstring
URL-адрес ссылки
- result.links.item.relstring
Версия API
- result.namestring
Имя виртуального роутера
- result.private_networksarray
Список приватных сетей, работающих с виртуальным роутером
- result.private_networks.itemstring
Приватная сеть, работающая с виртуальным роутером
- result.statusstring
Статус виртуального роутера
Информация о виртуальном роутере
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/vrouters/{vrouter_id}" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.get(url = URL, headers = HEADERS)
{ "code": 200, "title": "OK", "result": { "links": [ { "rel": "self", "href": "http://api.clo.ru/v1/projects/78d6fc6b-42b9-42bc-a655-2f1194e22309/vrouters" } ], "name": "test", "external_gateway_address_id": "ce0fbe44-9c47-46c7-b1cf-52694d194d40", "private_networks": ["631fa872-5bcd-4110-b274-5d14c38ad5b6"], "status": "ACTIVE", "id": "78d6fc6b-42b9-42bc-a655-2f1194e22309" } }
Запуск виртуального роутера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор роутера
Формат ответа
Запуск виртуального роутера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/vrouters/{vrouter_id}/start" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)
Остановка виртуального роутера
Параметры запроса
- ПараметрТип данныхОписание
- object_id*stringПередается в path.
Идентификатор роутера
Формат ответа
Остановка виртуального роутера
- Python
- Bash
# importing the requests library import requests # api-endpoint URL = "https://api.clo.ru/v1/vrouters/{vrouter_id}/stop" # defining a dict of headers to be sent to the API HEADERS = {'Content-Type': 'application/json', 'Authorization': 'Bearer b7d03a6947b217efb6f3ec3bd3504582'} # sending request and saving the response as response object r = requests.post(url = URL, headers = HEADERS)