添加 share_groups 配额¶
https://blueprints.launchpad.net/manila/+spec/add-share-groups-quota
Manila 能够创建多种不同的资源,这些资源会消耗真实的后端资源。由于真实资源总是有限的,因此为它们设置不同类型的限制/配额是实用的。而用户可创建的 share groups 数量是目前未被限制的资源之一。Share Groups 在 Ocata 时间框架中添加,在 Ocata 之前的版本中,它们最初是 consistency-groups。
问题描述¶
问题在于可能调度创建无限数量的 share groups,这可能导致 2 个不良后果
DB 中充斥着任何数量的 DB 表记录;
浪费真实的后端资源。
因此,为 share_group 资源实施配额将解决上述问题。
用例¶
对 Manila 资源的使用控制现在将更加灵活,因为管理员将能够为之前未跟踪的 Manila 资源设置额外的配额。
提议的变更¶
在现有的配额机制中实现一个新的名为“share_groups”的配额资源。此配额将跟踪创建的 share groups 资源数量,并在超出限制后限制其创建。默认值应等于 shares 的数量。
备选方案¶
不要为 share groups 实施配额。在这种情况下,任何用户都将能够创建无限数量的 share groups。
数据模型影响¶
现有的 DB 模式不需要任何更改。因此,不需要新的 DB 迁移。我们将重用现有的逻辑,我们可以通过名称跟踪任何数量的资源。
REST API 影响¶
只有一个 (1) API 将被更改,即“quota-update”。它将能够处理 POST 数据中提供的另一个键,名为“share_groups”。此外,“quota-show”命令也将返回包含此键的配额资源[和使用情况]的字典。这两个更改都需要 microversion 的提升,并且仅在当前或更高版本的 microversion 中可用。如果在此 spec 实现时 share-groups 功能仍然是‘experimental’,那么这些 API 更改仅在提供并设置为 ‘true’ 布尔值的 ‘X-OpenStack-Manila-API-Experimental’ header 时可用。
更新配额
URL: /quota-sets
方法:PUT
JSON body
{ 'quotas': { 'share_groups': 100, } }
驱动程序影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
与之前的行为相比,用户现在将受到 share groups 数量的限制。
Manila 客户端将在“quota-update”命令中添加以下可选键
$ manila quota-update <tenant_id> --share-groups %amount_as_integer_value%
通常,配额可以设置为任何值,并且如果使用量超过当前配额,则创建新资源的请求将被拒绝。
性能影响¶
资源使用情况将在每次创建/删除资源时进行检查,但这是一个相对廉价的操作。
其他部署者影响¶
部署者可以使用配置文件或“quota-update”API 设置 share groups 的配额。这是一种可选的可能性,不是强制操作。新的选项将以与所有现有选项相同的方式命名 - “quota_share_groups”。它仅接受整数值。
开发人员影响¶
无
实现¶
负责人¶
主要负责人
vponomaryov ( vponomaryov@mirantis.com )
工作项¶
服务器端 API 更改,包括单元测试和功能测试
Manila 客户端更改,包括单元测试和功能测试
Manila UI 更改,包括单元测试
依赖项¶
无
测试¶
‘manila’、‘python-manilaclient’ 和 ‘manila-ui’ 项目中的单元测试
‘manila’ 和 ‘python-manilaclient’ 项目中的功能测试
文档影响¶
admin 指南:将新的 ‘–share-groups’ 参数添加到 ‘update-quota’ 命令。
devref:反映提议的更改