
test_titles had hardcoded releases list and 'liberty' folder was out of scope for this test. Also all specs were changed to fit template and pass tests. Change-Id: Ib4c6cbb96a9f9c96dd54cff3b92a35c35df72fff
159 lines
4.0 KiB
ReStructuredText
159 lines
4.0 KiB
ReStructuredText
..
|
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
License.
|
|
|
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
|
|
==========================================
|
|
Extract Brick library from Cinder
|
|
==========================================
|
|
|
|
Include the URL of your launchpad blueprint:
|
|
|
|
https://blueprints.launchpad.net/cinder/+spec/extract-brick
|
|
|
|
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.
|
|
|
|
Problem description
|
|
===================
|
|
|
|
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 Cases
|
|
=========
|
|
|
|
Use the same library code both in Nova and Cinder.
|
|
|
|
Proposed change
|
|
===============
|
|
|
|
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:
|
|
|
|
* First create a separate python project and release it into pypi
|
|
* Add brick to cinder's requirements.txt
|
|
* Remove the existing cinder/brick directory
|
|
* Everywhere in Cinder that uses cinder/brick will need to be modified to use
|
|
the new pypi library.
|
|
|
|
Alternatives
|
|
------------
|
|
|
|
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.
|
|
|
|
Data model impact
|
|
-----------------
|
|
|
|
This doesn't change the data model for Cinder.
|
|
|
|
REST API impact
|
|
---------------
|
|
|
|
None
|
|
|
|
Security impact
|
|
---------------
|
|
|
|
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.
|
|
|
|
Notifications impact
|
|
--------------------
|
|
|
|
None
|
|
|
|
Other end user impact
|
|
---------------------
|
|
|
|
None
|
|
|
|
Performance Impact
|
|
------------------
|
|
|
|
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.
|
|
|
|
|
|
Other deployer impact
|
|
---------------------
|
|
|
|
Brick will be a requirement for Cinder. So whoever builds distribution
|
|
packages for cinder will also need to ensure that brick gets installed.
|
|
|
|
|
|
Developer impact
|
|
----------------
|
|
|
|
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.
|
|
|
|
|
|
Implementation
|
|
==============
|
|
|
|
Assignee(s)
|
|
-----------
|
|
|
|
Primary assignee:
|
|
Walter A. Boring IV - walter-boring
|
|
|
|
Other contributors:
|
|
e0ne
|
|
|
|
Work Items
|
|
----------
|
|
|
|
I have already started the work of creating a standalone brick library here:
|
|
https://github.com/hemna/cinder-brick
|
|
|
|
* This repo will need to be registered into stackforge, so brick can benefit
|
|
from the community process and gerrit.
|
|
* Once in stackforge, an official release needs to be made so that the package
|
|
exists in pypi.
|
|
* Then a patch to Cinder can be made to add it to the requirements.txt
|
|
* The another patch to follow that removes brick/cinder and adjusts all of
|
|
Cinder to use the new library.
|
|
|
|
|
|
Dependencies
|
|
============
|
|
|
|
None
|
|
|
|
Testing
|
|
=======
|
|
|
|
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.
|
|
|
|
|
|
Documentation Impact
|
|
====================
|
|
|
|
None.
|
|
|
|
|
|
References
|
|
==========
|
|
|
|
* Existing standalone project: https://github.com/hemna/cinder-brick
|
|
* The original Cinder brick proposal
|
|
https://wiki.openstack.org/wiki/CinderBrick
|