支持版本列表 API

https://blueprints.launchpad.net/congress/+spec/api-version

Congress API 应该能够列出当前支持的 API 版本。

问题描述

用户希望与 Congress API 交互,但没有 API 支持来查询支持的版本,因此用户不知道当前 Congress 部署中可以支持哪些版本。

提议的变更

导出版本列表 API,并显示当前的 API 详情,包括:id、状态、更新时间、链接,就像其他 OpenStack 项目一样:nova、neutron 等。虽然 Congress 目前仅支持一个版本 API (v1),但版本列表 API 对于未来的 API 演进是有意义的。

备选方案

策略

策略动作

数据源

数据模型影响

REST API 影响

  • 方法的规范

    • 列出当前支持的 API 版本。

    • 方法类型:GET

    • 正常的 http 响应代码:200

    • 预期的错误 http 响应代码:无

    • /

    • 可以通过 URL 传递的参数:无

    • 如果允许,则主体数据的 JSON schema 定义:无

    • 如果存在,则为响应数据定义 JSON schema

    {
      "type": "object",
      "properties": {
          "versions": {
              "type": "array",
              "items": {
                  "type": "object",
                  "properties": {
                      "status": {
                          "type": "string"
                      },
                      "updated": {
                          "type": "string"
                      },
                      "id": {
                          "type": "string"
                      },
                      "links": {
                          "type": "array",
                          "items": {
                              "type": "object",
                              "properties": {
                                  "href": {
                                      "type": "string"
                                  },
                                  "rel": {
                                      "type": "string"
                                  }
                              },
                              "additionalProperties": false,
                              "required": ["href", "rel"]
                          }
                      }
                  },
                  "additionalProperties": false,
                  "required": ["status", "updated", "id", "links"]
              }
          }
      },
      "additionalProperties": false,
      "required": ["versions"]
    }
    
  • 示例用例

    GET /
    {
      "versions": [{
          "status": "CURRENT",
          "updated": "2015-07-03T11:33:21Z",
          "id": "v1",
          "links": [{
              "href": "http://10.250.10.29:1789/v1/",
              "rel": "self"
          }]
      }]
    }
    
  • 此更改不应影响 policy.json 文件。

安全影响

通知影响

其他最终用户影响

python-congressclient 中的相关工作也将被添加。

修改后,用户可以获取 API 版本详情,如下所示

openstack congress version list

性能影响

其他部署者影响

我们修改 api-paste.ini 以添加一些内容,因此如果操作员准备从旧版本升级,他需要将新的配置项添加到旧的 api-paste.ini 文件中,或者使用新的覆盖旧的。

开发者影响

实现

负责人

主要负责人

工作项

  • 添加 Version 类以组装 API 版本响应。

  • 修改 api-paste.ini 以将请求路由到新的逻辑。

  • 使 python-congressclient 支持此 API。

依赖项

测试

应添加一些单元测试来覆盖新的 API。

文档影响

相关内容应添加到 Congress API 文档中。

参考资料