The Database Layer

The cinder.db.api Module

Defines interface for DB access.

Functions in this module are imported into the cinder.db namespace. Call these functions from cinder.db namespace, not the cinder.db.api namespace.

All functions in this module return objects that implement a dictionary-like interface. Currently, many of these objects are sqlalchemy objects that implement a dictionary interface. However, a future goal is to have all of these objects be simple dictionaries.

Related Flags

connection:string specifying the sqlalchemy connection to use, like: sqlite:///var/lib/cinder/cinder.sqlite.
enable_new_services:
 when adding a new service to the database, is it in the pool of available hardware (Default: True)
backup_create(context, values)

Create a backup from the values dictionary.

backup_destroy(context, backup_id)

Destroy the backup or raise if it does not exist.

backup_get(context, backup_id, read_deleted=None, project_only=True)

Get a backup or raise if it does not exist.

backup_get_all(context, filters=None, marker=None, limit=None, offset=None, sort_keys=None, sort_dirs=None)

Get all backups.

backup_get_all_by_host(context, host)

Get all backups belonging to a host.

backup_get_all_by_project(context, project_id, filters=None, marker=None, limit=None, offset=None, sort_keys=None, sort_dirs=None)

Get all backups belonging to a project.

backup_get_all_by_volume(context, volume_id, filters=None)

Get all backups belonging to a volume.

backup_update(context, backup_id, values)

Set the given properties on a backup and update it.

Raises NotFound if backup does not exist.

cgsnapshot_create(context, values)

Create a cgsnapshot from the values dictionary.

cgsnapshot_destroy(context, cgsnapshot_id)

Destroy the cgsnapshot or raise if it does not exist.

cgsnapshot_get(context, cgsnapshot_id)

Get a cgsnapshot or raise if it does not exist.

cgsnapshot_get_all(context, filters=None)

Get all cgsnapshots.

cgsnapshot_get_all_by_group(context, group_id, filters=None)

Get all cgsnapshots belonging to a consistency group.

cgsnapshot_get_all_by_project(context, project_id, filters=None)

Get all cgsnapshots belonging to a project.

cgsnapshot_update(context, cgsnapshot_id, values)

Set the given properties on a cgsnapshot and update it.

Raises NotFound if cgsnapshot does not exist.

consistencygroup_create(context, values)

Create a consistencygroup from the values dictionary.

consistencygroup_destroy(context, consistencygroup_id)

Destroy the consistencygroup or raise if it does not exist.

consistencygroup_get(context, consistencygroup_id)

Get a consistencygroup or raise if it does not exist.

consistencygroup_get_all(context)

Get all consistencygroups.

consistencygroup_get_all_by_project(context, project_id)

Get all consistencygroups belonging to a project.

consistencygroup_update(context, consistencygroup_id, values)

Set the given properties on a consistencygroup and update it.

Raises NotFound if consistencygroup does not exist.

dispose_engine()

Force the engine to establish new connections.

driver_initiator_data_get(context, initiator, namespace)

Query for an DriverPrivateData that has the specified key

driver_initiator_data_update(context, initiator, namespace, updates)

Create DriverPrivateData from the values dictionary.

finish_volume_migration(context, src_vol_id, dest_vol_id)

Perform database updates upon completion of volume migration.

image_volume_cache_create(context, host, image_id, image_updated_at, volume_id, size)

Create a new image volume cache entry.

image_volume_cache_delete(context, volume_id)

Delete an image volume cache entry specified by volume id.

image_volume_cache_get_all_for_host(context, host)

Query for all image volume cache entry for a host.

image_volume_cache_get_and_update_last_used(context, image_id, host)

Query for an image volume cache entry.

image_volume_cache_get_by_volume_id(context, volume_id)

Query to see if a volume id is an image-volume contained in the cache

iscsi_target_count_by_host(context, host)

Return count of export devices.

iscsi_target_create_safe(context, values)

Create an iscsi_target from the values dictionary.

The device is not returned. If the create violates the unique constraints because the iscsi_target and host already exist, no exception is raised.

purge_deleted_rows(context, age_in_days)

Purge deleted rows older than given age from cinder tables

Raises InvalidParameterValue if age_in_days is incorrect. :returns: number of deleted rows

qos_specs_associate(context, qos_specs_id, type_id)

