Примеры использования REST API
Примеры в этом разделе показывают, как использовать REST API для настройки базовой среды zVirt и создания виртуальной машины. В дополнение к стандартным предварительным требованиям для этих примеров требуется следующее:
-
Установленная и настроенная среда ПО «zVirt Max», имеющая доступ к сети.
-
Файл ISO, содержащий операционную систему виртуальной машины, которую вы хотите установить. В этой главе в качестве примера установки ISO используется CentOS 7.
В примерах используется curl для демонстрации запросов API с помощью клиентского приложения. Вы можете использовать любое приложение, которое отправляет HTTP-запросы.
|
Заголовки HTTP-запросов в этом примере опускают заголовки В curl примерах используется имя пользователя api-user@internalsso, пароль mypassword, расположение сертификата /etc/pki/ovirt-engine/ca.pem и имя хоста myengine.example.com. Вы должны заменить их правильными значениями для вашей среды. |
ПО «zVirt Max» генерирует уникальный идентификатор атрибута id для каждого ресурса. Идентификационные коды в этом примере будут отличаться от идентификационных кодов в вашей среде ПО «zVirt Max».
| Во многих примерах некоторые атрибуты результатов, возвращаемых API, для краткости опущены. |
1. Доступ к точке входа API
Следующий запрос извлекает представление основной точки входа для API версии 4:
GET /ovirt-engine/api HTTP/1.1
Version: 4
Accept: application/xml
Тот же запрос, но с использованием префикса URL /v4 вместо заголовка Version:
GET /ovirt-engine/api/v4 HTTP/1.1
Accept: application/xml
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--request GET \
--header 'Version: 4' \
--header 'Accept: application/xml' \
--user 'api-user@internalsso:mypassword' \
https://myengine.example.com/ovirt-engine/api
Результатом является объект типа Api:
<api>
<link href="/ovirt-engine/api/clusters" rel="clusters"/>
<link href="/ovirt-engine/api/clusters?search={query}" rel="clusters/search"/>
...
<product_info>
<instance_id>6fdd60c6-fdfd-11ed-94ee-00163e232a46</instance_id>
<name>zVirt Engine</name>
<version>
<build>9</build>
<full_version>4.4.9.5-1.1587.zvirt.el7</full_version>
<major>4</major>
<minor>4</minor>
<revision>0</revision>
</version>
</product_info>
<special_objects>
<blank_template href="..." id="..."/>
<root_tag href="..." id="..."/>
</special_objects>
<summary>
<hosts>
<active>3</active>
<total>3</total>
</hosts>
<storage_domains>
<active>2</active>
<total>3</total>
</storage_domains>
<users>
<active>2</active>
<total>2</total>
</users>
<vms>
<active>1</active>
<total>1</total>
</vms>
</summary>
<time>2023-06-02T18:09:00.587+03:00</time>
...
</api>
|
Если не используются ни заголовок, ни префикс URL, сервер автоматически выберет версию. Версия по умолчанию - 4. Вы можете изменить версию по умолчанию с помощью параметра конфигурации
Изменение этого параметра влияет на всех пользователей API, не указывающих версию явно. |
Точка входа предоставляет пользователю ссылки (link) на коллекции в среде виртуализации. Атрибут rel каждой ссылки на коллекцию предоставляет контрольную точку для каждой ссылки. На следующем шаге в этом примере исследуется коллекция центра данных, доступная по ссылке datacenters.
Точка входа также содержит другие данные, такие как product_info, special_objects и summary.
2. Список центров данных
ПО «zVirt Max» при установке создает центр данных Default. В этом примере центр данных Default используется в качестве основы для виртуальной среды.
Следующий запрос извлекает представление центров данных:
GET /ovirt-engine/api/datacenters HTTP/1.1
Accept: application/xml
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--request GET \
--header 'Version: 4' \
--header 'Accept: application/xml' \
--user 'api-user@internalsso:mypassword' \
https://myengine.example.com/ovirt-engine/api/datacenters
Результатом будет список объектов типа DataCenter:
<data_centers>
<data_center href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46" id="6e1b9a78-fdfd-11ed-afe5-00163e232a46">
<actions>
<link href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46/setmaster" rel="setmaster"/>
<link href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46/cleanfinishedtasks" rel="cleanfinishedtasks"/>
</actions>
<name>Default</name>
<description>The default Data Center</description>
<link href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46/storagedomains" rel="storagedomains"/>
<link href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46/permissions" rel="permissions"/>
<link href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46/clusters" rel="clusters"/>
...
<local>false</local>
<quota_mode>disabled</quota_mode>
<status>up</status>
<storage_format>v5</storage_format>
<supported_versions>
<version>
<major>4</major>
<minor>6</minor>
</version>
</supported_versions>
<version>
<major>4</major>
<minor>6</minor>
</version>
</data_center>
</data_centers>
Обратите внимание на id вашего центра данных Default. Он идентифицирует этот центр данных по отношению к другим ресурсам вашей виртуальной среды.
Центр данных также содержит ссылку на сервис AttachedStorageDomains, который управляет доменами хранения, подключенными к центру данных:
<link href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46/storagedomains" rel="storagedomains"/>
Этот сервис используется для присоединения доменов хранения из основной коллекции storagedomains, что будет рассмотрено в этом примере позже.
3. Получение списка кластеров
ПО «zVirt Max» при установке создает кластер Default. В этом примере кластер Default используется для группировки ресурсов в среде ПО «zVirt Max».
Следующий запрос извлекает представление коллекции кластеров:
GET /ovirt-engine/api/clusters HTTP/1.1
Accept: application/xml
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--request GET \
--header 'Version: 4' \
--header 'Accept: application/xml' \
--user 'api-user@internalsso:mypassword' \
https://myengine.example.com/ovirt-engine/api/clusters
Результатом будет список объектов типа Cluster:
<clusters>
<cluster href="/ovirt-engine/api/clusters/6e1d0a3e-fdfd-11ed-ad51-00163e232a46" id="6e1d0a3e-fdfd-11ed-ad51-00163e232a46">
<name>Default</name>
<description>The default server cluster</description>
<comment></comment>
<link href="/ovirt-engine/api/clusters/6e1d0a3e-fdfd-11ed-ad51-00163e232a46/permissions" rel="permissions"/>
<link href="/ovirt-engine/api/clusters/6e1d0a3e-fdfd-11ed-ad51-00163e232a46/networks" rel="networks"/>
...
<cpu>
<architecture>x86_64</architecture>
<type>Intel Icelake Server Family</type>
</cpu>
<version>
<major>4</major>
<minor>6</minor>
</version>
<virt_service>true</virt_service>
<data_center href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46" id="6e1b9a78-fdfd-11ed-afe5-00163e232a46"/>
</cluster>
</clusters>
Обратите внимание на id своего кластера Default. Он идентифицирует этот кластер по отношению к другим ресурсам вашей виртуальной среды.
Кластер Default ассоциируется с центрами данных Default посредством связи с использованием атрибутов id и href ссылки data_center:
<data_center href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46" id="6e1b9a78-fdfd-11ed-afe5-00163e232a46"/>
Ссылка networks — это ссылка на сервис DataCenterNetworks, которая управляет сетями, связанными с этим кластером. В следующем разделе коллекция сетей рассматривается более подробно.
4. Список логических сетей
ПО «zVirt Max» при установке по умолчанию создает сеть ovirtmgmt. Эта сеть действует как сеть управления Менеджера управления для доступа к хостам.
Эта сеть связана с кластером Default и входит в состав центра данных Default. В этом примере сеть ovirtmgmt используется для подключения виртуальных машин.
Следующий запрос извлекает список логических сетей:
GET /ovirt-engine/api/networks HTTP/1.1
Accept: application/xml
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--request GET \
--header 'Version: 4' \
--header 'Accept: application/xml' \
--user 'api-user@internalsso:mypassword' \
https://myengine.example.com/ovirt-engine/api/networks
Результатом будет список объектов типа Network:
<networks>
<network href="/ovirt-engine/api/networks/00000000-0000-0000-0000-000000000009" id="00000000-0000-0000-0000-000000000009">
<name>ovirtmgmt</name>
<description>Management Network</description>
<comment></comment>
<link href="/ovirt-engine/api/networks/00000000-0000-0000-0000-000000000009/permissions" rel="permissions"/>
<link href="/ovirt-engine/api/networks/00000000-0000-0000-0000-000000000009/vnicprofiles" rel="vnicprofiles"/>
<link href="/ovirt-engine/api/networks/00000000-0000-0000-0000-000000000009/networklabels" rel="networklabels"/>
<mtu>0</mtu>
<port_isolation>false</port_isolation>
<stp>false</stp>
<usages>
<usage>vm</usage>
</usages>
<vdsm_name>ovirtmgmt</vdsm_name>
<data_center href="/ovirt-engine/api/datacenters/6e1b9a78-fdfd-11ed-afe5-00163e232a46" id="6e1b9a78-fdfd-11ed-afe5-00163e232a46"/>
</network>
</networks>
Сеть ovirtmgmt подключена к центру данных Default через связь, использующую id центра данных.
Сеть ovirtmgmt также подключена к кластеру Default посредством связи в подколлекции сетей кластера.
5. Список хостов
В этом примере извлекается список хостов и отображается хост с именем host1-kf, зарегистрированным в среде виртуализации:
GET /ovirt-engine/api/hosts HTTP/1.1
Accept: application/xml
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--request GET \
--header 'Version: 4' \
--header 'Accept: application/xml' \
--user 'api-user@internalsso:mypassword' \
https://myengine.example.com/ovirt-engine/api/hosts
Результатом будет список объектов типа Host:
<hosts>
<host href="/ovirt-engine/api/hosts/5650f5c0-6c01-4967-bce0-76465be8fbf1" id="5650f5c0-6c01-4967-bce0-76465be8fbf1">
<name>host1-kf</name>
<comment></comment>
<link href="/ovirt-engine/api/hosts/5650f5c0-6c01-4967-bce0-76465be8fbf1/nics" rel="nics"/>
...
<address>host1-kf</address>
<cpu>
<name>Intel Xeon Processor (Icelake)</name>
<speed>3000</speed>
<topology>
<cores>1</cores>
<sockets>6</sockets>
<threads>1</threads>
</topology>
<type>Intel Icelake Server Family</type>
</cpu>
<memory>16777216000</memory>
<os>
<type>RHEL</type>
<version>
<build>2</build>
<full_version>7.3.2 - 40.el7</full_version>
<major>7</major>
<minor>3</minor>
</version>
</os>
<port>54321</port>
<status>up</status>
<cluster href="/ovirt-engine/api/clusters/6e1d0a3e-fdfd-11ed-ad51-00163e232a46" id="6e1d0a3e-fdfd-11ed-ad51-00163e232a46"/>
</host>
</hosts>
Обратите внимание на id вашего хоста. Он идентифицирует этот хост по отношению к другим ресурсам вашей виртуальной среды.
Этот хост является членом кластера Default, а доступная подколлекция nics показывает, что этот хост подключен к сети ovirtmgmt.
6. Создание домена хранения данных на базе NFS
Домен хранения данных на базе NFS — это экспортированный общий ресурс NFS, подключенный к центру данных и предоставляющий хранилище для виртуализированных гостевых образов. Для создания нового домена хранения требуется запрос POST, содержащий представление домена хранения, отправленный по URL-адресу коллекции доменов хранения.
Вы можете включить опцию очистки после удаления по умолчанию в домене хранения. Чтобы настроить это, укажите wipe_after_delete в запросе POST. Этот параметр можно изменить после создания домена, но это не изменит свойства очистки после удаления уже существующих дисков.
Запрос должен быть таким:
POST /ovirt-engine/api/storagedomains HTTP/1.1
Accept: application/xml
Content-type: application/xml
А тело запроса должно выглядеть следующим образом:
<storage_domain>
<name>mydata</name>
<type>data</type>
<description>My data</description>
<storage>
<type>nfs</type>
<address>mynfs.example.com</address>
<path>/exports/mydata</path>
</storage>
<host>
<name>myhost</name>
</host>
</storage_domain>
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request POST \
--header 'Version: 4' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/xml' \
--data '
<storage_domain>
<name>mydata</name>
<description>My data</description>
<type>data</type>
<storage>
<type>nfs</type>
<address>mynfs.example.com</address>
<path>/exports/mydata</path>
</storage>
<host>
<name>myhost</name>
</host>
</storage_domain>
' \
https://myengine.example.com/ovirt-engine/api/storagedomains
Сервер использует хост myhost для создания домена хранения данных типа NFS mydata с именем пути экспорта mynfs.example.com:/exports/mydata. API также возвращает следующее представление только что созданного ресурса домена хранения типа StorageDomain:
<storage_domain href="/ovirt-engine/api/storagedomains/005" id="005">
<name>mydata</name>
<description>My data</description>
<available>42949672960</available>
<committed>0</committed>
<master>false</master>
<status>unattached</status>
<storage>
<address>mynfs.example.com</address>
<path>/exports/mydata</path>
<type>nfs</type>
</storage>
<storage_format>v5</storage_format>
<type>data</type>
<used>9663676416</used>
</storage_domain>
7. Создание домена ISO на базе NFS
Домен ISO на базе NFS — это смонтированная общая папка NFS, подключенная к центру данных и обеспечивающая хранилище для DVD/CD-ROM ISO и файлов образов виртуальных гибких дисков (VFD). Для создания нового домена хранения требуется запрос POST с включенным представлением домена хранения, отправленный по URL-адресу коллекции доменов хранения:
Запрос должен быть таким:
POST /ovirt-engine/api/storagedomains HTTP/1.1
Accept: application/xml
Content-type: application/xml
А тело запроса должно выглядеть следующим образом:
<storage_domain>
<name>myisos</name>
<description>My ISOs</description>
<type>iso</type>
<storage>
<type>nfs</type>
<address>mynfs.example.com</address>
<path>/exports/myisos</path>
</storage>
<host>
<name>myhost</name>
</host>
</storage_domain>
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request POST \
--header 'Version: 4' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/xml' \
--data '
<storage_domain>
<name>myisos</name>
<description>My ISOs</description>
<type>iso</type>
<storage>
<type>nfs</type>
<address>mynfs.example.com</address>
<path>/exports/myisos</path>
</storage>
<host>
<name>myhost</name>
</host>
</storage_domain>
' \
https://myengine.example.com/ovirt-engine/api/storagedomains
Сервер использует хост myhost для создания домена ISO на базе NFS, который называется myisos c путем экспорта mynfs.example.com:/exports/myisos. API также возвращает следующее представление только что созданного ресурса домена хранения типа StorageDomain:
<storage_domain href="/ovirt-engine/api/storagedomains/006" id="006">
<name>myiso</name>
<description>My ISOs</description>
<available>42949672960</available>
<committed>0</committed>
<master>false</master>
<status>unattached</status>
<storage>
<address>mynfs.example.com</address>
<path>/exports/myisos</path>
<type>nfs</type>
</storage>
<storage_format>v5</storage_format>
<type>iso</type>
<used>9663676416</used>
</storage_domain>
8. Прикрепление доменов хранения к центру данных
В следующем примере домены хранения mydata и myisos подключаются к центру данных Default.
Чтобы подключить домен хранения данных mydata, отправьте запрос следующего вида:
POST /ovirt-engine/api/datacenters/001/storagedomains HTTP/1.1
Accept: application/xml
Content-type: application/xml
С таким телом запроса:
<storage_domain>
<name>mydata</name>
</storage_domain>
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request POST \
--header 'Version: 4' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/xml' \
--data '
<storage_domain>
<name>mydata</name>
</storage_domain>
' \
https://myengine.example.com/ovirt-engine/api/datacenters/001/storagedomains
Чтобы подключить домен ISO myisos, отправьте запрос следующего вида:
POST /ovirt-engine/api/datacenters/001/storagedomains HTTP/1.1
Accept: application/xml
Content-type: application/xml
С таким телом запроса:
<storage_domain>
<name>myisos</name>
</storage_domain>
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request POST \
--header 'Version: 4' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/xml' \
--data '
<storage_domain>
<name>myisos</name>
</storage_domain>
' \
https://myengine.example.com/ovirt-engine/api/datacenters/001/storagedomains
9. Создание виртуальной машины
В следующем примере в кластере Default на основе шаблона Blank создается виртуальная машина с именем myvm. Запрос также определяет память виртуальной машины в размере 512 МБ и устанавливает в качестве загрузочного устройства виртуальный жесткий диск.
Запрос должен содержать объект типа Vm, описывающий создаваемую виртуальную машину:
POST /ovirt-engine/api/vms HTTP/1.1
Accept: application/xml
Content-type: application/xml
Тело запроса должно выглядеть следующим образом:
<vm>
<name>myvm</name>
<description>My VM</description>
<cluster>
<name>Default</name>
</cluster>
<template>
<name>Blank</name>
</template>
<memory>536870912</memory>
<os>
<boot>
<devices>
<device>hd</device>
</devices>
</boot>
</os>
</vm>
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request POST \
--header 'Version: 4' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/xml' \
--data '
<vm>
<name>myvm</name>
<description>My VM</description>
<cluster>
<name>Default</name>
</cluster>
<template>
<name>Blank</name>
</template>
<memory>536870912</memory>
<os>
<boot>
<devices>
<device>hd</device>
</devices>
</boot>
</os>
</vm>
' \
https://myengine.example.com/ovirt-engine/api/vms
Тело ответа будет объектом типа Vm:
<vm href="/ovirt-engine/api/vms/007" id="007">
<name>myvm</name>
<link href="/ovirt-engine/api/vms/007/diskattachments" rel="diskattachments"/>
<link href="/ovirt-engine/api/vms/007/nics" rel="nics"/>
...
<cpu>
<architecture>x86_64</architecture>
<topology>
<cores>1</cores>
<sockets>1</sockets>
<threads>1</threads>
</topology>
</cpu>
<memory>1073741824</memory>
<os>
<boot>
<devices>
<device>hd</device>
</devices>
</boot>
<type>other</type>
</os>
<type>desktop</type>
<cluster href="/ovirt-engine/api/clusters/002" id="002"/>
<status>down</status>
<original_template href="/ovirt-engine/api/templates/000" id="00"/>
<template href="/ovirt-engine/api/templates/000" id="000"/>
</vm>
10. Создание сетевой карты виртуальной машины
В следующем примере создается виртуальный сетевой интерфейс для подключения примера виртуальной машины к сети ovirtmgmt.
Запрос должен быть таким:
POST /ovirt-engine/api/vms/007/nics HTTP/1.1
Content-Type: application/xml
Accept: application/xml
Тело запроса должно содержать объект типа Nic, описывающий создаваемую сетевую карту:
<nic>
<name>mynic</name>
<description>My network interface card</description>
</nic>
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request POST \
--header 'Version: 4' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/xml' \
--data '
<nic>
<name>mynic</name>
<description>My network interface card</description>
</nic>
' \
https://myengine.example.com/ovirt-engine/api/vms/007/nics
11. Создание диска виртуальной машины
В следующем примере создается диск с возможностью копирования при записи объемом 8 ГБ для примера виртуальной машины.
Запрос должен быть таким:
POST /ovirt-engine/api/vms/007/diskattachments HTTP/1.1
Content-Type: application/xml
Accept: application/xml
Тело запроса должно быть объектом типа DiskAttachment, описывающим диск и способ его подключения к виртуальной машине:
<disk_attachment>
<bootable>false</bootable>
<interface>virtio</interface>
<active>true</active>
<disk>
<description>My disk</description>
<format>cow</format>
<name>mydisk</name>
<provisioned_size>8589934592</provisioned_size>
<storage_domains>
<storage_domain>
<name>mydata</name>
</storage_domain>
</storage_domains>
</disk>
</disk_attachment>
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request POST \
--header 'Version: 4' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/xml' \
--data '
<disk_attachment>
<bootable>false</bootable>
<interface>virtio</interface>
<active>true</active>
<disk>
<description>My disk</description>
<format>cow</format>
<name>mydisk</name>
<provisioned_size>8589934592</provisioned_size>
<storage_domains>
<storage_domain>
<name>mydata</name>
</storage_domain>
</storage_domains>
</disk>
</disk_attachment>
' \
https://myengine.example.com/ovirt-engine/api/vms/007/diskattachments
Атрибут storage_domains указывает API хранить диск в домене хранения данных mydata.
12. Прикрепление ISO-образа к виртуальной машине
Загрузочный носитель для следующего примера виртуальной машины требует ISO-образ компакт-диска или DVD для установки операционной системы. В этом примере используется образ CentOS 7.
Для использования виртуальными машинами образы ISO должны быть доступны в домене ISO myisos. Вы можете использовать сервисы ImageTransfers для создания передачи образа и ImageTransfer для загрузки ISO-образа.
После загрузки ISO-образа можно использовать API для запроса списка файлов из домена хранения ISO:
GET /ovirt-engine/api/storagedomains/006/files HTTP/1.1
Accept: application/xml
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request GET \
--header 'Version: 4' \
--header 'Accept: application/xml' \
https://myengine.example.com/ovirt-engine/api/storagedomains/006/files
Сервер возвращает следующий список объектов типа File, по одному для каждого доступного образа ISO:
<files>
<file href="..." id="CentOS-7-x86_64-Minimal.iso">
<name>CentOS-7-x86_64-Minimal.iso</name>
</file>
...
</files>
Пользователю API необходимо прикрепить CentOS-7-x86_64-Minimal.iso к примеру виртуальной машины. Прикрепление ISO-образа эквивалентно использованию кнопки Сменить CD на администрирования или пользовательском портале.
Запрос должен быть таким:
PUT /ovirt-engine/api/vms/007/cdroms/00000000-0000-0000-0000-000000000000 HTTP/1.1
Accept: application/xml
Content-type: application/xml
Тело запроса должно быть объектом типа Cdrom, содержащим внутренний атрибут file для указания идентификатора образа ISO:
<cdrom>
<file id="CentOS-7-x86_64-Minimal.iso"/>
</cdrom>
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request PUT \
--header 'Version: 4' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/xml' \
--data '
<cdrom>
<file id="CentOS-7-x86_64-Minimal.iso"/>
</cdrom>
' \
https://myengine.example.com/ovirt-engine/api/vms/007/cdroms/00000000-0000-0000-0000-000000000000
Дополнительные сведения см. в документации сервиса VmCdrom, управляющего компакт-дисками виртуальных машин.
13. Запуск виртуальной машины
Виртуальная среда готова, а виртуальная машина содержит все необходимые для работы компоненты. В этом примере виртуальная машина запускается с помощью метода start.
Запрос должен быть таким:
POST /ovirt-engine/api/vms/007/start HTTP/1.1
Accept: application/xml
Content-type: application/xml
Тело запроса должно выглядеть следующим образом:
<action>
<vm>
<os>
<boot>
<devices>
<device>cdrom</device>
</devices>
</boot>
</os>
</vm>
</action>
Тот же запрос с помощью команды curl:
curl \
--cacert '/etc/pki/ovirt-engine/ca.pem' \
--user 'api-user@internalsso:mypassword' \
--request POST \
--header 'Version: 4' \
--header 'Content-Type: application/xml' \
--header 'Accept: application/xml' \
--data '
<action>
<vm>
<os>
<boot>
<devices>
<device>cdrom</device>
</devices>
</boot>
</os>
</vm>
</action>
' \
https://myengine.example.com/ovirt-engine/api/vms/007/start
В теле запроса в качестве загрузочного устройства виртуальной машины задается CD-ROM только для этой загрузки. Это позволяет виртуальной машине установить операционную систему из прикрепленного ISO-образа. Загрузочное устройство возвращается к диску для всех будущих загрузок.