第 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
等其它信息。这些信息没有包括在这个实例中。