Spec - 添加模板编辑支持

蓝图

Sahara 服务: https://blueprints.launchpad.net/sahara/+spec/support-template-editing

Horizon UI: https://blueprints.launchpad.net/horizon/+spec/data-processing-edit-templates

目前,一旦节点组模板或集群模板创建后,可用的操作仅有“复制”或“删除”。这给用户在想要修改模板时的工作流程带来了不便。例如,为了对被集群模板使用的节点组模板进行哪怕是微小的更改,用户必须复制节点组模板,修改它,保存它,然后创建一个新的(或复制)集群模板来使用新的节点组模板。理想情况下,用户应该可以直接编辑模板并继续操作。

问题描述

Sahara 目前缺乏对节点组和集群模板更新操作的实现。为了提供这些操作的实现,必须解决以下问题。

1. 如何处理使用正在编辑的模板构建的现有集群?如果以添加/删除节点的方式更改了集群模板,我们会自动扩展集群吗?如果节点组模板更改为添加/删除进程,我们会关闭或启动进程吗?

我建议对于本次迭代,用户不能更改用于构建当前正在运行的集群的任何模板。这与当前不允许删除被当前活动集群使用的模板的规则保持一致。未来的迭代可以移除对删除和编辑的限制。如果用户想使用模板的修改版本启动新集群,他们仍然可以复制模板并进行编辑。

2. 确保依赖于已编辑节点组模板的所有集群模板都会获取节点组模板的更改。

只有当我们选择允许编辑被活动集群使用的模板时,这才会成为一个问题。在这种情况下,我们需要更改现有模板以引用新创建的模板。

提议的变更

将为节点组和集群模板实现 PUT(更新)方法。目前,这些方法已经存在,但只是返回“未实现”。

我认为发送更新模板的最简单方法是发送整个新模板,而不是仅仅发送差异。这样做可能效率稍低,但避免了在 UI 中构建差异逻辑的需要。当前的客户端库更新()方法似乎预料到这种实现方式。如果我们要发送差异,可能需要调整客户端库。

替代方案

可以通过删除/添加组合来实现更新,但这并不是一个很好的解决方案,因为任何给定的节点组或集群模板都可能被另一个对象引用。删除和添加需要更新每个引用对象。

如果我们需要能够编辑被活动集群使用的模板,则编辑后的模板将保留原始模板的 ID 和名称。在覆盖原始模板之前,它将以新的 ID 和某种形式的“点”名称保存,以指示版本(“原始名称.1”)。所有正在运行的集群都将被更改为引用具有新 ID 的原始模板。

数据模型影响

N/A

REST API 影响

不适用。API 中已经定义了更新操作,但尚未实现。

其他最终用户影响

Horizon UI 将更新为包含每个节点组和集群模板的“编辑”操作。编辑按钮将出现在表格中每行操作的列表中。

python-saharaclient 库已经定义了将用于在 Horizon UI 中实现此功能的 update() 方法。预计不需要更改 python-saharaclient 来支持此功能。

部署者影响

N/A

开发者影响

N/A

Sahara-image-elements impact

N/A

Sahara-dashboard / Horizon 影响

Horizon 将更新为在节点组和集群模板表格的每行中包含一个“编辑”按钮。该编辑按钮将显示编辑表单(基本上是“创建”表单,但所有值都从现有模板预填充)。从编辑表单单击“保存”将导致调用 python-saharaclient 库中的节点组/集群模板 update() 方法。

实现

负责人

主要负责人

croberts

其他贡献者

tmckay

工作项

Horizon UI: croberts Sahara 服务: tmckay

依赖项

N/A

测试

将在 Sahara 中添加单元和集成测试。

Horizon 将在节点组和集群模板面板中添加一个测试,以验证在选择编辑时是否生成了适当的表单。

文档影响

Sahara UI 用户指南应更新,以说明模板编辑功能的可用性。

参考资料

N/A