Virtuozzo Infrastructure от InfoboxCloud. REST API. Часть 1: Введение

Вы можете управлять облачной инфраструктурой не только из панели управления, но и из вашего программного обеспечения, используя для интеграции мощный интерфейс управления облаком (REST API). Полную документацию по API можно получить по ссылке (pdf).

Обратите внимание, что API был обновлен до версии 6.0.



В этой статье мы рассмотрим процесс авторизации в API и выполним простой запрос.

Введение

API предоставляет программный доступ к ресурсам REST. Используя API, вы можете получать информацию о ресурсах и выполнять действия с ними. Например, вы можете получить список серверов, запускать и останавливать их, изменять конфигурацию серверов, создавать и удалять сервера и выполнять множество других задач управления.

Работа с ресурсами осуществляется через отправку API-запросов управляющему серверу InfoboxCloud. Ответы приходят в XML-формате. Код максимально ориентирован на конечного пользователя, поэтому все поля имеют понятные имена.
Управление можно легко автоматизировать. Сам XML довольно просто анализируется стандартными функциями парсинга, если это необходимо.

Обращаться к API нужно по адресу управляющего сервера InfoboxCloud API (baseURL):
https://ciapi.pa.infobox.ru:4464/paci/v1.0

Дальнейшее общение с виртуальным сервером осуществляется при помощи расширения baseURL «вправо»  — необходимо просто поставить знак "/" (без кавычек) и дописать дополнительные параметры к baseURL.
Например, /ve — обращение к виртуальному серверу. Поскольку сервер обычно имеет свой идентификатор, то после /ve дописывается имя сервера: например, /my-server-01.

Строка baseURL с двумя дополнительными параметрами принимает вид:
https://ciapi.pa.infobox.ru:4465/paci/v1.0/ve/my-server-01

Это равноценно строке:
baseURL/ve/my-server-01

Некоторые запросы позволяют определение дополнительных параметров. Все дополнительные параметры перечисляются после знака вопроса. 

Примером такого запроса может служить следующая строка:
GET baseURL/ve?subscription=1000001

Действия, доступные через API

1. Управление серверами:
  • Показ списка серверов;
  • Запуск и остановка сервера;
  • Создание сервера;
  • Создание сервера из образа;
  • Клонирование сервера;
  • Пересоздание сервера;
  • Изменение конфигурации сервера;
  • Сброс пароля администратора сервера;
  • Получение информации о сервере;
  • Получение истории сервера;
  • Получение информации об использовании сервера;
  • Удаление сервера;
  • Управление встроенным файрволлом;
  • Резервное копирование и восстановление;

2. Управление автомасштабированием:
  • Создание правил автомасштабирования
  • Обновление правил автомасштабирования
  • Получение правил автомасштабирования
  • Удаление правил автомасштабирования
  • Получение истории автомасштабирования

3. Управление образами
  • Получение списка образов
  • Получение информации об образе
  • Создание образа из сервера
  • Удаление образа

4. Управление балансировщиком нагрузки
  • Отображение балансировщиков нагрузки
  • Получение информации о балансировщиках нагрузки
  • Создание балансировщика нагрузки
  • Создание балансировщика нагрузки для конкретной подписки
  • Получение истории балансировщика нагрузки
  • Перезапуск балансировщика нагрузки
  • Удаление балансировщика нагрузки
  • Добавление сервера к балансировщику нагрузки
  • Отключение сервера от балансировщика нагрузки

5. Дополнительные инструменты:
  • Получение списка образов ОС
  • Получение плана резервного копирования

В этой и последующих статьях мы будем рассматривать различные аспекты работы с API. Ссылки на последующие статьи будут добавлены в конец этой статьи.

Получение ключа API

Ключ API можно получить в панели управления InfoboxCloud.
Войдите в панель управления. Затем перейдите в раздел «Доступ к API» и нажмите «Создать ключ API», как показано на скриншоте ниже.





Требуемые заголовки запросов HTTP

При отправке запроса HTTPS заголовок должен содержать информацию для аутентификации и content-type.

Аутентификация
PACI REST API использует базовую схему аутентификации, определенную в RFC 1945. Заголовок запроса HTTP должен содержать данные для доступа в форме логин от панели управления и ключ API, разделенные двоеточием в кодировке Base64.

Пусть в панели управления мы получили ключ API: 12345q.
Логин от панели управления: p777user
В незакодированном виде данные будут выглядеть так:
p777user:12345q

При передаче запроса вы можете средствами технологии разработки, которую вы используете закодировать ключ в Base64.

Либо можно воспользоваться средствами ОС.

Кодирование в Base64 и обратно средствами Windows Powershell
В Powershell выполните следующие команды:
[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "login","apikey")))
, где login – ваш логин в панель управления, а apikey – ключ api.

Можно сохранить login и apikey в переменные окружения ОС и обращаться к ним из запроса так:
[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $login, $apikey)))

При обращении к переменным окружения перед переменной ставится знак $, например $login.

Обратная процедура из Base64 в комбинацию login:apikey выглядит так:
[Text.Encoding]::ASCII.GetString([Convert]::FromBase64String(("{0}" -f "base64Variable")))
, где base64variable – закодированные в base64 данные для доступа.



Кодирование в Base64 и обратно средствами Linux/OS X
В терминале выполните следующую команду:
echo -n "login:apikey" | base64
, где login – ваш логин в панель управления, а apikey – ключ api.

Обратная процедура из Base64 в комбинацию login:apikey выглядит для OS X так:
echo -n "base64variable" | base64 -D
, где base64variable – закодированные в base64 данные для доступа.

Для Linux так:
echo -n "base64variable" | base64 -d
, где base64variable – закодированные в base64 данные для доступа.



Content–type
Для запросов Content-type должен быть установлен в «application/xml»:
Content-type: application/xml

API позволяет использовать функциональность Callback для получения ответов асинхронно. Это удобно для запросов, которые исполняются долго. Пример использования Callback можно посмотреть в документации на страницах 8 и 81. Мы рассмотрим полный пример использования Callback в последующих статьях.

Отправляем запрос к API

Пришло время протестировать, как отправляются запросы к API.

На Windows Powershell
$xml = Invoke-RestMethod -Uri https://ciapi.pa.infobox.ru:4464/paci/v1.0/ve -Method Get -Headers @{Authorization=("Basic {0}" -f "base64variable")} -ContentType "application/xml"
, где base64variable – закодированные в base64 данные для доступа.
$xml.OuterXml



На Linux/OS X
curl -i -H "Content-type: application/xml" -H "Authorization: Basic base64variable" -X GET "https://ciapi.pa.infobox.ru:4464/paci/v1.0/ve"
, где base64variable – закодированные в base64 данные для доступа.


Заключение

В этой статье мы подключились к API, авторизовались и успешно выполнили запрос. Более подробную информацию о возможностях API можно получить в официальной документации. В следующих статьях мы рассмотрим использование API для конкретных задач и технологий.

Если вы обнаружили ошибку в статье, автор ее с удовольствием исправит. Пожалуйста напишите в ЛС или на почту о ней.

Успешного использования InfoboxCloud!

1 комментарий

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.