向 quota-set API 集合添加详细 API

https://blueprints.launchpad.net/manila/+spec/admin-check-tenant-quota-usage

目前,在 Manila 中,我们只能通过 ‘limit’ 属性获取用户和租户的 quota-set 信息,但这对于用户的各种用例来说过于有限。在其他 OpenStack 组件(例如 Nova)中,它既具有检查 ‘quota-show’(仅 ‘limit’)的能力,也具有 ‘quota-show –detail’(‘in_use’、‘limit’ 和 ‘reserved’)的能力,Cinder 也具有使用命令 ‘quota-usage’ 的相同能力。此更改旨在为 Manila 添加与 Nova 相同的功能。

问题描述

检查 quota-set 信息是一种常见的用例,Manila 具有 ‘quota-sets’ API 来涵盖这一点,但它不能满足需要整体 ‘quota-sets’ 信息的情况。实际上,Manila 目前已经在 quota-set 的代码中支持了这一点 [1],但尚未将其暴露给用户。此更改旨在支持这一点。

用例

如上所述,用户通常希望检查 quota-set 的整体信息(此租户的租户和用户),此更改将帮助他们实现这一点。

提议的变更

以下是需要进行的更改

  • 将在 quota-sets API 集合中添加一个新的 API ‘…/quota-sets/{tenant_id}/detail’。

  • 新的 API 将与现有的 GET ‘quota-sets’ API 共享相同的策略。

  • 后续逻辑将与现有的 API ‘GET quota-sets’ 相同,除了在 ‘QuotaSetsController._get_quotas’ 中将参数 ‘usage’ 设置为 True。

  • ‘_get_quotas’ 将返回一个包含 ‘in_use’、‘limit’、‘reserved’ 属性的字典。

  • Manila 客户端将在 ‘quota-show’ 命令中添加一个新的命令行参数 ‘–detail’,以指示是否返回详细的 quota-sets 信息。

备选方案

目前 Manila 不支持此功能。

数据模型影响

REST API 影响

对于以下新 API,必须提高 API 微版本。

  1. (GET 200 403) quota-sets detail: 以详细方式显示 quota-sets

URL: /v2/{tenant_id}/quota-sets/{tenant_id}/detail?user_id={u_id_query}

响应体

{
    'quota_set':{
        'id': '1e1cc7d3-c524-4b05-85b4-5d548916b11b',
        'shares': {'in_use': 0, 'limit': 23, 'reserved': 0},
        'gigabytes': {'in_use': 0, 'limit': 45, 'reserved': 0},
        'snapshots': {'in_use': 0, 'limit': 34, 'reserved': 0},
        'snapshot_gigabytes': {'in_use': 0,'limit': 56,'reserved': 0},
        'share_networks': {'in_use': 0,'limit': 67,'reserved': 0}
    }
}

Manila 客户端影响

Manila 客户端将在 ‘quota-show’ 命令中添加一个新的命令行参数 ‘–detail’,修改后的命令将如下所示

* quota-show --detail <other existing command arguments>

安全影响

通知影响

无。

其他最终用户影响

无。

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

zhongjun2(jun.zhongjun2@gmail.com) TommyLike(tommylikehu@gmail.com)

工作项

  • 向 ‘quota-sets’ 集合添加 ‘detail’ API。

  • 在 Manila 中添加相关的测试。

  • 在 Manila 中添加文档。

  • 在 Manila 客户端中为命令 ‘quota-show’ 添加新的参数。

  • 在 Manila 客户端中添加相关的测试。

依赖项

测试

  1. 单元测试和 tempest 测试,以验证新的 API 是否工作正常。

  2. Manila 客户端的单元测试和针对新添加参数的功能测试。

文档影响

  1. Manila API 文档需要更新以反映 REST API 的更改。

参考资料

[1] https://github.com/openstack/manila/blob/master/manila/quota.py