Update drivers to new base class structure

Update drivers to new base class structure


The new abc structure was introduced by bp/abc-volume-drivers [1]. All drivers needs to get updated in order to benefit from the new structure.

Problem description

Instead of raising NotImplementedErrors during runtime this features allows to discovers the drivers feature set during startup and makes it discoverable for CI/code check systems.

Use Cases

The support matrix (see [2] for a draft implementation) can be extracted to see the graduation process of new functionality moving to a common function implemented by all drivers.

Proposed change

All cinder volume drivers needs to get updated with the following approach:

class FooDriver(driver.RetypeVD, driver.TransferVD, driver.ExtendVD,
                driver.CloneableVD, driver.CloneableImageVD,
                driver.SnapshotVD, driver.BaseVD)

A drivers must inherit from BaseVD and implement the basic functions. In order to mark that a driver does implement further feature sets it must inherit from the corresponding class.

If all drivers implement a certain feature set the functions will be moved to BasicVD at the end.


No porting at all, which would make the [1] pointless.

Data model impact


REST API impact


Security impact


Notifications impact


Other end user impact


Performance Impact

See [1]

Other deployer impact


Developer impact

This change will change all implemented drivers slightly. The functionality itself shouldn’t be changed at all but all driver need to be adopted to the new class model.



Primary assignee:
Marc Koderer (m-koderer)
Other contributors:
All driver maintainers

Work Items

Etherpad if necessary.




Individual driver unit tests needs to get adapted.

Documentation Impact


Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

Cinder Specs