Associate qos_specs from volume type.

qos_specs_associations_get(context, qos_specs_id)

Get all associated volume types for a given qos_specs.

qos_specs_create(context, values)

Create a qos_specs.

qos_specs_delete(context, qos_specs_id)

Delete the qos_specs.

qos_specs_disassociate(context, qos_specs_id, type_id)

Disassociate qos_specs from volume type.

qos_specs_disassociate_all(context, qos_specs_id)

Disassociate qos_specs from all entities.

qos_specs_get(context, qos_specs_id)

Get all specification for a given qos_specs.

qos_specs_get_all(context, inactive=False, filters=None)

Get all qos_specs.

qos_specs_get_by_name(context, name)

Get all specification for a given qos_specs.

qos_specs_item_delete(context, qos_specs_id, key)

Delete specified key in the qos_specs.

qos_specs_update(context, qos_specs_id, specs)

Update qos specs.

This adds or modifies the key/value pairs specified in the specs dict argument for a given qos_specs.

quota_allocated_get_all_by_project(context, project_id)

Retrieve all allocated quotas associated with a given project.

quota_allocated_update(context, project_id, resource, allocated)

Update allocated quota to subprojects or raise if it does not exist.

Raises :cinder.exception.ProjectQuotaNotFound
quota_class_create(context, class_name, resource, limit)

Create a quota class for the given name and resource.

quota_class_destroy(context, class_name, resource)

Destroy the quota class or raise if it does not exist.

quota_class_destroy_all_by_name(context, class_name)

Destroy all quotas associated with a given quota class.

quota_class_get(context, class_name, resource)

Retrieve a quota class or raise if it does not exist.

quota_class_get_all_by_name(context, class_name)

Retrieve all quotas associated with a given quota class.

quota_class_get_default(context)

Retrieve all default quotas.

quota_class_update(context, class_name, resource, limit)

Update a quota class or raise if it does not exist.

quota_create(context, project_id, resource, limit)

Create a quota for the given project and resource.

quota_destroy(context, project_id, resource)

Destroy the quota or raise if it does not exist.

quota_destroy_by_project(context, project_id)

Destroy all quotas associated with a given project.

quota_get(context, project_id, resource)

Retrieve a quota or raise if it does not exist.

quota_get_all_by_project(context, project_id)

Retrieve all quotas associated with a given project.

quota_reserve(context, resources, quotas, deltas, expire, until_refresh, max_age, project_id=None)

Check quotas and create appropriate reservations.

quota_update(context, project_id, resource, limit)

Update a quota or raise if it does not exist.

quota_usage_get(context, project_id, resource)

Retrieve a quota usage or raise if it does not exist.

quota_usage_get_all_by_project(context, project_id)

Retrieve all usage associated with a given resource.

reservation_commit(context, reservations, project_id=None)

Commit quota reservations.

reservation_expire(context)

Roll back any expired reservations.

reservation_rollback(context, reservations, project_id=None)

Roll back quota reservations.

service_create(context, values)

Create a service from the values dictionary.

service_destroy(context, service_id)

Destroy the service or raise if it does not exist.

service_get(context, service_id)

Get a service or raise if it does not exist.

service_get_all(context, disabled=None)

Get all services.

service_get_all_by_topic(context, topic, disabled=None)

Get all services for a given topic.

service_get_by_args(context, host, binary)

Get the state of an service by node name and binary.

service_get_by_host_and_topic(context, host, topic)

Get a service by host it’s on and topic it listens to.

service_update(context, service_id, values)

Set the given properties on an service and update it.

Raises NotFound if service does not exist.

snapshot_create(context, values)

Create a snapshot from the values dictionary.

snapshot_data_get_for_project(context, project_id, volume_type_id=None)

Get count and gigabytes used for snapshots for specified project.

snapshot_destroy(context, snapshot_id)

Destroy the snapshot or raise if it does not exist.

snapshot_get(context, snapshot_id)

Get a snapshot or raise if it does not exist.

snapshot_get_active_by_window(context, begin, end=None, project_id=None)

Get all the snapshots inside the window.

Specifying a project_id will filter for a certain project.

snapshot_get_all(context, filters=None, marker=None, limit=None, sort_keys=None, sort_dirs=None, offset=None)

