摘要
本文描述了redhat虚拟化管理器的REST API。
本文是由ovirt-engine-api-mode代码中的文档注释生成。
1. 介绍
红帽虚拟化管理器提供了一个REST API。该api为软件开发人员和系统管理员提供了在标准web界面之外,控制红帽虚拟化环境的功能。该API通过标准HTTP协议将虚拟化环境的功能与外部脚本集成。
API的优点:
- 支持广泛的客户端:任何支持HTTP协议的编程语言、框架或系统都可以使用该API。
REST API
使用红帽虚拟化API的前提条件:
- 红帽虚拟化管理器的网络安装,包括API
- 发起和接收来自API服务器的HTTP请求的客户端,例如:SDK、cURL、RESTClient
- 了解HTTP协议,它是用于REST API交互的协议
- 了解XML知识,API使用它来构造资源表示
2. 身份验证与安全
2.1 SSL/TLS认证
红帽虚拟化API需要使用HTTPS实现与客户端软件(如SDK)的安全交互。这涉及到获取服务器使用的CA证书,并将其导入到客户端的证书存储中。
2.2 获取CA证书
从红帽虚拟化管理器获取CA证书,使用以下方法之一将其传输到客户端机器:
方法1.
使用openssl s_client
命令行工具,与服务器执行真正的TLS握手,然后提取它提供的证书。运行如下命令:
$ openssl s_client \
-connect myengine.example.com:443 \
-showcerts \
< /dev/null
该命令将连接到服务器,并显示类似如下的输出:
CONNECTED(00000003)
depth=1 C = US, O = Example Inc., CN = myengine.example.com.23416
verify error:num=19:self signed certificate in certificate chain
---
Certificate chain
0 s:/C=US/O=Example Inc./CN=myengine.example.com
i:/C=US/O=Example Inc./CN=myengine.example.com.23416
-----BEGIN CERTIFICATE-----
MIIEaTCCA1GgAwIBAgICEAQwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCVVMx
FTATBgNVBAoTDEV4YW1wbGUgSW5jLjEjMCEGA1UEAxMaZW5naW5lNDEuZXhhbXBs
SVlJe7e5FTEtHJGTAeWWM6dGbsFhip5VXM0gfqg=
-----END CERTIFICATE-----
1 s:/C=US/O=Example Inc./CN=myengine.example.com.23416
i:/C=US/O=Example Inc./CN=myengine.example.com.23416
-----BEGIN CERTIFICATE-----
MIIDxjCCAq6gAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCVVMx
FTATBgNVBAoTDEV4YW1wbGUgSW5jLjEjMCEGA1UEAxMaZW5naW5lNDEuZXhhbXBs
Pkyg1rQHR6ebGQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
和-----END CERTIFICATE-----
之间的文本表示服务器提供的证书。第一个是服务器本身的证书,最后一个是CA的证书。将CA证书(包括标记)复制到ca.crt
文件中。结果应该是这样的:
-----BEGIN CERTIFICATE-----
MIIDxjCCAq6gAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCVVMx
FTATBgNVBAoTDEV4YW1wbGUgSW5jLjEjMCEGA1UEAxMaZW5naW5lNDEuZXhhbXBs
Pkyg1rQHR6ebGQ==
-----END CERTIFICATE-----
这是获取服务器使用的CA证书最可靠的方法。这里描述的其他方法在大多数情况下都可以工作,但是如果服务器管理员手动替换了CA证书,它们将无法获得正确的CA证书。
3. 常见概念
3.1 类型
API接收和返回的不同类型,有三种相关的类型:
- 基本类型:描述简单类型的对象,如字符串或整数
- 枚举类型:描述有效值的列表
- 结构化类型:描述具有多个属性和链接的结构化对象
3.2 表示形式
在客户端和服务器之间传输对象时,需要表示对象的状态。
API支持XML和JSON作为输入和输出对象状态的表示形式。