在实例创建中添加 ‘volume_type’ 参数

Cinder 允许使用多种存储后端。在创建卷时,‘volume_type’ 参数将用于确定将请求发送到哪种类型的后端。1 用户应该能够在实例/集群创建时指定 Trove 卷的后端。

Launchpad 蓝图:https://blueprints.launchpad.net/trove/+spec/volume-type-on-create

问题描述

Trove 操作员希望向其 Trove 用户公开不同类型的存储,以便为他们可以用于数据库实例和数据库集群的配置提供更大的灵活性

提议的变更

将在实例和集群创建 API 调用中接受的 API 的卷信息中添加一个可选的 ‘volume_type’ 属性。当创建新的 Trove 卷时,此属性将传递给 Cinder 客户端。如果没有指定 volume_type,将使用默认配置值。

配置

数据库

公共 API

将在实例和集群创建 API 调用中接受的卷信息结构中添加一个可选的 ‘volume_type’ 属性。

定义大小为 ‘1’ 且 Cinder 卷类型为 ‘my-type-1’ 的 API payload

'volume': {'size': '1', 'type': 'my-type-1'}

定义大小为 ‘1’ 且没有 Cinder 卷类型的 API payload

'volume': {'size': '1', 'type': None}
'volume': {'size': '1'}

公共 API 安全

Python API

CLI (python-troveclient)

volume_type 值是卷类型的字符串名称,由 ‘cinder type-list’ 命令返回。该值不会在客户端进行验证。

对于实例创建,将添加一个可选的 ‘–volume_type’ 参数。卷类型将附加到卷信息结构中的卷大小。如果在实例创建时禁用了卷支持或未指定 ‘–size’ 参数,则将忽略 ‘volume_type’ 参数。

trove create ... --size 1 --volume_type my-type-1 ...

对于集群创建,‘–instance’ 参数将扩展为包含 ‘volume_type’ 选项。如果未启用卷支持或未指定卷大小,则将忽略 ‘volume_type’ 选项。

trove cluster-create ... --instance volume=1,volume_type=my-type-1 ...

内部 API

将在必要的地方添加一个新的 ‘volume_type’ 参数。

Guest Agent

备选方案

Dashboard 影响 (UX)

待定 (在批准后添加的部分)

实现

负责人

<pmalik>

里程碑

Mitaka-1

工作项

这项工作将包括对 Trove 客户端和服务器代码的更新。

升级影响

依赖项

测试

现有的 Trove 测试将扩展为测试 ‘volume_type’ 参数。将添加新的客户端测试以涵盖添加的参数。

文档影响

需要在实例和集群创建命令中记录新的 ‘volume_type’ 参数。

附录