用于 EDP API 的 JSON 示例文件

https://blueprints.launchpad.net/sahara/+spec/edp-api-json-samples

为所有 EDP Sahara API 提供示例 JSON 文件,以方便命令行用户使用。

问题描述

作为更喜欢使用 Sahara CLI 而不是其 UI 的最终用户,我希望为 Sahara EDP API 提供一组预先构建的示例 JSON 有效负载,以便我可以轻松学习预期的 API 签名并对其进行修改以供我使用。

提议的变更

示例 JSON 有效负载将被添加到目录 sahara/etc/edp-examples/json-api-examples/v1.1,每个相关管理器(data_source、job、job_binary、job_binary_internals 和 job_execution)都有一个子路径。 计划是未来 API 版本的示例将遵循此路径结构。

每个文件将以模式 method_name.[variety.]json 命名,其中 variety 是可选的,将用于描述一个方法中有效负载的独立有用变体(例如,底层数据源或处理作业的不同引擎)。

替代方案

理论上可以创建一个工具,从 jsonschemata 本身生成模板有效负载。 然而,由于此更改的核心用途是提供即时可用的、语义上有效的有效负载以方便采用,因此建议提供原始示例可以更好地满足用户感知到的需求。

也可以将这些示例直接与 python-saharaclient 仓库打包,这是一个值得推荐的选项。 然而,由于这些示例对任何非 UI 接口都全局有用,因为它们依赖于核心仓库中的 jsonschemata 进行测试,并且现有的 etc/edp-examples 路径是它们的自然归宿,因此将它们放在 sahara 仓库本身似乎是合适的。

数据模型影响

无。

REST API 影响

无。

其他最终用户影响

没有,但计划可以通过 python-saharaclient 使用这些有效负载。

部署者影响

无。

开发者影响

无。

Sahara-image-elements impact

无。

Sahara-dashboard / Horizon 影响

无。

实现

负责人

主要负责人

egafford

其他贡献者

tmckay (主要评审)

工作项

  • 有效负载生成:data_source

  • 有效负载生成:job

  • 有效负载生成:job_binary

  • 有效负载生成:job_binary_internals

  • 有效负载生成:job_execution

  • 为以上所有内容添加模式验证单元测试。

依赖项

无。

测试

在与 croberts 和 tmckay 讨论后,建议在这种情况下集成测试是不必要的;这些示例构成文档。 虽然在这种情况下可以进行详尽的测试,但由此产生的 CI 构建膨胀将与更改的效用不成比例。

单元测试将验证这些资源是否通过其预期 API 的模式验证。

文档影响

这项任务本身是一项文档工作。 将提供一个 README.rst 文件,以符合现有的 etc/edp-examples。

参考资料