添加 v2 API 端点以检索不同范围的状态

https://storyboard.openstack.org/#!/story/2005395

注意

此规范是更大规范的详细实现的一部分。如果您尚未阅读,请参阅 https://review.opendev.org/#/c/657393/

问题描述

目前,管理员无法知道某个范围的数据处理到哪个日期,除非查看 cloudkitty_storage_states SQL 表。然而,这对于生成发票/报告至关重要,因为您必须确保计费的整个期间已被处理。

提议的变更

应通过 API 提供此信息。本文档描述了一个 V2 API 端点。它仅对管理员可用。

备选方案

无。

数据模型影响

无。

REST API 影响

将在 /v2/scope 上添加一个端点,支持 GET HTTP 方法。

在此端点上的 GET 请求将返回所有范围的分页列表,并支持对范围、fetcher、collector 和/或 scope_key 进行可选过滤。

该方法将支持以下参数

  • offset:(可选,默认为 0) 应返回的第一个范围的偏移量。

  • limit:(可选,默认为 100) 要返回的最大结果数。

  • scope_id:(可选) 可以多次指定。用于过滤的一个或多个 scope_id。

  • collector:(可选) 可以多次指定。用于过滤的一个或多个 collector。

  • fetcher:(可选) 可以多次指定。用于过滤的一个或多个 fetcher。

  • scope_key:(可选) 可以多次指定。用于过滤的一个或多个 scope_key。

响应将采用以下格式

{
    "results": [
        {
            "collector": "gnocchi",
            "fetcher": "keystone",
            "scope_id": "7a7e5183264644a7a79530eb56e59941",
            "scope_key": "project_id",
            "state": "2019-05-09 10:00:00"
        },
        {
            "collector": "gnocchi",
            "fetcher": "keystone",
            "scope_id": "9084fadcbd46481788e0ad7405dcbf12",
            "scope_key": "project_id",
            "state": "2019-05-08 03:00:00"
        },
        {
            "collector": "gnocchi",
            "fetcher": "keystone",
            "scope_id": "1f41d183fca5490ebda5c63fbaca026a",
            "scope_key": "project_id",
            "state": "2019-05-06 22:00:00"
        }
    ]
}

在此端点上 GET 请求的预期 HTTP 成功响应代码是 200 OK

在此端点上 GET 请求的预期 HTTP 错误响应代码是

  • 400 错误请求:请求格式错误。

  • 403 Forbidden:用户没有检索范围状态的必要权限。

  • 404 Not Found:未找到与提供的过滤器匹配的范围。

此端点仅对管理员授权。

安全影响

任何访问此端点的用户都将能够检索有关 Cloudkitty 评级的所有范围的状态信息。因此,应谨慎地将此端点的访问权限授予非管理员用户。

通知影响

无。

其他最终用户影响

客户端也将更新,以便包含一个函数和一个 CLI 命令,允许检索有关不同范围状态的信息。

性能影响

无。

其他部署者影响

管理员和部署者将更容易检索范围状态信息。

开发人员影响

无。

实现

负责人

主要负责人

<peschk_l>

工作项

  • 使用单元测试实现 API 端点

  • 添加 tempest 测试

  • 在客户端中支持此端点。

依赖项

无。

测试

将添加该端点的 tempest 测试。

文档影响

该端点将被添加到 API 参考中。

参考资料

获取/重置范围状态的规范:https://review.opendev.org/#/c/657393/