Примеры использования REST API
Примеры в этом разделе показывают, как использовать REST API для настройки базовой среды zVirt и создания виртуальной машины. В дополнение к стандартным предварительным требованиям для этих примеров требуется следующее:
-
Установленная и настроенная среда zVirt, имеющая доступ к сети.
-
Файл ISO, содержащий операционную систему виртуальной машины, которую вы хотите установить. В этой главе в качестве примера установки ISO используется CentOS 7.
В примерах используется curl для демонстрации запросов API с помощью клиентского приложения. Вы можете использовать любое приложение, которое отправляет HTTP-запросы.
|
Заголовки HTTP-запросов в этом примере опускают заголовки В curl примерах используется имя пользователя api-user@internalsso, пароль mypassword, расположение сертификата /etc/pki/ovirt-engine/ca.pem и имя хоста myengine.example.com. Вы должны заменить их правильными значениями для вашей среды. |
zVirt генерирует уникальный идентификатор атрибута id для каждого ресурса. Идентификационные коды в этом примере будут отличаться от идентификационных кодов в вашей среде zVirt.
| Во многих примерах некоторые атрибуты результатов, возвращаемых 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 при установке создает центр данных 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 при установке создает кластер Default. В этом примере кластер Default используется для группировки ресурсов в среде zVirt.
Следующий запрос извлекает представление коллекции кластеров:
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 при установке по умолчанию создает сеть 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-образа. Загрузочное устройство возвращается к диску для всех будущих загрузок.