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 需要更新,以及交互式客户端的使用信息。

参考资料