为 sahara-scenario 添加 API 以集成到其他框架

https://blueprints.launchpad.net/sahara-tests/+spec/api-for-scenario-tests

Sahara 场景是测试 Sahara 的主要工具,我们可以提供 API,以便在其他工具/框架/测试中使用此框架。

问题描述

当您从另一个框架执行 Sahara 测试时,无法重用创建的场景,而需要在另一个框架中创建新的场景,并使用新的 Sahara 场景。我认为,我们可以实现一个简单的 Python API,用于从默认模板运行 Sahara 场景。例如,在具有破坏性测试或其他情况的框架中,这将非常有用。

提议的变更

重构当前的 runner.py 模块,将代码提取到 sahara_tests/scenario/utils.py 中,以便在 API 方法中重用。

我建议将包含

  • 临时文件创建的,

  • 处理 .mako 文件的,

  • 运行测试的,

  • 合并/生成场景文件的代码移动到

runner.py 中,我们应该只留下对这些方法的调用,以便更方便地使用。下一步是在 sahara_tests/scenario 中添加 api 目录,其中包含用于实现 API 的文件。

我认为,我们需要添加 api.py 文件,其中包含外部使用的函数

  • def run_scenario(plugin, version, release=None)

base.py 文件,用于准备运行文件以及未来的辅助方法。

未来我们可以将一个场景分解为步骤

  • 创建节点组模板;

  • 创建集群模板;

  • 创建集群;

  • 创建数据源;

  • 创建作业二进制文件;

  • 执行 EDP;

替代方案

数据模型影响

REST API 影响

其他最终用户影响

部署者影响

开发者影响

Sahara-image-elements impact

Sahara-dashboard / Horizon 影响

实现

负责人

主要负责人

esikachev

工作项

  • 将方法从 runner.py 移动到

  • 添加通过 API 运行测试的能力

  • 添加用于测试 API 的作业

依赖项

测试

我们可以在 Sahara-ci 上创建单独的作业,并使用自定义脚本来检查 API 调用和操作的正确执行。

文档影响

API 实现应在 Sahara-tests 文档中提及。

参考资料