未指定类型的卷到默认卷类型

https://blueprints.launchpad.net/cinder/+spec/untyped-volumes-default-volume-type

此蓝图建议使用默认卷类型,而不是允许用户创建未指定类型的卷。

问题描述

目前,用户可以创建没有卷类型的卷。由于卷的特性是由卷类型定义的,因此不应允许创建未指定类型的卷。

用例

大多数用户使用卷类型,如果始终将卷类型附加到卷,我们的代码会更简单且错误更少,因此我们应该强制所有部署使用卷类型。

提议的变更

此规范提出以下更改

  • 在 cinder 数据库迁移或 cinder 服务启动时创建默认卷类型。默认卷类型将没有分配额外的规格,并命名为 __DEFAULT__

  • 如果已经存在名为 __DEFAULT__ 的卷类型,部署者需要在升级之前重命名或删除它

  • 添加在线迁移,将所有未指定类型的卷和快照转换为 __DEFAULT__ 卷类型

  • default_volume_type 配置选项设置默认值 __DEFAULT__,以便在 cinder.conf 中未设置时选择默认值

  • 不允许通过 type-delete 删除 __DEFAULT__ 卷类型

  • 卷类型 (__DEFAULT__) 的更新将由 MANAGE_POLICY 处理,默认情况下仅限管理员操作

备选方案

  1. 强制在创建卷时指定卷类型。

  2. 将其作为幕后数据库迁移进行,而不是依赖于升级检查器的手动干预。

  3. 将其作为最佳实践操作在卷管理器中进行,如果出于任何原因被排除在外,则迁移大多数部署,并跳过那些被排除的部署。

REST API 影响

数据模型影响

安全影响

通知影响

其他最终用户影响

  • 所有在未指定 volume-type 参数的情况下创建的卷都将与默认卷类型关联。

  • 未指定类型的卷和快照将被分配 __DEFAULT__ 卷类型

  • 用户将不再能够创建卷类型为 None 的卷。

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Rajat Dhasmana <rajatdhasmana@gmail.com>

其他负责人

Eric Harney <eharney@redhat.com>

工作项

通过限制未指定类型的卷,我们需要进行以下更改

  • 添加升级检查,以验证当前部署是否包含名为 __DEFAULT__ 的卷类型,否则升级将失败

  • 在 cinder 数据库迁移或服务启动时创建 __DEFAULT__ 卷类型

  • 添加升级检查,以验证在升级之前是否存在名为 __DEFAULT__ 的类型

  • 添加在线迁移,将所有未指定类型的卷和快照转换为 __DEFAULT__ 卷类型

  • 与将 default_volume_type 关联到卷的相关代码更改(如果用户未指定卷类型)

依赖项

测试

将实现单元测试、tempest 和其他相关测试。

文档影响

需要更新卷类型相关的文档。

参考资料