Training-labs Python 移植

Training-labs Python 移植

https://blueprints.launchpad.net/openstack-manuals/+spec/labs-python-port

Training labs 最初是用 Bash 编写的。但它已经从一组简单的脚本发展成为一个完整的项目。迁移到现代解释型编程语言是下一步的逻辑选择。因此,用 Python 重写 training-labs 可以提高敏捷性、质量和支持的功能。

Python 是一个显而易选的方案。它是一种能够满足当前需求和功能的编程语言,同时也是 OpenStack 社区的语言。Python 在 Mac OS X 和 Linux 平台上默认提供。

问题描述

Training labs 正在不断发展,功能和复杂性也在不断增加。用户要求添加对更多功能和插件的支持,例如公有云支持。迁移到现代编程语言可以解决 Bash 在给定用例中存在的许多固有局限性。以下简要列出了需要重写的不足之处和新功能需求:

  • 添加新的功能,例如公有云支持(AWS、GCE、RackSpace)。
  • 提供更好的 Windows 平台支持。
  • 使用更好的配置格式。
  • 支持 OpenStack 的多种架构。
  • 降低复杂性,以便更好地进行测试、修复错误等等。
  • 更好地支持诸如 PXE 启动之类的功能。
  • 为宿主机脚本提供适当的模块化和抽象。

提议的变更

用 Python 重写宿主机脚本。宿主机脚本执行任务来编排虚拟机管理程序(KVM/VirtualBox)和管理虚拟网络,提供日志记录,注入客户机脚本等。

最初,我们计划并行引入 Python 脚本和现有的 Bash 脚本,以消除此更改对最终用户的影响。一旦 Python 移植经过测试,我们将删除宿主机 Bash 脚本。此时,最终用户将通过 Python 调用 training-labs。对最终用户的影响最小或为零。

这是一个对项目进行重大重写,应该会影响整个项目本身。但迁移计划提供了一种安全的方式来实现此更改并使其影响最小。

备选方案

  • 使用类似的编程语言,例如 Ruby、Go Lang 等。
  • 改进架构并添加相关的 Bash 功能。

实现

负责人

主要负责人
Roger Luethi <rl@patchworkscience.org>
其他贡献者
Pranav Salunke <dguitarbite@gmail.com>

工作项

  • 最初的一对一重写到 Python。
  • 改进和重构 Python 代码。
  • 删除较旧的宿主机代码(Bash 代码)。

依赖项

测试

最初阶段主要进行手动测试。在实施的后期阶段,CI 系统也应执行自动化测试。

参考资料

Creative Commons Attribution 3.0 License

除非另有说明,本文档根据 知识共享署名 3.0 许可协议 授权。请参阅所有 OpenStack 法律文件

docs-specs