重构 sahara.service.api 模块¶
https://blueprints.launchpad.net/sahara/+spec/v2-api-experimental-impl
Sahara 接收到的 HTTP API 调用由 sahara.api 包处理,该模块中的函数随后调用 sahara.service.api 和 sahara.service.edp.api 模块执行处理,然后再传递给 conductor。为了适应未来的 API 变更,这些模块应该进行重构,为未来的实现者创建一个更统一的包。
问题描述¶
目前 API 服务层模块的状态与 API 路由层模块进行比较时可能会令人困惑。这种混淆可能导致对服务代码与路由和 conductor 模块交互方式的误解。为了提高可读性和可扩展性,本规范定义了这些模块的新布局。
不仅如此,由于 API 正在为新的版本 2 功能进行重构,服务层需要添加一些内容来协助端点和 JSON 符号的变更。重构这些模块将为添加 Sahara API 创建更清晰的路径。
提议的变更¶
此变更将创建一个名为 sahara.service.api 的新包,其中将包含所有服务层 API 模块。这个新包将创建一个统一的位置来变更服务层 API,并为希望进行这些变更的人提供清晰的路径。该新包还将包含 v2 API 的基本服务层文件。
新的包布局如下
sahara/service/api/__init__.py
v10.py
v11.py
v2/__init__.py
clusters.py
cluster_templates.py
data_sources.py
images.py
job_binaries.py
job_executions.py
jobs.py
job_types.py
node_group_templates.py
plugins.py
这种新布局将为所有服务层 API 代码提供一个干净、单一的位置。为 sahara.service.api.v2 包创建的文件将是当前功能的简单副本。
替代方案¶
另一种选择是保持不变,将 sahara.service.api 和 sahara.service.edp.api 模块保持原样,并在这些位置或新文件中创建 v2 的新代码。这种方法的缺点是不同版本之间的边界将不明确。 这也会留下一个关于 v2 代码将驻留位置的更大的问题。
数据模型影响¶
无
REST API 影响¶
无
其他最终用户影响¶
无
部署者影响¶
无
开发者影响¶
此变更应该改善开发人员在使用 API 代码方面的体验,因为它将更清楚哪些模块控制每个版本。
Sahara-image-elements impact¶
无
Sahara-dashboard / Horizon 影响¶
无
实现¶
负责人¶
- 主要负责人
Michael McCune (elmiko)
工作项¶
创建新包
将当前实现移动到新包
添加与 v2 相关的服务文件
修复未决引用
将文档添加到 v2 开发人员文档
依赖项¶
无
测试¶
由于这些更改将基本保持接口不变,我们将通过我们当前的单元测试和 tempest 测试来测试它们。 这不需要专门针对此更改的新测试。
文档影响¶
将在 API v2 开发人员文档中添加一个新部分,以帮助说明这些文件的目的以及它们将如何在实施 JSON payload 变更等功能中使用。
参考资料¶
无