Get all snapshots.

snapshot_get_all_by_project(context, project_id, filters=None, marker=None, limit=None, sort_keys=None, sort_dirs=None, offset=None)

Get all snapshots belonging to a project.

snapshot_get_all_for_cgsnapshot(context, project_id)

Get all snapshots belonging to a cgsnapshot.

snapshot_get_all_for_volume(context, volume_id)

Get all snapshots for a volume.

snapshot_get_by_host(context, host, filters=None)

Get all snapshots belonging to a host.

Parameters:
  • host – Include include snapshots only for specified host.
  • filters – Filters for the query in the form of key/value.
snapshot_metadata_delete(context, snapshot_id, key)

Delete the given metadata item.

snapshot_metadata_get(context, snapshot_id)

Get all metadata for a snapshot.

snapshot_metadata_update(context, snapshot_id, metadata, delete)

Update metadata if it exists, otherwise create it.

snapshot_update(context, snapshot_id, values)

Set the given properties on an snapshot and update it.

Raises NotFound if snapshot does not exist.

transfer_accept(context, transfer_id, user_id, project_id)

Accept a volume transfer.

transfer_create(context, values)

Create an entry in the transfers table.

transfer_destroy(context, transfer_id)

Destroy a record in the volume transfer table.

transfer_get(context, transfer_id)

Get a volume transfer record or raise if it does not exist.

transfer_get_all(context)

Get all volume transfer records.

transfer_get_all_by_project(context, project_id)

Get all volume transfer records for specified project.

volume_admin_metadata_delete(context, volume_id, key)

Delete the given metadata item.

volume_admin_metadata_get(context, volume_id)

Get all administration metadata for a volume.

volume_admin_metadata_update(context, volume_id, metadata, delete)

Update metadata if it exists, otherwise create it.

volume_attach(context, values)

Attach a volume.

volume_attached(context, volume_id, instance_id, host_name, mountpoint, attach_mode='rw')

Ensure that a volume is set as attached.

volume_attachment_get(context, attachment_id, session=None)
volume_attachment_get_by_host(context, volume_id, host)
volume_attachment_get_by_instance_uuid(context, volume_id, instance_uuid)
volume_attachment_get_used_by_volume_id(context, volume_id)
volume_attachment_update(context, attachment_id, values)
volume_create(context, values)

Create a volume from the values dictionary.

volume_data_get_for_host(context, host, count_only=False)

Get (volume_count, gigabytes) for project.

volume_data_get_for_project(context, project_id)

Get (volume_count, gigabytes) for project.

volume_destroy(context, volume_id)

Destroy the volume or raise if it does not exist.

volume_detached(context, volume_id, attachment_id)

Ensure that a volume is set as detached.

volume_encryption_metadata_get(context, volume_id, session=None)
volume_get(context, volume_id)

Get a volume or raise if it does not exist.

volume_get_active_by_window(context, begin, end=None, project_id=None)

Get all the volumes inside the window.

Specifying a project_id will filter for a certain project.

volume_get_all(context, marker, limit, sort_keys=None, sort_dirs=None, filters=None, offset=None)

Get all volumes.

volume_get_all_by_group(context, group_id, filters=None)

Get all volumes belonging to a consistency group.

volume_get_all_by_host(context, host, filters=None)

Get all volumes belonging to a host.

volume_get_all_by_project(context, project_id, marker, limit, sort_keys=None, sort_dirs=None, filters=None, offset=None)

Get all volumes belonging to a project.

volume_get_iscsi_target_num(context, volume_id)

Get the target num (tid) allocated to the volume.

volume_glance_metadata_bulk_create(context, volume_id, metadata)

Add Glance metadata for specified volume (multiple pairs).

volume_glance_metadata_copy_from_volume_to_volume(context, src_volume_id, volume_id)

Update the Glance metadata for a volume.

Update the Glance metadata for a volume by copying all of the key:value pairs from the originating volume.

This is so that a volume created from the volume (clone) will retain the original metadata.

volume_glance_metadata_copy_to_snapshot(context, snapshot_id, volume_id)

Update the Glance metadata for a snapshot.

This will copy all of the key:value pairs from the originating volume, to ensure that a volume created from the snapshot will retain the original metadata.

