删除多个卷元数据键

https://blueprints.launchpad.net/cinder/+spec/delete-multiple-metadata-keys

问题描述

当前 Cinder API 功能的实现方式是,删除多个卷元数据需要针对每个元数据键发起单独的删除请求。需要删除的键越多,API 请求和数据库查询就越多。一次性删除多个元数据键将更有效率。

用例

通过单个请求删除多个卷元数据键。

提议的变更

要删除多个元数据项,而不影响其余项,只需在请求体中更新包含完整更新后的元数据项列表(不包含要删除的项)。成功后,服务器将返回 200 状态码。

注意

PUT 请求应使用 etags 以避免丢失更新问题。

备选方案

提供一个删除所有键的选项,而不是指定一个列表。

数据模型影响

REST API 影响

在这种情况下将使用现有的更新元数据 API。如果指定要删除的某些项不存在,API 调用将失败。API 调用将发送要更新的键集,并忽略缺失的键。

安全影响

通知影响

与今天一样,每个删除的元数据项将发出一个删除通知。

其他最终用户影响

用户将拥有新的 API。

性能影响

通过单个请求删除卷元数据键可以提高性能,减少数据库调用。在处理大量键时,这一点非常重要。由于减少了请求往返次数,性能得到提升。

其他部署者影响

开发人员影响

实现

负责人

主要负责人:Yuriy Nesenenko(ynesenenko@mirantis.com)

工作项

  • 扩展 python-cinderclient 以支持新的 API。

  • 添加单元测试和 Tempest 测试。

依赖项

依赖于 Cinder API 微版本。依赖于 API WG 补丁 https://review.openstack.org/281511/ 依赖于 API WG 补丁 https://review.openstack.org/301846/

测试

需要单元测试和功能测试以确保响应正常工作。

文档影响

有关 API 的文档需要反映这些更改。

参考资料