删除多个卷元数据键¶
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 的文档需要反映这些更改。
参考资料¶
无