重构 MapR 插件代码¶
https://blueprints.launchpad.net/sahara/+spec/mapr-refactor
MapR 插件的代码应该被重构,以便于添加新的服务和版本
问题描述¶
当前的插件实现存在一些弱点: * 服务的声明性 * 由于使用 plugin-spec.json 导致的代码复杂性 * 几乎所有操作都以一系列实用函数调用的形式实现 * 行为与模块和类的分离不明确 * 部分代码冗余
提议的变更¶
将 Service 实体提取到具有可定制行为的独立类中
将配置逻辑从实用模块移动到专用类中
删除冗余代码
MapR 插件实现将其所有操作委托给 VersionHandler 接口中的对应方法。VersionHandler 接口模仿插件 SPI,并添加了 get_context(cluster) 和 get_services() 方法。get_context 返回的 ClusterContext 对象包装了作为参数传递的 cluster 对象,并提供有关 cluster 的其他信息以及与包装 cluster 相关的实用方法。
服务定义位于 ‘sahara.plugins.mapr.services’ 包中,而不是 plugin-spec.json,后者已被完全移除。每个服务定义代表服务的特定版本。
替代方案¶
保持代码“原样”
数据模型影响¶
无
REST API 影响¶
无
其他最终用户影响¶
无
部署者影响¶
无
开发者影响¶
MapR 插件后续版本的开发者应考虑这些更改。
Sahara-image-elements impact¶
无
Sahara-dashboard / Horizon 影响¶
无
实现¶
负责人¶
- 主要负责人
aosadchiy
- 其他贡献者
ssvinarchuk
工作项¶
将 Service 实体提取到具有可定制行为的独立类中
将配置逻辑从实用模块移动到专用类中
删除冗余代码
依赖项¶
无
测试¶
现有的集成测试已经足够
文档影响¶
无
参考资料¶
无