VMware vm_ref refactor

Registered by Shawn Hartsock

The improper fetching, caching, invalidation, and use of vm_ref in the driver causes multiple performance problems and functional problems in the driver. This utility needs to be redesigned.

High/Critical priority problems caused by vm_util.py :
* https://bugs.launchpad.net/nova/+bug/1258179
* https://bugs.launchpad.net/nova/+bug/1290807
* https://bugs.launchpad.net/nova/+bug/1295381

The structure and use of the vm_util.py has become convoluted due to its history. It is time to reexamine the code around this utility.

Refactor goals:

* consolidate fetch operations for vm_ref and related information
** reduce number of network round trips
** reduce result set size to further reduce network IO locking problems
** introduce a VirtualMachine data object which can later be augmented or changed to centralize these operations.

At minimum by Juno-1 establish *the right way* to access vm_ref and related data.
Incremental and iterative progress can be made to deprecate the old methods of retrieving this data.

NOTE: This should compliment work being conducted by Rado.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Shawn Hartsock
Direction:
Needs approval
Assignee:
None
Definition:
Review
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

Work items:
refactor_design_document: INPROGRESS
virtual_machine data object definition: INPROGRESS
finder methods: TODO
cache modifications: TODO
deprecation of old getter and search methods: TODO
removal of old methods: TODO

This blueprint contains Public information 
Everyone can see this information.