跳转到: 导航, 搜索

Neutron/API/WADL

Quantum API WADL 规范

blueprint 链接

资源

范围

为 Quantum 核心 API 和 API 扩展提供 WADL 文档。

WADL 文档范围

  • 核心 API 将拥有一个 WADL 文档
  • 所有扩展 API 将拥有其自身的 WADL 文档
  • 每个 WADL 文档将包含一个 application 组件
  • 一个 application 组件将包含一个 resources 组件
  • 一个 resources 组件将包含针对每个资源实体的 resource 组件
    • 例如:network、subnet、port 等。
  • 每个 resource 组件将包含用于 GET(列表、显示)、POST(创建、批量创建)、PUT(更新)和 DELETE(删除)的 method 组件。
  • 每个 method 组件将包含一个 request 组件和一个可选的 response 组件
  • 一个 requestresponse 组件将包含基于 API 的属性资源映射的 param 组件组成的 representation 组件

用例

这些用例是从 W3 WADL 规范中借鉴的。

  • 应用建模和可视化
    • 支持开发资源建模工具,用于资源关系和编排分析和操作。
  • 代码生成
    • 自动生成存根和骨架代码以及用于操作资源表示形式的代码。
  • 配置
    • 使用便携式格式配置客户端和服务器。

实现概述

编写一个 python 脚本 quantum/tools/wadl/generate_docs.shquantum/tools/wadl/extract_attrs.py

  • 处理核心 API
    • 从 quantum.api.v2.attributes 中检索 RESOURCE_ATTR_MAP
    • 基于 RESOURCE_ATTR_MAP 字典创建文档 quantum/doc/wadl/core.wadl。
  • 处理 API 扩展
    • 遍历 quantum/quantum/extension 中的模块,并找到每个模块中所有 ExtensionDescriptor 的子类。
    • ExtensionDescriptior 的 get_resources() 方法返回的每个 ResourceExtension 对象中检索 attr_map 属性。
    • 自动生成 WADL 文档文件
      • quantum/doc/wadl/[extention].wadl
  • 所有数据都将根据每个 API 扩展模块的 attr_map 填充

数据模型变更

不适用

配置变量

不适用

API

不适用

插件接口

不适用

必需的插件支持

不适用

依赖项

CLI 要求

不适用

Horizon 要求

不适用

使用示例

在更改核心 API 或 API 扩展规范的源代码后,开发人员将运行 ./tools/wadl/generate_docs.sh 以更新 quantum/doc/wadl/ 中的 WADL 文档

测试用例

目前没有计划进行测试用例。但是,需要事先检查所有 API 扩展是否都继承自 quantum.extension.ExtensionDescriptor