整合获取控制台的 API¶
https://blueprints.launchpad.net/nova/+spec/consolidate-console-api
Nova 目前为每种支持的控制台类型都提供了不同的公共 API 来获取控制台访问权限。该提案是将所有这些 API 整合为一个。
问题描述¶
获取控制台访问权限的 API 与底层协议的名称紧密耦合:os-getVNCConsole、os-getRDPConsole 等。结果是,每次我们想要添加对新控制台的支持时,都需要引入一个新的公共 API。更好的解决方案是只有一个 API,即 get_console,它可以用于获取所有类型的控制台的访问权限。
用例¶
作为 Nova 开发者,我希望添加对新控制台类型支持,并且不想向公共 API 添加更多混乱。
项目优先级¶
无
提议的变更¶
该提案是引入一个用于获取控制台访问权限的单一公共 API,并弃用我们目前所有现有的公共 API。实现将检查请求并调用 ComputeManager 的相关 get_XXX_console。
备选方案¶
另一种选择是继续为每种新的控制台类型添加公共 API,但这并不是我们想要的。
数据模型影响¶
无
REST API 影响¶
新的 API 将通过 API 微版本暴露,并具有以下定义
请求
POST /servers/<uuid>/remote-consoles
{
"remote_console": {
"protocol": ["vnc"|"rdp"|"serial"|"spice"],
"type": ["novnc"|"xpvnc"|"rdp-html5"|"spice-html5"|"serial"]
}
}
请求中的 ‘type’ 参数是可选的,当所选协议支持多种连接类型时应使用它。
响应
200 OK
{
"remote_console": {
"url": string,
"protocol": ["vnc"|"rdp"|"serial"|"spice"],
"type": ["novnc"|"xpvnc"|"rdp-html5"|"spice-html5"|"serial"]
}
}
一些失败场景及其对应的错误代码包括:* 请求中协议/类型的错误值 - “400 Bad Request” * 实例尚未准备好 - “409 Conflict” * 虚拟驱动程序不支持此控制台类型 - “501 Not Implemented”
旧的 API ‘os-getVNCConsole’、‘os-getSPICEConsole’、‘os-getSerialConsole’ 和 ‘os-getRDPConsole’ 将在添加新 API 的微版本中移除。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
将为 Nova CLI 添加一个新的 ‘console-get’ 子命令,该子命令将支持所有控制台类型。
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
rgerganov
工作项¶
已经有一个补丁实现了蓝图,但它没有合并到 Kilo 中:https://review.openstack.org/#/c/148509/
依赖项¶
无
测试¶
将向 tempest 添加一个新的测试,以测试新的 API。
文档影响¶
新的 API 应该被记录下来,并且我们应该鼓励用户使用它,而不是将被弃用的旧 API。
参考资料¶
无