Справочный центр
Управление облачным сервером через API (REST)
Отправлено Инна Соломка в 27 March 2015 15:31

Как работает API?
Действия, доступные через API
Получение ключа API
Требуемые заголовки запросов HTTP
Пример отправки запроса к API

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

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

Как работает API?

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

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

Обращаться к API нужно по адресу 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 можно получить в панели управления 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 в переменные окружения ОС. При обращении к переменным окружения перед переменной ставится знак $, например $login. Тогда запрос будет выглядеть так:

[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $login,$apikey)))

Обратная процедура из 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.

Пример отправки запроса к 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 данные для доступа.

 

 

(12 голосов)

© 2002—2017 ООО «Национальные телекоммуникации»