API schema 统一

https://blueprints.launchpad.net/tempest/+spec/api-schema-unification

API schema 在 Tempest 中用于不同的目的。此蓝图尝试统一所有现有的方式。

问题描述

Tempest 目前有两处 schema 定义的来源

  • 响应验证框架 (tempest/api_schema)

  • 负面测试框架,自动创建请求 (etc/schema)

差异概览

  • 文件类型 - etc/schema 文件基于 json - tempest/api_schema 文件是 python 模块

  • 数据类型 - etc/schema 包含 Tempest 相关数据(基于生成器的结果码检查)- tempest/api_schema 包含可以从项目导入的数据

  • 内容 - etc/schema 用于请求生成 - tempest/api_schema 用于响应验证

提议的变更

将所有 schema 移动到 tempest/api_schema 并使用 .py 文件代替 .json 文件。这提供了使用继承(或其他 python 技巧)来减少代码重复的可能性。在 py 文件内部,数据格式将是字典而不是 json。这是因为所有现有的定义都已经定义为字典。

建议的文件夹结构

tempest
|-> api_schema
|  |-> request # old content of ``etc/schema``
|  |  |-> compute
|  |  |  |-> v2
|  |  |  |-> v3
|  |-> response # old content of ``tempest/api_schema``
|  |  |-> compute
|  |  |  |-> v2
|  |  |  |-> v3

下一步

此蓝图范围之外,但下一步

  • 用 json 定义替换字典

  • 具有相同/相似的 json 风格

  • 使用相同的加载机制

替代方案

待讨论。

实现

负责人

主要负责人

Marc Koderer (mkoderer)

里程碑

完成目标里程碑

Juno-final

工作项

  1. 将所有文件移动到单个位置

  2. 将所有 .json 文件重写为 .py 文件并调整负面测试框架

  3. 统一文件名,使 /response 和 /request 之间保持一致性

依赖项

无。