VMware Spawn 重构

https://blueprints.launchpad.net/nova/+spec/vmware-spawn-refactor

对 VMware 驱动程序生成实用程序代码进行结构化重构,以创建更具凝聚力和连贯性的整体。

问题描述

VMware 驱动程序的生成实用程序方法代码超过 500 行,并且非常难以理解。它在多个地方包含冗余逻辑,并且缺乏程序员可以遵循的连贯结构。对生成方法的测试涉及复杂的测试框架,需要开发人员或审查者在不同的看似无关的模块之间保持重要的上下文。虽然生成方法的测试覆盖率实际上非常好,但理解测试功能可能非常困难,并且理解这种复杂性会减慢审查速度。

  • 创建一个由实用程序方法组成的生成方法

  • 提高可读性

  • 提供封装

  • 将模型代码与操作代码分离,以便更轻松地维护

  • 使测试更容易被审查者理解,并使测试覆盖率更容易查看

提议的变更

  • 提取内部方法并创建可重用和可测试的方法

    • 允许在测试中进行简单的模拟,以便轻松覆盖所有路径

    • 创建更易于遵循的测试用例,并减少调用深度

  • 整合 vSphere 镜像属性,以便更轻松地使用和测试

    • 注意:对于此蓝图的范围,我们仅检查现有的配置

    • 尽可能在发送到 vSphere 之前包含对有效值的检查,以供 vSphere API 使用。预先检查值将使诊断驱动程序故障更容易。

  • 识别并提取隐藏在生成中的其他实用程序和方法

    • 生成的大部分部分在其他实用程序中重复出现(停止这种行为)

    • 识别镜像操作并为这些操作创建实用程序

备选方案

  • 继续添加到现有方法

  • 将 fake.py 扩展为完整的 vCenter 模拟器

  • 仅更改与新功能或错误相关的代码

数据模型影响

无。

REST API 影响

无。这是一个零新功能蓝图。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

无或可忽略不计。早期工作确定存在多个不必要的网络往返到 glance,但性能变化将是重构工作的预期副作用。

其他部署者影响

无。

开发人员影响

  • 保持理智:驱动程序逻辑的整合和重构将使更易于遵循的驱动程序,这将使添加新功能更容易。

  • 简化的测试,更小的代码单元意味着更精细的测试和更易于遵循的测试结构。

  • 引入更好的实践,此代码将作为未来贡献的积极示例。

实现

负责人

主要负责人

hartsock

其他贡献者

vui rhsu tjones-i garyk maithem

工作项

  • 从生成中提取内部方法

  • 整合 VMware 特定的镜像配置

    • 识别镜像元数据中设置的参数并将其形式化

    • 识别控制当前行为的值并将它们隔离出来

  • 将镜像文件操作重构为一组可重用的实用程序

依赖项

无。

测试

标准扫雷测试应该表明此重构是否没有回归任何功能,并且将涵盖此代码将重构的所有情况。

文档影响

无。内部开发文档将得到极大的改进。

参考资料