fbd7a72c1b
When fixing bug #1854188 (Change-ID: I62e992804a3ae6aa0b4aa4f883807783197d4b33) we broke configuration options, because now we cannot pass configuration options from the DEFAULT section, and some ListOpt don't work because cinderlib was incorrectly expecting all these options to have bounds=True, but some don't define it and default to False. Most of the "crazy" code we currently have around oslo config is because we wanted to support drivers that add configuration options on runtime and reload the configuration. This made sense when cinderlib was not an OpenStack official project, but now that it is it makes more sense to force Cinder drivers to do the right thing. Aligned with this, this patch removes all the faking of the cinder.conf file as a StringIO object, and simply sets things in the configuration object that is passed to the drivers, which is the only thing they should be using. This will make cinderlib code more robust, even if some drivers will now need to be modified to work with cinderlib. We are validating known configuration options and ignoring unknown ones, like Cinder does. The NetApp driver was one of the drivers that would get broken, but since I have access to it and we can make a very small and targeted workaround to avoid breaking it, we do it as well. Closes-Bug: #1856556 Change-Id: I67fbf8e9d7ee79f3d6617b4d0ae755dae0e1987a |
||
---|---|---|
cinderlib | ||
devstack | ||
doc | ||
playbooks | ||
releasenotes | ||
roles/run-cinderlib-tests | ||
tools | ||
.gitignore | ||
.gitreview | ||
.stestr.conf | ||
.zuul.yaml | ||
CONTRIBUTING.rst | ||
DESCRIPTION.rst | ||
HACKING.rst | ||
LICENSE | ||
README.rst | ||
babel.cfg | ||
bindep.txt | ||
lower-constraints.txt | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
tox.ini |
README.rst
Cinder Library
Introduction
The Cinder Library, also known as cinderlib, is a Python library that leverages the Cinder project to provide an object oriented abstraction around Cinder's storage drivers to allow their usage directly without running any of the Cinder services or surrounding services, such as KeyStone, MySQL or RabbitMQ.
- Free software: Apache Software License 2.0
- Documentation: https://docs.openstack.org/cinderlib/latest/
The library is intended for developers who only need the basic CRUD functionality of the drivers and don't care for all the additional features Cinder provides such as quotas, replication, multi-tenancy, migrations, retyping, scheduling, backups, authorization, authentication, REST API, etc.
The library was originally created as an external project, so it didn't have the broad range of backend testing Cinder does, and only a limited number of drivers were validated at the time. Drivers should work out of the box, and we'll keep a list of drivers that have added the cinderlib functional tests to the driver gates confirming they work and ensuring they will keep working.
Features
- Use a Cinder driver without running a DBMS, Message broker, or Cinder service.
- Using multiple simultaneous drivers on the same application.
- Basic operations support:
- Create volume
- Delete volume
- Extend volume
- Clone volume
- Create snapshot
- Delete snapshot
- Create volume from snapshot
- Connect volume
- Disconnect volume
- Local attach
- Local detach
- Validate connector
- Extra Specs for specific backend functionality.
- Backend QoS
- Multi-pool support
- Metadata persistence plugins:
- Stateless: Caller stores JSON serialization.
- Database: Metadata is stored in a database: MySQL, PostgreSQL, SQLite...
- Custom plugin: Caller provides module to store Metadata and cinderlib calls it when necessary.