查询实例锁定状态

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 文档将更新,以列出锁定状态。

参考资料