cinderlib.persistence package

Submodules

cinderlib.persistence.base module

class cinderlib.persistence.base.DB(persistence_driver)[source]

Bases: object

Replacement for DB access methods.

This will serve as replacement for methods used by:

  • Drivers
  • OVOs’ get_by_id and save methods
  • DB implementation

Data will be retrieved using the persistence driver we setup.

classmethod image_volume_cache_get_by_volume_id(context, volume_id)[source]
snapshot_get(context, snapshot_id, *args, **kwargs)[source]
volume_get(context, volume_id, *args, **kwargs)[source]
class cinderlib.persistence.base.PersistenceDriverBase(**kwargs)[source]

Bases: object

Provide Metadata Persistency for our resources.

This class will be used to store new resources as they are created, updated, and removed, as well as provide a mechanism for users to retrieve volumes, snapshots, and connections.

db
delete_connection(connection)[source]
delete_key_value(key)[source]
delete_snapshot(snapshot)[source]
delete_volume(volume)[source]
get_changed_fields(resource)[source]
get_connections(connection_id=None, volume_id=None)[source]
get_fields(resource)[source]
get_key_values(key)[source]
get_snapshots(snapshot_id=None, snapshot_name=None, volume_id=None)[source]
get_volumes(volume_id=None, volume_name=None, backend_name=None)[source]
reset_change_tracker(resource, fields=None)[source]
set_connection(connection)[source]
set_key_value(key, value)[source]
set_snapshot(snapshot)[source]
set_volume(volume)[source]

cinderlib.persistence.dbms module

cinderlib.persistence.memory module

class cinderlib.persistence.memory.MemoryPersistence[source]

Bases: cinderlib.persistence.base.PersistenceDriverBase

connections = {}
db
delete_connection(connection)[source]
delete_key_value(key_value)[source]
delete_snapshot(snapshot)[source]
delete_volume(volume)[source]
get_connections(connection_id=None, volume_id=None)[source]
get_key_values(key=None)[source]
get_snapshots(snapshot_id=None, snapshot_name=None, volume_id=None)[source]
get_volumes(volume_id=None, volume_name=None, backend_name=None)[source]
key_values = {}
set_connection(connection)[source]
set_key_value(key_value)[source]
set_snapshot(snapshot)[source]
set_volume(volume)[source]
snapshots = {}
volumes = {}

Module contents

cinderlib.persistence.setup(config)[source]

Setup persistence to be used in cinderlib.

By default memory persistance will be used, but there are other mechanisms available and other ways to use custom mechanisms:

  • Persistence plugins: Plugin mechanism uses Python entrypoints under namespace cinderlib.persistence.storage, and cinderlib comes with 3 different mechanisms, “memory”, “dbms”, and “memory_dbms”. To use any of these one must pass the string name in the storage parameter and any other configuration as keyword arguments.
  • Passing a class that inherits from PersistenceDriverBase as storage parameter and initialization parameters as keyword arguments.
  • Passing an instance that inherits from PersistenceDriverBase as storage parameter.