查询一致性组详情的改进¶
https://blueprints.launchpad.net/cinder/+spec/improvement-to-query-consistency-group-detail
在查询一致性组详情时,如果存在卷,则返回卷 ID 列表。
问题描述¶
目前,查询一致性组详情不会返回该一致性组中存在的卷 ID 列表,最终用户不知道其中包含多少卷以及哪些卷。他们必须逐个查询卷详情以获取一致性组的 ID,并形成卷 ID 列表。这给用户体验带来了很大的不便。
用例¶
在将卷添加到一致性组后,最终用户希望在决定创建一致性组快照之前,知道一致性组中包含多少卷以及哪些卷。通过此功能,他们可以通过查询一致性组详情轻松获取此信息,并进行进一步调整,例如添加更多卷或从该一致性组中删除一些卷。
提议的变更¶
1. 如果用户需要这些卷的信息,则将卷 ID 列表添加到查询一致性组详情的响应体中。
2. 向 /volumes 添加 group_id 查询过滤器,以获取一致性组中的卷列表。例如“cinder list –group-id <CG 的 UUID>”。
注意:由于我们正在开发通用卷组[1],为了避免后续不必要的代码迁移,我们将首先实现 ‘group_id’ 查询过滤器,然后在通用卷组合并后,我们将根据通用组规范实现 #1 方法。
备选方案¶
无
数据模型影响¶
对于性能影响,如果我们想向 consistencygroup_id 列添加索引,则会对数据模型产生影响。
REST API 影响¶
如果指定参数 ‘list_volume=True’,则将卷 ID 列表添加到查询 CG 详情的响应体中。这现在取决于通用组规范,因此仅在此处留下一个示例
GET /v3/{project_id}/consistencygroups/{consistency_group_id}?list_volume=True
RESP BODY
{"consistencygroup": {"status": "XXX",
"description": "XXX",
...,
"volume_list":['volume_id1',
...,
'volume_idn']
}
}
在查询卷列表/详情的 URL 中添加过滤器 “group_id=xxx”
GET /v3/{project_id}/volumes?group_id=XXX
安全影响¶
无
通知影响¶
无。
其他最终用户影响¶
无
性能影响¶
如果用户没有使用 ‘list_volume=True’,则没有性能影响。我们只需要考虑添加额外的数据库查询来获取所有具有相同 CG ID 的卷 ID。因此,使用 ‘list_volume=True’ 时,性能影响应该很小。如果考虑大规模卷,我们可以向卷表的 consistencygroup_id 列添加索引以减少性能影响。
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
wanghao<wanghao749@huawei.com>
工作项¶
在数据库查询中实现代码并将列表添加到响应体中。
更新 cinderclient 以支持此功能。
更新 API 文档。
依赖项¶
无
测试¶
需要创建单元和 Tempest 测试来覆盖“Proposed change”中提到的代码更改。
文档影响¶
Cinder API 文档需要更新以反映 REST API 的更改。
参考资料¶
[1]https://review.openstack.org/#/c/303893/