查询实例锁定状态¶
https://blueprints.launchpad.net/nova/+spec/get-lock-status-of-instance
目前我们仅支持锁定/解锁实例,但无法查询实例是否已锁定。本提案旨在将锁定状态添加到实例的详细视图中。
问题描述¶
我们现在可以通过 nova API 锁定/解锁实例。但我们不返回服务器的锁定状态。
用例¶
当用户需要知道实例状态时,这很有用
项目优先级¶
无
提议的变更¶
将锁定状态显示为实例详细视图的一部分(即 ‘nova show’)
备选方案¶
可以通过尝试锁定实例来识别锁定状态,但如果实例尚未锁定,这将产生锁定它的副作用。如果另一个进程同时尝试以相同的方式查询锁定状态,则可能会得到误报。同样,如果另一个进程在查询期间尝试删除已锁定的实例,则会在不应该失败时失败。
数据模型影响¶
无
REST API 影响¶
将以下输出添加到 GET /v2/45210fba73d24dd681dc5c292c6b1e7f/ servers/a9dd1fd6-27fb-4128-92e6-93bcab085a98 的响应体中
以下锁定信息将添加到现有的输出信息中。
参数 |
类型 |
描述 |
|---|---|---|
locked |
布尔值 |
实例是否已锁定 |
locked_by |
string |
锁定实例的用户,当前有效值为 ‘admin’ 和 ‘owner’ |
如果 locked 为 True,将把以下信息添加到输出中
参数 |
数据 |
|---|---|
locked |
True |
locked_by |
‘admin’ |
如果 locked 为 false,将返回以下信息
参数 |
数据 |
|---|---|
locked |
False |
locked_by |
无 |
v2 和 v3 API 都会受到影响。
在 v2 API 中,将添加扩展 os-server-locked-status 以宣传额外信息。别名:os-server-locked-status 名称:ServerLockStatus 命名空间:https://docs.openstack.org/compute/ext/server_locked_status/api/v2 当加载新的扩展 “os-server-locked-status” 时,将向 os-hypervisor API 添加 2 个新字段 ‘locked’、‘locked_by’。
在 v3 API 中,锁定信息将直接添加到 extended_status.py 中,因为 locked_by 已经存在。
安全影响¶
无。
通知影响¶
无。
其他最终用户影响¶
这将允许用户查询实例的锁定状态。
python-novaclient 将更新,以便在 ‘nova show’ 命令中显示锁定状态。
如果旧版 v2 API 的输出中没有锁定状态信息,新的 python-novaclient 将排除锁定状态和 locked_by 字段。
性能影响¶
无
其他部署者影响¶
无。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
jichenjc
工作项¶
Nova v2 API 更新。Nova v3 API 更新。Tempest 测试用例更新,用于检查 locked 字段。
依赖项¶
无
测试¶
将添加 Tempest 测试用例,特别是与锁定/解锁相关的测试用例将通过要添加的 API 进行检查,例如,新的锁定状态字段将是强制要求的字段。
文档影响¶
API 文档将更新,以列出锁定状态。
参考资料¶
无