第 3 章 REST API 快速入门介绍
本章提供了一个实例,它展示了使用 REST API 设置一个基本的 Red Hat Enterprise Virtualization 环境并创建一个虚拟机的方法。
除了前面提到的标准先决条件外,这个实例还需要以下条件:
- 一个包括了 Red Hat Enterprise Virtualization Hypervisor 的、已经联网并配置的主机;
- 包括了需要安装的虚拟机操作系统的 ISO 文件。在这个实例中我们使用 Red Hat Enterprise Linux Server 6 作为虚拟机的操作系统;
- Red Hat Enterprise Virtualization 提供的、用来上传操作系统 ISO 文件的 engine-iso-uploader 工具程序。
这个实例使用 cURL 来演示到客户端应用程序的 REST 请求。任何支持 HTTP 请求的程序都可以替代这里的 cURL。
重要
为了简化,这个实例中的 HTTP 请求头中都省略掉了
Host: 和 Authorization: 项。这些项是强制的项,它们需要和您所安装的 Red Hat Enterprise Virtualization Manager 相对应。
重要
所有的 cURL 实例中的验证信息和证书位置都使用替换符(分别是
USER:PASS 和 CERT)。请确认 cURL 的所有请求都包括相关的验证信息。
注意
Red Hat Enterprise Virtualization Manager 会为每个资源的
id 属性生成一个 GUID。这里所使用的值可能会和您实际使用的 Red Hat Enterprise Virtualization 环境中的值不同。
3.1. 实例:访问 API 进入点(API Entry Point) 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下请求会获得 API 主进入点的表述。
例 3.1. 访问 API 的进入点
请求:
GET /api HTTP/1.1
Accept: application/xml
cURL 命令:
# curl -X GET -H "Accept: application/xml" -u [USER:PASS] \
--cacert [CERT] https://[RHEVM Host]:443/api
结果:
HTTP/1.1 200 OK
Content-Type: application/xml
<api>
<link rel="capabilities" href="/api/capabilities"/>
<link rel="clusters" href="/api/clusters"/>
<link rel="clusters/search" href="/api/clusters?search={query}"/>
<link rel="datacenters" href="/api/datacenters"/>
<link rel="datacenters/search" href="/api/datacenters?search={query}"/>
<link rel="events" href="/api/events"/>
<link rel="events/search" href="/api/events?search={query}"/>
<link rel="hosts" href="/api/hosts"/>
<link rel="hosts/search" href="/api/hosts?search={query}"/>
<link rel="networks" href="/api/networks"/>
<link rel="roles" href="/api/roles"/>
<link rel="storagedomains" href="/api/storagedomains"/>
<link rel="storagedomains/search" href="/api/storagedomains?search={query}"/>
<link rel="tags" href="/api/tags"/>
<link rel="templates" href="/api/templates"/>
<link rel="templates/search" href="/api/templates?search={query}"/>
<link rel="users" href="/api/users"/>
<link rel="groups" href="/api/groups"/>
<link rel="domains" href="/api/domains"/>
<link rel="vmpools" href="/api/vmpools"/>
<link rel="vmpools/search" href="/api/vmpools?search={query}"/>
<link rel="vms" href="/api/vms"/>
<link rel="vms/search" href="/api/vms?search={query}"/>
<special_objects>
<link rel="templates/blank"
href="/api/templates/00000000-0000-0000-0000-000000000000"/>
<link rel="tags/root"
href="/api/tags/00000000-0000-0000-0000-000000000000"/>
</special_objects>
<product_info>
<name>Red Hat Enterprise Virtualization</name>
<vendor>Red Hat</vendor>
<version revision="0" build="0" minor="0" major="3"/>
</product_info>
<summary>
<vms>
<total>5</total>
<active>0</active>
</vms>
<hosts>
<total>1</total>
<active>1</active>
</hosts>
<users>
<total>1</total>
<active>1</active>
</users>
<storage_domains>
<total>2</total>
<active>2</active>
</storage_domains>
</summary>
</api>
进入点为用户提供了虚拟环境中的集合连接。每个集合连接的
rel= 属性提供了到这个连接的参考点。这个实例的下一步会检查 datacenter 集合(连接是 rel="datacenter")。
进入点还包括了
product_info、special_objects 和 summary 等其它信息。这些信息没有包括在这个实例中。