增强 Mgmt-Show 以支持已删除的实例

蓝图

https://blueprints.launchpad.net/trove/+spec/mgmt-show-deleted

目前,GET /v1.0/<tenant_id>/mgmt/instances/<instance_id> 对于标记为已删除的 Trove 实例不起作用。

建议引入一个可选的查询参数,指示无论 Trove 实例是否标记为已删除,都应返回 Trove 实例信息。

问题描述

如果没有 API 可以检索已删除实例的信息,部署者将被迫直接查询 Trove 基础设施数据库。

mgmt-list 操作支持在提供 ?deleted=true 时返回已删除的实例,因此,通过 mgmt-show 访问已删除实例的附加信息是合理的。

用例

  • 作为部署者,我希望能够检索已删除的 Trove 实例的信息。

提议的变更

GET /v1.0/<tenant_id>/mgmt/instances/<instance_id> 中支持 ?deleted=true/false 查询参数

行为变更

  • 如果 deleted=true,并且 Trove 实例 UUID 存在于基础设施数据库中,则返回实例信息,请求成功。

  • 如果 deleted=false,或者省略了 deleted 查询参数,则只有在 trove 实例未标记为已删除时,请求才会成功。

  • 如果 compute_instance_id 存在于 trove.instances 行中,即使 Nova API 查询失败,也将其在 mgmt-show 响应的 instance.server.id 中返回。

  • 如果 volume_id 存在于 trove.instances 行中,即使 Cinder API 查询失败,也将其在 mgmt-show 响应的 instance.volume.id 中返回。

配置

没有配置变更。

数据库

没有数据库变更。

公共 API

没有公共 API 变更。

公共 API 安全

没有公共 API 安全相关的变更。

管理 API

GET /v1.0/<tenant_id>/mgmt/instances/<instance_id> 将被增强以支持 ‘deleted’ 查询参数。

作为参考,mgmt-show 的响应:http://git.io/2RwWWA

目前,如果 Nova API 不识别 compute_instance_id,mgmt-show 响应将不会包含 instance.server{}. 同样,如果 Cinder API 不识别 volume_id,mgmt-show 响应将不会包含 instance.volume{}.

此蓝图通过始终返回 instance.server.id 和 instance.volume.id(如果它们存在于 trove.instances 表中)来更改此行为。

内部 API

没有内部 API 更改。

Guest Agent

没有 Guest Agent 变更。

备选方案

鉴于其他 Trove 路由中使用 ‘deleted=true/false’ 的现有技术,没有相关的替代方案。

实现

负责人

主要负责人

Auston McReynolds (amcrn)

里程碑

Kilo-1

依赖项

没有依赖项。

测试

标准。

文档影响

如果管理 API 已记录(我不认为它已记录),那么添加 ‘deleted’ 查询参数是相关的。

参考资料

无。