The Cinder Library is an interfacing library that doesn’t have any storage driver code, so it expects Cinder drivers to be installed in the system to run properly.

We can use the latest stable release or the latest code from master branch.

Stable release


For Red Hat distributions the recommendation is to use RPMs to install the Cinder drivers instead of using pip. If we don’t have access to the Red Hat OpenStack Platform packages we can use the RDO community packages.

On CentOS, the Extras repository provides the RPM that enables the OpenStack repository. Extras is enabled by default on CentOS 7, so you can simply install the RPM to set up the OpenStack repository:

# yum install -y centos-release-openstack-rocky
# yum install -y openstack-cinder

On RHEL and Fedora, you’ll need to download and install the RDO repository RPM to set up the OpenStack repository:

# yum install -y
# yum install -y openstack-cinder

We can also install directly from source on the system or a virtual environment:

$ virtualenv venv
$ source venv/bin/activate
(venv) $ pip install git+git://


To install Cinder Library we’ll use PyPI, so we’ll make sure to have the pip command available:

# yum install -y python-pip
# pip install cinderlib

This is the preferred method to install Cinder Library, as it will always install the most recent stable release.

If you don’t have pip installed, this Python installation guide can guide you through the process.

Latest code


If we don’t have a packaged version or if we want to use a virtual environment we can install the drivers from source:

$ virtualenv cinder
$ source cinder/bin/activate
$ pip install git+git://


The sources for Cinder Library can be downloaded from the Github repo to use the latest version of the library.

You can either clone the public repository:

$ git clone git://

Or download the tarball:

$ curl  -OL

Once you have a copy of the source, you can install it with:

$ virtualenv cinder
$ python install


Cinderlib has less functionality than Cinder, which results in fewer required libraries.

When installing from PyPi or source, we’ll get all the dependencies regardless of whether they are needed by cinderlib or not, since the Cinder Python package specifies all the dependencies. Installing from packages may result in fewer dependencies, but this will depend on the distribution package itself.

To increase loading speed, and reduce memory footprint and dependencies, cinderlib fakes all unnecessary packages at runtime if they have not already been loaded.

This can be convenient when creating containers, as one can remove unnecessary packages on the same layer cinderlib gets installed to get a smaller containers.

If our application uses any of the packages cinderlib fakes, we just have to import them before importing cinderlib. This way cinderlib will not fake them.

The list of top level packages unnecessary for cinderlib are:

  • castellan

  • cursive

  • googleapiclient

  • jsonschema

  • keystoneauth1

  • keystonemiddleware

  • oauth2client

  • os-win

  • oslo.messaging

  • oslo.middleware

  • oslo.policy

  • oslo.reports

  • oslo.upgradecheck

  • osprofiler

  • paste

  • pastedeploy

  • pyparsing

  • python-barbicanclient

  • python-glanceclient

  • python-novaclient

  • python-swiftclient

  • python-keystoneclient

  • routes

  • webob