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/