cinder-specs/specs/liberty/abc-driver-update.rst

135 lines
2.5 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
Update drivers to new base class structure
==========================================
https://blueprints.launchpad.net/cinder/+spec/abc-driver-update
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.
Alternatives
------------
No porting at all, which would make the [1] pointless.
Data model impact
-----------------
None.
REST API impact
---------------
None.
Security impact
---------------
None.
Notifications impact
--------------------
None.
Other end user impact
---------------------
None.
Performance Impact
------------------
See [1]
Other deployer impact
---------------------
None.
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.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
Marc Koderer (m-koderer)
Other contributors:
All driver maintainers
Work Items
----------
Etherpad if necessary.
Dependencies
============
None.
Testing
=======
Individual driver unit tests needs to get adapted.
Documentation Impact
====================
None.
References
==========
[1]: https://review.openstack.org/#/c/114168/
[2]: https://review.openstack.org/#/c/160346/