Introduce abstract interface model in volume drivers

Registered by Marc Koderer

Instead of using a lose interface definition of volumes drivers use the ABC
python library to build abstract classes that enforces the driver to implement
the needed functionality. Goal is to fail fast and not using exceptions during
runtime if the driver is not using the correct interface.

Blueprint information

Status:
Complete
Approver:
Mike Perez
Priority:
Medium
Drafter:
Marc Koderer
Direction:
Approved
Assignee:
Marc Koderer
Definition:
Approved
Series goal:
Accepted for kilo
Implementation:
Implemented
Milestone target:
milestone icon 2015.1.0
Started by
Marc Koderer
Completed by
Marc Koderer

Related branches

Sprints

Whiteboard

As discussed in the Cinder meeting, we'll be merging this change first thing in k-2. http://eavesdrop.openstack.org/meetings/cinder/2014/cinder.2014-12-10-16.00.log.html

Gerrit topic: https://review.openstack.org/#q,topic:bp/abc-volume-drivers,n,z

Addressed by: https://review.openstack.org/114168
    Add spec for bp/abc-volume-drivers

Addressed by: https://review.openstack.org/127455
    Split volume driver into ABC classes

Addressed by: https://review.openstack.org/138661
    Port rbd driver to use new driver model

Addressed by: https://review.openstack.org/138999
    Adapt volume manager to new driver structure

Addressed by: https://review.openstack.org/140588
    Create proxy volume driver

Addressed by: https://review.openstack.org/160674
    Port block_device driver to use new driver model

Addressed by: https://review.openstack.org/160688
    Port remote_fs driver to use new driver model

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.