Cloned from launchpad blueprint https://blueprints.launchpad.net/cinder/+spec/abc-volume-drivers.
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.
Specification URL (additional information):