volume_glance_metadata_copy_to_volume(context, volume_id, snapshot_id)

Update the Glance metadata from a volume (created from a snapshot).

This will copy all of the key:value pairs from the originating snapshot, to ensure that the Glance metadata from the original volume is retained.

volume_glance_metadata_create(context, volume_id, key, value)

Update the Glance metadata for the specified volume.

volume_glance_metadata_delete_by_snapshot(context, snapshot_id)

Delete the glance metadata for a snapshot.

volume_glance_metadata_delete_by_volume(context, volume_id)

Delete the glance metadata for a volume.

volume_glance_metadata_get(context, volume_id)

Return the glance metadata for a volume.

volume_glance_metadata_get_all(context)

Return the glance metadata for all volumes.

volume_metadata_delete(context, volume_id, key, meta_type=<METADATA_TYPES.user: 1>)

Delete the given metadata item.

volume_metadata_get(context, volume_id)

Get all metadata for a volume.

volume_metadata_update(context, volume_id, metadata, delete, meta_type=<METADATA_TYPES.user: 1>)

Update metadata if it exists, otherwise create it.

volume_snapshot_glance_metadata_get(context, snapshot_id)

Return the Glance metadata for the specified snapshot.

volume_type_access_add(context, type_id, project_id)

Add volume type access for project.

volume_type_access_get_all(context, type_id)

Get all volume type access of a volume type.

volume_type_access_remove(context, type_id, project_id)

Remove volume type access for project.

volume_type_create(context, values, projects=None)

Create a new volume type.

volume_type_destroy(context, id)

Delete a volume type.

volume_type_encryption_create(context, volume_type_id, encryption_specs)
volume_type_encryption_delete(context, volume_type_id)
volume_type_encryption_get(context, volume_type_id, session=None)
volume_type_encryption_update(context, volume_type_id, encryption_specs)
volume_type_encryption_volume_get(context, volume_type_id, session=None)
volume_type_extra_specs_delete(context, volume_type_id, key)

Delete the given extra specs item.

volume_type_extra_specs_get(context, volume_type_id)

Get all extra specs for a volume type.

volume_type_extra_specs_update_or_create(context, volume_type_id, extra_specs)

Create or update volume type extra specs.

This adds or modifies the key/value pairs specified in the extra specs dict argument.

volume_type_get(context, id, inactive=False, expected_fields=None)

Get volume type by id.

Parameters:
  • context – context to query under
  • id – Volume type id to get.
  • inactive – Consider inactive volume types when searching
  • expected_fields – Return those additional fields. Supported fields are: projects.
Returns:

volume type

volume_type_get_all(context, inactive=False, filters=None)

Get all volume types.

Parameters:
  • context – context to query under
  • inactive – Include inactive volume types to the result set
  • filters

    Filters for the query in the form of key/value.

    is_public:Filter volume types based on visibility:
    • True: List public volume types only
    • False: List private volume types only
    • None: List both public and private volume types
Returns:

list of matching volume types

volume_type_get_by_name(context, name)

Get volume type by name.

volume_type_qos_associate(context, type_id, qos_specs_id)

Associate a volume type with specific qos specs.

volume_type_qos_associations_get(context, qos_specs_id, inactive=False)

Get volume types that are associated with specific qos specs.

volume_type_qos_disassociate(context, qos_specs_id, type_id)

Disassociate a volume type from specific qos specs.

volume_type_qos_disassociate_all(context, qos_specs_id)

Disassociate all volume types from specific qos specs.

volume_type_qos_specs_get(context, type_id)

Get all qos specs for given volume type.

volume_type_update(context, volume_type_id, values)
volume_types_get_by_name_or_id(context, volume_type_list)

Get volume types by name or id.

volume_update(context, volume_id, values)

Set the given properties on an volume and update it.

Raises NotFound if volume does not exist.

volume_update_status_based_on_attachment(context, volume_id)

Update volume status according to attached instance id

The Sqlalchemy Driver

The cinder.db.sqlalchemy.api Module

Implementation of SQLAlchemy backend.

The cinder.db.sqlalchemy.models Module

SQLAlchemy models for cinder data.

