VMware Spawn Refactor¶
https://blueprints.launchpad.net/nova/+spec/vmware-spawn-refactor
A structured refactor of the VMware driver spawn utility code to create a more cohesive and coherent whole.
Problem description¶
The VMware driver’s spawn utility method is over 500 lines of code and very difficult to follow. It features redundant logic in several places as well as a general lack of cohesive constructs for a programmer to follow. Tests of the spawn method involve complicated test frameworks that require a developer or reviewer to hold important context between different seemingly unrelated modules in their heads. While test coverage is actually quite good on the spawn method, it can be very difficult to comprehend how a test functions and comprehending this complexity slows reviews.
create a spawn method that composes utility methods
improve readability
provide encapsulation
separate model code from action code for easier maintenance
make tests more understandable to reviewers and test coverage easier to see
Proposed change¶
Extract inner methods and create reusable and testable methods
allow for simple mocking in tests to easily cover all paths
create easier to follow test cases with shallower call depths
Consolidate vSphere image properties for easier use and testing
NOTE: for the scope of this blueprint we examine only existing configs
include checks for valid values for use in vSphere API before transmiting to vSphere where possible. Pre-checking values will make it easier to diagnose a driver fault.
Identify and extract additional utilities and methods hidden in spawn
large sections of spawn are repeated in other utilities (stop that)
identify image actions and create utilities for those
Alternatives¶
continue to add to the existing method
expand fake.py into a full blown vCenter simulator
only change code as it pertains to new features or bugs
Data model impact¶
None.
REST API impact¶
None. This is a zero new feature blueprint.
Security impact¶
None.
Notifications impact¶
None.
Other end user impact¶
None.
Performance Impact¶
None or negligible. Some early work has determined that there are multiple network round trips to glance that do not need to occur, but performance changes will be an expected side-effect of the refactoring work.
Other deployer impact¶
None.
Developer impact¶
Sanity preservation: consolidation and refactoring of driver logic will make an easier to follow driver that will make addition of new features easier.
Simplified testing, smaller units of code means more granular tests and easier to follow test structure.
Introduction of better practice, this code will serve as a positive example for future contributions.
Implementation¶
Assignee(s)¶
- Primary assignee:
hartsock
- Other contributors:
vui rhsu tjones-i garyk maithem
Work Items¶
extract inner methods from spawn
consolidate VMware specific image configurations
identify parameters set in image metadata and formalize them
identify values that control current behavior and isolate them
refactor image file manipulation into a set of re-usable utilities
Dependencies¶
None.
Testing¶
Standard Minesweeper testing should reveal if this refactor has not regressed any features and will cover all cases this code will refactor.
Documentation Impact¶
None. Internal developer documentation will be greatly improved.