支持 Cinder API 版本 2¶
https://blueprints.launchpad.net/sahara/+spec/support-cinder-api-v2
本规范建议添加对 Cinder API 第二版的支持,该版本带来了有用的改进,并将很快取代第一版。
问题描述¶
目前 Sahara 仅使用 Cinder API 的版本 1 来创建卷。然而,第二版带来了诸如调度器提示、更一致的响应、缓存、过滤等有用的功能。
此外,Cinder 正在弃用版本 1,转而支持版本 2,因此同时支持两者将使用户的切换更加容易。
用例
作为开发者,我希望能够在创建集群时将调度器提示传递给 Cinder,以便更精确地选择卷并实现更高的性能。
作为开发者,我希望将过滤功能纳入我的请求中,以减轻 Cinder 的查询负担。
作为部署者,我希望能够选择旧版 Cinder API v1 和较新的 v2 API 之间进行选择。
提议的变更¶
实现将添加一个配置选项 cinder_api_version,其默认值为
cinder_api_version=1
但可以通过
cinder_api_version=2
通过修改 sahara.conf 来更改。
sahara/utils/openstack/cinder.py 中的 client() 方法将根据配置返回 clientv1() 或 clientv2()。
替代方案¶
等待 Cinder API v1 被弃用,然后突然切换到 v2。
数据模型影响¶
无
REST API 影响¶
无
其他最终用户影响¶
无
部署者影响¶
如果部署者想继续使用 Cinder API 版本 1,则无需执行任何操作。
如果部署者想升级到版本 2,则应覆盖 sahara.conf 中的 cinder_api_version 选项。
开发者影响¶
开发者可以读取 CONF.cinder_api_version 以了解正在使用的 API 版本。
Sahara-image-elements impact¶
无
Sahara-dashboard / Horizon 影响¶
无
实现¶
负责人¶
- 主要负责人
adrien-verge
工作项¶
添加一个配置选项:cinder_api_version。
在 sahara/utils/openstack/cinder.py 中添加一些逻辑,以根据配置选择正确的 Cinder 客户端。
依赖项¶
无
测试¶
与 v1 API 相同。
文档影响¶
无