class Backup(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a backup of a volume to Swift.

Backup.availability_zone
Backup.container
Backup.created_at
Backup.deleted
Backup.deleted_at
Backup.display_description
Backup.display_name
Backup.fail_reason
Backup.host
Backup.id
Backup.name
Backup.num_dependent_backups
Backup.object_count
Backup.parent_id
Backup.project_id
Backup.service
Backup.service_metadata
Backup.size
Backup.status
Backup.temp_snapshot_id
Backup.temp_volume_id
Backup.updated_at
Backup.user_id
Backup.validate_fail_reason(key, fail_reason)
Backup.volume_id
class Cgsnapshot(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a cgsnapshot.

Cgsnapshot.consistencygroup
Cgsnapshot.consistencygroup_id
Cgsnapshot.created_at
Cgsnapshot.deleted
Cgsnapshot.deleted_at
Cgsnapshot.description
Cgsnapshot.id
Cgsnapshot.name
Cgsnapshot.project_id
Cgsnapshot.status
Cgsnapshot.updated_at
Cgsnapshot.user_id
class CinderBase

Bases: oslo_db.sqlalchemy.models.TimestampMixin, oslo_db.sqlalchemy.models.ModelBase

Base class for Cinder Models.

CinderBase.delete(session)

Delete this object.

CinderBase.deleted = Column(None, Boolean(), table=None, default=ColumnDefault(False))
CinderBase.deleted_at = Column(None, DateTime(), table=None)
CinderBase.metadata = None
class ConsistencyGroup(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a consistencygroup.

ConsistencyGroup.availability_zone
ConsistencyGroup.cgsnapshot_id
ConsistencyGroup.created_at
ConsistencyGroup.deleted
ConsistencyGroup.deleted_at
ConsistencyGroup.description
ConsistencyGroup.host
ConsistencyGroup.id
ConsistencyGroup.name
ConsistencyGroup.project_id
ConsistencyGroup.source_cgid
ConsistencyGroup.status
ConsistencyGroup.updated_at
ConsistencyGroup.user_id
ConsistencyGroup.volume_type_id
class DriverInitiatorData(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, oslo_db.sqlalchemy.models.TimestampMixin, oslo_db.sqlalchemy.models.ModelBase

Represents private key-value pair specific an initiator for drivers

DriverInitiatorData.created_at
DriverInitiatorData.id
DriverInitiatorData.initiator
DriverInitiatorData.key
DriverInitiatorData.namespace
DriverInitiatorData.updated_at
DriverInitiatorData.value
class Encryption(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents encryption requirement for a volume type.

Encryption here is a set of performance characteristics describing cipher, provider, and key_size for a certain volume type.

Encryption.cipher
Encryption.control_location
Encryption.created_at
Encryption.deleted
Encryption.deleted_at
Encryption.encryption_id
Encryption.key_size
Encryption.provider
Encryption.updated_at
Encryption.volume_type
Encryption.volume_type_id
class ImageVolumeCacheEntry(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, oslo_db.sqlalchemy.models.ModelBase

Represents an image volume cache entry

ImageVolumeCacheEntry.host
ImageVolumeCacheEntry.id
ImageVolumeCacheEntry.image_id
ImageVolumeCacheEntry.image_updated_at
ImageVolumeCacheEntry.last_used
ImageVolumeCacheEntry.size
ImageVolumeCacheEntry.volume_id
class IscsiTarget(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents an iscsi target for a given host.

IscsiTarget.created_at
IscsiTarget.deleted
IscsiTarget.deleted_at
IscsiTarget.host
IscsiTarget.id
IscsiTarget.target_num
IscsiTarget.updated_at
IscsiTarget.volume
IscsiTarget.volume_id
class QualityOfServiceSpecs(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents QoS specs as key/value pairs.

QoS specs is standalone entity that can be associated/disassociated with volume types (one to many relation). Adjacency list relationship pattern is used in this model in order to represent following hierarchical data with in flat table, e.g, following structure

qos-specs-1 ‘Rate-Limit’

+——> consumer = ‘front-end’ +——> total_bytes_sec = 1048576 +——> total_iops_sec = 500

qos-specs-2 ‘QoS_Level1’

+——> consumer = ‘back-end’ +——> max-iops = 1000 +——> min-iops = 200

is represented by:

id specs_id key value

—— ——– ————- —– UUID-1 NULL QoSSpec_Name Rate-Limit UUID-2 UUID-1 consumer front-end UUID-3 UUID-1 total_bytes_sec 1048576 UUID-4 UUID-1 total_iops_sec 500 UUID-5 NULL QoSSpec_Name QoS_Level1 UUID-6 UUID-5 consumer back-end UUID-7 UUID-5 max-iops 1000 UUID-8 UUID-5 min-iops 200

QualityOfServiceSpecs.created_at
QualityOfServiceSpecs.deleted
QualityOfServiceSpecs.deleted_at
QualityOfServiceSpecs.id
QualityOfServiceSpecs.key
QualityOfServiceSpecs.specs
QualityOfServiceSpecs.specs_id
QualityOfServiceSpecs.updated_at
QualityOfServiceSpecs.value
QualityOfServiceSpecs.vol_types
class Quota(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a single quota override for a project.

If there is no row for a given project id and resource, then the default for the quota class is used. If there is no row for a given quota class and resource, then the default for the deployment is used. If the row is present but the hard limit is Null, then the resource is unlimited.

Quota.allocated
Quota.created_at
Quota.deleted
Quota.deleted_at
Quota.hard_limit
Quota.id
Quota.project_id
Quota.resource
Quota.updated_at
class QuotaClass(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a single quota override for a quota class.

If there is no row for a given quota class and resource, then the default for the deployment is used. If the row is present but the hard limit is Null, then the resource is unlimited.

QuotaClass.class_name
QuotaClass.created_at
QuotaClass.deleted
QuotaClass.deleted_at
QuotaClass.hard_limit
QuotaClass.id
QuotaClass.resource
QuotaClass.updated_at
class QuotaUsage(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents the current usage for a given resource.

QuotaUsage.created_at
QuotaUsage.deleted
QuotaUsage.deleted_at
QuotaUsage.id
QuotaUsage.in_use
QuotaUsage.project_id
QuotaUsage.reserved
QuotaUsage.resource
QuotaUsage.total
QuotaUsage.until_refresh
QuotaUsage.updated_at
class Reservation(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a resource reservation for quotas.

Reservation.created_at
Reservation.deleted
Reservation.deleted_at
Reservation.delta
Reservation.expire
Reservation.id
Reservation.project_id
Reservation.resource
Reservation.updated_at
Reservation.usage
Reservation.usage_id
Reservation.uuid
class Service(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a running service on a host.

Service.availability_zone
Service.binary
Service.created_at
Service.deleted
Service.deleted_at
Service.disabled
Service.disabled_reason
Service.host
Service.id
Service.modified_at
Service.object_available_version
Service.object_current_version
Service.report_count
Service.rpc_available_version
Service.rpc_current_version
Service.topic
Service.updated_at
class Snapshot(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a snapshot of volume.

Snapshot.cgsnapshot
Snapshot.cgsnapshot_id
Snapshot.created_at
Snapshot.deleted
Snapshot.deleted_at
Snapshot.display_description
Snapshot.display_name
Snapshot.encryption_key_id
Snapshot.id
Snapshot.name
Snapshot.progress
Snapshot.project_id
Snapshot.provider_auth
Snapshot.provider_id
Snapshot.provider_location
Snapshot.status
Snapshot.updated_at
Snapshot.user_id
Snapshot.volume
Snapshot.volume_id
Snapshot.volume_name
Snapshot.volume_size
Snapshot.volume_type_id
class SnapshotMetadata(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a metadata key/value pair for a snapshot.

SnapshotMetadata.created_at
SnapshotMetadata.deleted
SnapshotMetadata.deleted_at
SnapshotMetadata.id
SnapshotMetadata.key
SnapshotMetadata.snapshot
SnapshotMetadata.snapshot_id
SnapshotMetadata.updated_at
SnapshotMetadata.value
class Transfer(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a volume transfer request.

Transfer.created_at
Transfer.crypt_hash
Transfer.deleted
Transfer.deleted_at
Transfer.display_name
Transfer.expires_at
Transfer.id
Transfer.salt
Transfer.updated_at
Transfer.volume
Transfer.volume_id
class Volume(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a block storage device that can be attached to a vm.

Volume.attach_status
Volume.availability_zone
Volume.bootable
Volume.consistencygroup
Volume.consistencygroup_id
Volume.created_at
Volume.deleted
Volume.deleted_at
Volume.display_description
Volume.display_name
Volume.ec2_id
Volume.encryption_key_id
Volume.host
Volume.id
Volume.launched_at
Volume.migration_status
Volume.multiattach
Volume.name
Volume.name_id
Volume.previous_status
Volume.project_id
Volume.provider_auth
Volume.provider_geometry
Volume.provider_id
Volume.provider_location
Volume.replication_driver_data
Volume.replication_extended_status
Volume.replication_status
Volume.scheduled_at
Volume.size
Volume.snapshot_id
Volume.source_volid
Volume.status
Volume.terminated_at
Volume.updated_at
Volume.user_id
Volume.volume_type_id
class VolumeAdminMetadata(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents an administrator metadata key/value pair for a volume.

VolumeAdminMetadata.created_at
VolumeAdminMetadata.deleted
VolumeAdminMetadata.deleted_at
VolumeAdminMetadata.id
VolumeAdminMetadata.key
VolumeAdminMetadata.updated_at
VolumeAdminMetadata.value
VolumeAdminMetadata.volume
VolumeAdminMetadata.volume_id
class VolumeAttachment(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a volume attachment for a vm.

VolumeAttachment.attach_mode
VolumeAttachment.attach_status
VolumeAttachment.attach_time
VolumeAttachment.attached_host
VolumeAttachment.created_at
VolumeAttachment.deleted
VolumeAttachment.deleted_at
VolumeAttachment.detach_time
VolumeAttachment.id
VolumeAttachment.instance_uuid
VolumeAttachment.mountpoint
VolumeAttachment.updated_at
VolumeAttachment.volume
VolumeAttachment.volume_id
class VolumeGlanceMetadata(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Glance metadata for a bootable volume.

VolumeGlanceMetadata.created_at
VolumeGlanceMetadata.deleted
VolumeGlanceMetadata.deleted_at
VolumeGlanceMetadata.id
VolumeGlanceMetadata.key
VolumeGlanceMetadata.snapshot_id
VolumeGlanceMetadata.updated_at
VolumeGlanceMetadata.value
VolumeGlanceMetadata.volume
VolumeGlanceMetadata.volume_id
class VolumeMetadata(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents a metadata key/value pair for a volume.

VolumeMetadata.created_at
VolumeMetadata.deleted
VolumeMetadata.deleted_at
VolumeMetadata.id
VolumeMetadata.key
VolumeMetadata.updated_at
VolumeMetadata.value
VolumeMetadata.volume
VolumeMetadata.volume_id
class VolumeTypeExtraSpecs(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represents additional specs as key/value pairs for a volume_type.

VolumeTypeExtraSpecs.created_at
VolumeTypeExtraSpecs.deleted
VolumeTypeExtraSpecs.deleted_at
VolumeTypeExtraSpecs.id
VolumeTypeExtraSpecs.key
VolumeTypeExtraSpecs.updated_at
VolumeTypeExtraSpecs.value
VolumeTypeExtraSpecs.volume_type
VolumeTypeExtraSpecs.volume_type_id
class VolumeTypeProjects(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represent projects associated volume_types.

VolumeTypeProjects.created_at
VolumeTypeProjects.deleted
VolumeTypeProjects.deleted_at
VolumeTypeProjects.id
VolumeTypeProjects.project_id
VolumeTypeProjects.updated_at
VolumeTypeProjects.volume_type
VolumeTypeProjects.volume_type_id
class VolumeTypes(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base, cinder.db.sqlalchemy.models.CinderBase

Represent possible volume_types of volumes offered.

VolumeTypes.created_at
VolumeTypes.deleted
VolumeTypes.deleted_at
VolumeTypes.description
VolumeTypes.id
VolumeTypes.is_public
VolumeTypes.name
VolumeTypes.qos_specs_id
VolumeTypes.updated_at
VolumeTypes.volumes
register_models()

Register Models and create metadata.

Called from cinder.db.sqlalchemy.__init__ as part of loading the driver, it will never need to be called explicitly elsewhere unless the connection is lost and needs to be reestablished.

The cinder.db.sqlalchemy.session Module

Tests

Tests are lacking for the db api layer and for the sqlalchemy driver. Failures in the drivers would be detected in other test cases, though.