扩展配额 API 以报告使用情况统计信息¶
https://bugs.launchpad.net/neutron/+bug/1599488
当前的 Neutron 配额 API 没有提供关于配额的详细信息。提供关于配额的详细信息将对 Horizon Web 应用有益。
问题描述¶
当前的 Neutron 配额 API 仅报告租户的资源及其限制。这种当前方法对于 Horizon 和一般的配额用户来说效率低下。其他项目(nova 和 cinder)的配额 API 包含特定租户下资源的用量详情。
存在手动统计所有 Neutron 资源的问题 [1],而不是使用一个配额 API 调用来获取特定项目下所有资源的详细信息。
提议的变更¶
Nova[2] 和 Cinder[3] 提供的“配额集”扩展应该被 Neutron 采用,以便在资源配额和更多功能方面提供更好的跨项目 API。
现有的配额扩展列出了指定项目的当前配额限制集合。我们建议添加一个新的扩展,quota_detail,它通过相同的端点可用。这个新的扩展将有一个新的动作“detail”,它列出了项目的配额详情。诸如已预留、已用和限制等资源详情将可用。
扩展配额 API 的潜在用例是简化和改进 Horizon 和 OpenStack/Neutron 客户端。
Neutron 中的新的“配额扩展”API 扩展不会将 ‘user-id’ 作为列出详细配额的参数的一部分。这是因为 Neutron 只支持简单的每项目配额。
REST API 影响¶
当前,配额 API 为特定租户/项目提供以下 REST API 端点,用于配额详情。
GET /v2.0/quotas/{tenant_id}
{
"quota": {
"subnet": 10,
"network": 10,
"floatingip": 50,
"subnetpool": -1,
"security_group_rule": 100,
"security_group": 10,
"router": 10,
"rbac_policy": -1,
"port": 50
}
}
在新的配额 API 扩展中,将引入一个功能更强大的 API,它提供特定项目下资源的限制、已预留和已用计数。Neutron 中当前的预留实现是短暂的,不会更新,但会向用户显示默认值“0”。
GET /v2.0/quotas/{tenant_id}/detail
{
"quota": {
"subnet": {
"reserved": 0,
"limit": 10,
"in_use": 0
},
"network": {
"reserved": 0,
"limit": 10,
"in_use": 0
},
"floatingip": {
"reserved": 0,
"limit": 50,
"in_use": 0
},
"subnetpool": {
"reserved": 0,
"limit": -1,
"in_use": 0
},
"security_group_rule": {
"reserved": 0,
"limit": 100,
"in_use": 0
},
"security_group": {
"reserved": 0,
"limit": 10,
"in_use": 0
},
"router": {
"reserved": 0,
"limit": 10,
"in_use": 0
},
"rbac_policy": {
"reserved": 0,
"limit": -1,
"in_use": 0
},
"port": {
"reserved": 0,
"limit": 50,
"in_use": 0
}
}
}
命令行客户端影响¶
将向 openstack 客户端添加一个新的可选参数,例如:$ openstack quota show {tenant_id/project_id} –detail
Horizon 使用 neutronclient 从 neutron api 获取配额。由于 neutronclient 的 CLI 端即将弃用,因此仅为 Horizon 使用实现 neutronclient 的 HTTP 端。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
Horizon 中的更改
超出此规范的范围。
性能影响¶
无
IPv6 影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
社区影响¶
无
备选方案¶
无
实现¶
负责人¶
Prince Boateng(prince.a.owusu.boateng@intel.com) Aradhana Singh(aradhana1.singh@intel.com)
工作项¶
扩展配额 DB 驱动
扩展当前 API
创建新的配额扩展
添加相关测试
添加 CLI openstackclient
依赖项¶
无
测试¶
Tempest 测试¶
编写测试以验证从 API 返回的正确数据模型
功能测试¶
无
API 测试¶
编写测试以检查资源参数的 已预留、已用 和 限制 响应,以确保与引入的更改一致。
文档影响¶
是
用户文档¶
是
开发人员文档¶
是
参考资料¶
[1]: https://github.com/openstack/horizon/blob/10.0.0.0b1/openstack_dashboard/usage/quotas.py#L313-L336
[2]: https://developer.openstack.org/api-ref-compute-v2.1.html#listDetailQuotas
[3]: https://developer.openstack.org/api-ref-blockstorage-v2.html#showQuota