Include the URL of your launchpad blueprint:
This Specification talks about 2 points. First the extraction of the brick/cinder directory into it’s own standalone library. Second, changing cinder to use the external library.
The idea of ‘brick’ was created back in the Havana timeframe. All along it was meant to be a standalone library that Cinder, Nova and any other project in OpenStack could use. Currently brick lives in a directory inside of Cinder, which means that only Cinder can use it.
Use the same library code both in Nova and Cinder.
We want to extract the brick directory and encapsulate it into it’s own pypi library that any python project can use.
So we need to do:
We could simply keep brick inside of Cinder and not share it’s code. The problem with this is that any changes/fixes to brick will then need to be backported into the same code in Nova. This is the existing problem.
This doesn’t change the data model for Cinder.
Any security related issues that impact brick may impact anything in Cinder that would use the new library. Brick will be placed into stackforge for code reviews, so anyone can contribute fixes.
There should be no performance impact, as the same code will exist in the pypi brick library as it does today in Cinder. The import will pull the library from a system installed location instead of the cinder codebase.
Brick will be a requirement for Cinder. So whoever builds distribution packages for cinder will also need to ensure that brick gets installed.
Currently, any Cinder developer can add new features and fix bugs in brick as part of the Cinder project. Going forward, developers will need to clone the source of brick from stackforge and make their changes there.
The downside to this is that If there are new features, APIs or interface changes in the brick library, a release will have to be published in order for Cinder to get those changes.
I have already started the work of creating a standalone brick library here: https://github.com/hemna/cinder-brick
All of the existing unit tests in cinder for brick can remain to ensure that it works as advertised. The existing Cinder brick unit tests will be migrated to the new project and run there as well.