支持 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 相同。

文档影响

参考资料