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
工作项¶
将所有文件移动到单个位置
将所有 .json 文件重写为 .py 文件并调整负面测试框架
统一文件名,使 /response 和 /request 之间保持一致性
依赖项¶
无。