Consolidate hypervisor driver implementations

Registered by Soren Hansen

Hypervisor drivers currently expose the same API, but that's pretty much all they have in common, even though they all have to do many of the same things. We should try and get as much code as possible moved into a common superclass. This way, many new features will be much easier to add to all drivers at the same time, and a lot of the differences in behaviour will automatically disappear.

Blueprint information

Status:
Complete
Approver:
Vish Ishaya
Priority:
Undefined
Drafter:
None
Direction:
Approved
Assignee:
Soren Hansen
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
John Garbutt

Related branches

Sprints

Whiteboard

We need a more explicit plan, marking as obsolete for now, the task work is a better opportunity for his work -- johnthetubaguy

This will probably require grabbing John Garbutt and someone off of the RAX public cloud team, but it would be awesome to get this done.

Note from JohnGarbutt: I am happy to help, this sounds like a good idea. I have some code around Live Migration that needs some work in this direction. It is probably worth talking to Johannes Erdfelt, as he had some plans around making actions idempotent, that would be great if they are shared in a base class (if that is at all possible).

Note from Sean Dague: As part of this refactoring effort I'd also like to get the virt drivers to be cleanly dynamically loadable. Right now there are driver reference names in connection.py that make it impossible to add or replace a driver without core changes, as the list of available drivers is a fixed list. I'm happy to help here.

Gerrit topic: https://review.openstack.org/#q,topic:bp/hypervisor-code-consolidation,n,z

Addressed by: https://review.openstack.org/10273
    Define cross-driver standardized vm_mode values

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.