将通用卷组纳入配额管理

https://blueprints.launchpad.net/cinder/+spec/add-volumegroup-into-quota-management

通用卷组目前有其自身的配额机制。但我们无法在 API 层获取有关通用卷组配额的任何信息。

问题描述

Cinder 已经实现了通用卷组配额机制。这意味着在 DB 层存在一个通用卷组配额类(硬限制为 10)。但通用卷组的配额信息并未包含在任何配额 API 的响应体中,因此用户无法获取或更新它。

用例

Cinder 应该允许用户获取和更新通用卷组的配额。用户只能使用通用卷组配额的默认值且无法更新它,这是非常糟糕的。通过此更改,用户可以 1) 更改通用卷组的硬限制值,2) 通过 Cinder 的配额 API 获取通用卷组的配额使用情况。

提议的变更

让配额管理承担通用卷组配额。以下五个 API 将被更改:1) quota-class-show

GET /os-quota-class-sets/default

在响应体中添加一行。

{
    "quota_class_set": {
        "groups": 10
    }
}

2) quota-show, quota-usage

GET /os-quota-sets/{project_id}?usage={False, True}

在响应体中添加一行。

{
    "quota_set": {
        "groups": {
            "reserved": 0,
            "allocated": 0,
            "limit": 10,
            "in_use": 0
        }
    }
}

3) quota-defaults

GET /os-quota-sets/{project_id}/defaults

在响应体中添加一行。

{
    "quota_set": {
        "groups": 10
    }
}

4) quota-class-update

PUT /os-quota-class-sets/default

允许更新“groups”并在响应体中添加一行。

{
    "quota_class_set": {
        "groups": 10
    }
}

5) quota-update

PUT /os-quota-sets/{project_id}

允许更新“groups”并在响应体中添加一行。

{
    "quota_set": {
        "groups": 10
    }
}

备选方案

保持不变。

数据模型影响

REST API 影响

  • “quota-defaults”、“quota-usage”、“quota-show”和“quota-class-show” API 的响应体将包含通用卷组。

  • “quota-update”和“quota-class-update” API 将接受“groups”参数,并且响应体将包含通用卷组。

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

无。

实现

负责人

主要负责人

wangxiyuan

工作项

  • 将通用卷组的配额添加到配额 API

  • 添加和更新单元测试

  • 更新 CinderClient 的配额命令

依赖项

测试

标准单元测试和手动测试。

文档影响

  • 应更新 quota-defaults、quota-usage、quota-show 和 quota-class-show 的响应体。

  • 应更新 quota-update、quota-class-update 的请求体。

参考资料