Glance 配额 API¶
https://blueprints.launchpad.net/glance/+spec/quota-api
在 Xena 周期中,Glance 获得了配额支持。通过使用统一的限制,可以在不引入 API 的情况下实现这一点。然而,为了充分的功能和更好的用户体验,Glance 应该暴露一个 API,以便用户可以看到他们当前的用量(和限制),而不是仅仅在超出限制时收到错误信息。本规范概述了该 API 的添加。
问题描述¶
Glance 用户现在可以受到运营商设置的配额限制,但无法通过任何方式查看他们的当前用量(和限制),除了他们超出限制时收到的错误消息。需要一个 API 来向用户暴露限制和用量。
提议的变更¶
Glance 已经有一个信息发现 API,它将被用作暴露信息的基础:将添加一个新的路由 /info/quota。暴露的信息将包括调用用户针对每个配额类型的限制和当前用量。如果禁用了配额,则该元素的限制将暴露为 -1,符合 Keystone 的“无限”标记表示法。
备选方案¶
我们可以继续没有 API。
数据模型影响¶
无
REST API 影响¶
本规范包括一个新端点
新的 API
列出配额
常见响应代码
成功: 200 OK
失败: 400 Bad Request 附带详细信息
禁止:403 Forbidden
[新 API] 列出配额
列出用户可用的所有配额
GET /v2/info/quotas
{
"quotas": {
"image_size_total": {
"usage": 32,
"limit": 1024
},
"image_staging_total": {
"usage": 0,
"limit": 1024
},
"image_count_total": {
"usage": 4,
"limit": 100
},
"image_count_uploading": {
"usage": 0,
"limit": 10
}
}
}
响应代码
200 – 在授权和成功请求后。响应体包含带有配额信息的 JSON 有效负载。
400 – 配额信息不可用(可能是由于配置或后端错误)
403 – 权限被拒绝
响应的 JSON 模式
'usage': {
'type': 'array',
'items': {
'type': 'object',
'additionalProperties': True,
'validation_data': {
'type': 'object',
'additonalProperties': False,
'properties': {
'usage': {'type': 'integer'},
'limit': {'type': 'integer'},
},
},
},
},
安全影响¶
其他信息发现 API 不会检查任何策略,并且不会为这个新的配额 API 添加任何策略。假设没有理由禁用用户查看他们自己的用量和限制信息。后者已经可以通过列出当前资源并进行计算来查看。
通知影响¶
无。
其他最终用户影响¶
需要一个 glanceclient 和 openstackclient 的更改来将其暴露给交互式用户。
性能影响¶
无。
其他部署者影响¶
除了启用配额的一般要求之外,没有其他影响。
开发人员影响¶
无。
实现¶
负责人¶
- 主要负责人
danms
工作项¶
使用单元/功能测试实现 API
在 api-ref 中记录 API
编写一个 tempest 测试来检查 API
在 OpenstackClient 中实现支持
在 glanceclient 中实现支持
客户端文档
依赖项¶
这需要升级到(已经发布的)新版本的 oslo.limit,以便在不主动执行的情况下查询限制。
测试¶
Glance 中的单元和功能测试。针对现有配额启用作业的 Tempest 测试。
文档影响¶
api-ref 需要更新,以及交互式客户端的使用信息。