[openstack-dev] [Cinder] Reusing Cinder drivers' code directly without running Cinder: In our applications, from Ansible, and for Containers

Gorka Eguileor geguileo at redhat.com
Wed May 23 14:09:49 UTC 2018


During the last OpenStack PTG, I announced in the Cinder room the
development of cinderlib, and explained how this library allowed any
Python application to use Cinder storage drivers (there are over 80)
without running any services.

This takes the standalone effort one step further. Now you don't need to
run any Cinder services (API, Scheduler, Volume), RabbitMQ, or even a
DB, to manage and attach volumes and snapshots.

Even though we don't need a DB we still need to persist the metadata,
but the library supports JSON serialization so we can save it wherever
we want.  I'm also finishing a metadata persistence plugin mechanism to
allow external plugins for different storage solutions (DB, K8s CRDs,
Key-Value systems...).

This library opens a broad range of possibilities for the Cinder
drivers, and I have explored a couple of them: Using it from Ansible and
in containers with CSI driver that includes the latest features
including snapshots that were introduced last week.

The projects' documentation is lacking, but I've written a couple of
blog posts with a brief introduction to these POCs for anybody that is

- Cinderlib: https://gorka.eguileor.com/cinderlib
- Ansible storage role: https://gorka.eguileor.com/ansible-role-storage
- Cinderlib-CSI: https://gorka.eguileor.com/cinderlib-csi

And the repositories can be found in GitHub:

- Cinderlib: https://github.com/akrog/cinderlib
- Ansible storage role: https://github.com/akrog/ansible-role-storage
- Cinderlib-CSI:https://github.com/akrog/cinderlib-csi


More information about the OpenStack-dev mailing list