Product SiteDocumentation Site

Глава 44. PVE API

44.1. URL API
44.2. Аутентификация
44.2.1. Билет Cookie
44.2.2. API-токены
44.3. Пример создания контейнера с использованием API
44.4. Утилита pvesh
PVE использует RESTful API. В качестве основного формата данных используется JSON, и весь API формально определен с использованием JSON Schema.
Документация API доступна по адресу: https://docs.altlinux.org/pve-api/v8/index.html
Каждая команда, доступная команде pvesh (см.ниже), доступна в веб-API, поскольку они используют одну и ту же конечную точку.
Запрос (URL, к которому происходит обращение) содержит четыре компонента:
  • конечная точка, являющаяся URL-адресом, по которому отправляется запрос;
  • метод с типом (GET, POST, PUT, PATCH, DELETE);
  • заголовки, выполняющие функции аутентификации, предоставление информации о содержимом тела (допустимо использовать параметр -H или --header для отправки заголовков HTTP) и т. д.;
  • данные (или тело) — то, что отправляется на сервер с помощью опции -d или --data при запросах POST, PUT, PATCH или DELETE.

Примечание

При передаче не буквенно-цифровых параметров нужно кодировать тело HTTP-запроса. Для этого можно использовать опцию --data-urlencode.
HTTP-запросы разрешают работать с базой данных, например:
  • GET-запрос на чтение или получение ресурса с сервера;
  • POST-запрос для создания записей;
  • PUT-запрос для изменения записей;
  • DELETE-запрос для удаления записей;
  • PATCH-запрос для обновления записей.
Для передачи команд через REST API можно использовать утилиту curl.

Примечание

По мере роста числа пользователей и ВМ, API PVE может начать реагировать на изменения с задержкой.
Для решения этой проблемы нужно очистить /var/lib/rrdcached/, например, выполнив команду:
# find /var/lib/rrdcached -type f -mtime +5 -delete
Или, добавив соответствующее задание в crontab.

44.1. URL API

API PVE использует протокол HTTPS, а сервер прослушивает порт 8006. Таким образом, базовый URL для API — https://server:8006/api2/json/
Параметры можно передавать с помощью стандартных методов HTTP:
  • через URL;
  • используя x-www-form-urlencoded content-type для запросов PUT и POST.
В URL можно указать формат возвращаемых данных:
  • json — формат JSON;
  • extjs — формат JSON, но результат вложен в объект, с объектом данных, вариант, совместимый с формами ExtJS;
  • html — текст в формате HTML (иногда полезно для отладки);
  • text — формат простой текст (иногда полезно для отладки);
В приведенном выше примере используется JSON.