V1 API 评分模块端点迁移至 V2 API

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

由于 v1 API 即将冻结,为了实现一个完整的 v2 API,同时包含现有的 v1 功能和新的 v2 功能,需要迁移那些 v2 API 中不存在的端点。本规范涉及 /v1/rating/modules 端点。

问题描述

由于计划弃用 v1 API,因此必须将 /v1/rating/modules 端点移植到 v2。v2 API 的动机在相关的 规范 中有记录。

提议的变更

将现有的 /v1/rating/modules 实现到 v2 API 中。这是将 v1 端点迁移到 v2 API 的更广泛工作的一部分。

备选方案

无。

数据模型影响

无。

REST API 影响

这将添加 /v2/rating/modules 端点,类似于 v1 API。

GET /v2/rating/modules 返回已加载的模块列表。它不需要任何参数。响应体将包含模块列表

{
  "modules": [
    {
        "module_id": "f6f4f726-583z-4a09-a972-c908dea4c291"
        "description": "Sample extension.",
        "enabled": true,
        "hot-config": false,
        "priority": 2
    },
    [...]
  ]
}

GET /v2/rating/modules/<module_id> 返回 URL 中 ID 指定的模块。它不需要任何参数。响应体包含单个模块

{
   "module_id": "f6f4f726-583z-4a09-a972-c908dea4c291",
   "description": "Sample extension.",
   "enabled": true,
   "hot-config": false,
   "priority": 2
}

PUT /v2/rating/modules/<module_id> 更改模块的状态和优先级。它要求查询体中存在要更新的字段

{
  "enabled": false,
  "priority": 42
}

对于两个 GET 端点,预期的响应代码是 200 OK。对于 PUT 端点,预期的响应是 204 NO CONTENT,因为响应体为空。所有 3 个端点的预期 HTTP 错误响应代码是

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

  • 401 未授权:用户未经过身份验证。

  • 403 禁止访问:用户未获得授权。

安全影响

所有添加的端点将保持与 v1 API 相同的策略:查询 API 端点需要管理员凭据。添加的端点仅将现有功能从 v1 移植到 v2 API,不会产生任何其他安全影响。

通知影响

未来计划通过对添加的端点查询触发的通知重新加载。

其他最终用户影响

无。

性能影响

无。

其他部署者影响

无。

开发人员影响

无。

实现

负责人

主要负责人

qanglade/qanglade

其他贡献者

lukapeschke/peschk_l

工作项

  • 在 v2 API 中实现 /v1/rating/modules 端点,包括单元测试和文档

  • 向 tempest 插件添加功能测试

  • 向 CloudKitty 的客户端添加支持

依赖项

无。

测试

除了常规单元测试外,tempest 插件将被更新以添加针对添加的端点的新测试。

文档影响

v2 API 参考将被更新以反映更改。

参考资料

无。