# The Database Layer

## The `manila.db.api` Module

Defines interface for DB access.

The underlying driver is loaded as a `LazyPluggable`.

Functions in this module are imported into the manila.db namespace. Call these functions from manila.db namespace, not the manila.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

backend:

  string to lookup in the list of LazyPluggable backends. sqlalchemy is the only supported backend right now.

connection:

  string specifying the sqlalchemy connection to use, like: sqlite:///var/lib/manila/manila.sqlite.

enable_new_services:

  when adding a new service to the database, is it in the pool of available hardware (Default: True)

async_operation_data_delete(context, entity_id, key=None)

  Remove one, list or all key-value pairs for given entity_id.

async_operation_data_get(context, entity_id, key=None, default=None)

  Get one, list or all key-value pairs for given entity_id.

async_operation_data_update(context, entity_id, details, delete_existing=False)

  Update key-value pairs for given entity_id.

authorize_project_context(context, project_id)

  Ensures a request has permission to access the given project.

authorize_quota_class_context(context, class_name)

  Ensures a request has permission to access the given quota class.

availability_zone_get(context, id_or_name)

  Get availability zone by name or id.

availability_zone_get_all(context)

  Get all active availability zones.

backend_info_get(context, host)

  Get hash info for given host.

backend_info_update(context, host, value=None, delete_existing=False)

  Update hash info for host.

cleanup_expired_messages(context)

  Soft delete expired messages

count_share_group_snapshot_members_in_share(context, share_id)

  Returns the number of group snapshot members linked to the share.

count_share_group_snapshots_in_share_group(context, share_group_id)

  Returns the number of sg snapshots with the specified share group.

count_share_groups_in_share_network(context, share_network_id)

  Return the number of groups with the specified share network.

count_shares_in_share_group(context, share_group_id)

  Returns the number of undeleted shares with the specified group.

driver_private_data_delete(context, entity_id, key=None)

  Remove one, list or all key-value pairs for given entity_id.

driver_private_data_get(context, entity_id, key=None, default=None)

  Get one, list or all key-value pairs for given entity_id.

driver_private_data_update(context, entity_id, details, delete_existing=False)

  Update key-value pairs for given entity_id.

export_location_get_all(context, share_id)

  Get all export locations of a share.

export_location_get_all_by_share_id(context, share_id, include_admin_only=True, ignore_migration_destination=False, ignore_secondary_replicas=False)

  Get all export locations of a share by its ID.

export_location_get_all_by_share_instance_id(context, share_instance_id, include_admin_only=True)

  Get all export locations of a share instance by its ID.

export_location_get_by_uuid(context, export_location_uuid, ignore_secondary_replicas=False)

  Get specific export location of a share.

export_location_metadata_delete(context, export_location_uuid, keys, session=None)

  Delete metadata of an export location.

export_location_metadata_get(context, export_location_uuid, session=None)

  Get all metadata of an export location.

export_location_metadata_update(context, export_location_uuid, metadata, delete, session=None)

  Update metadata of an export location.

export_locations_update(context, share_instance_id, export_locations, delete=True)

  Update export locations of a share instance.

get_all_shares_by_share_group(context, share_group_id)

message_create(context, values)

  Creates a new message with the specified values.

message_destroy(context, message_id)

  Deletes message with the specified ID.

message_get(context, message_id)

  Return a message with the specified ID.

message_get_all(context, filters=None, limit=None, offset=None, sort_key=None, sort_dir=None)

  Returns all messages with the project of the specified context.

network_allocation_create(context, values)

  Create a network allocation DB record.

network_allocation_delete(context, id)

  Delete a network allocation DB record.

network_allocation_get(context, id, read_deleted=None)

  Get a network allocation DB record.

network_allocation_update(context, id, values, read_deleted=None)

  Update a network allocation DB record.

network_allocations_get_by_ip_address(context, ip_address)

  Get network allocations by IP address.

network_allocations_get_for_share_server(context, share_server_id, label=None, subnet_id=None)

  Get network allocations for share server.

purge_deleted_records(context, age_in_days)

  Purge deleted rows older than given age from all tables

  Raises:

    InvalidParameterValue if age_in_days is incorrect.

quota_class_create(context, class_name, resource, limit)

  Create a quota class for the given name and resource.

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, user_id=None, share_type_id=None)

  Create a quota for the given project and resource.

quota_destroy_all_by_project(context, project_id)

  Destroy all quotas associated with a given project.

quota_destroy_all_by_project_and_user(context, project_id, user_id)

  Destroy all quotas associated with a given project and user.

quota_destroy_all_by_share_type(context, share_type_id, project_id=None)

  Destroy all quotas associated with a given share type and project.

quota_get_all(context, project_id)

  Retrieve all user quotas associated with a given project.

quota_get_all_by_project(context, project_id)

  Retrieve all quotas associated with a given project.

quota_get_all_by_project_and_share_type(context, project_id, share_type_id)

  Retrieve all quotas associated with a given project and user.

quota_get_all_by_project_and_user(context, project_id, user_id)

  Retrieve all quotas associated with a given project and user.

quota_reserve(context, resources, quotas, user_quotas, share_type_quotas, deltas, expire, until_refresh, max_age, project_id=None, user_id=None, share_type_id=None, overquota_allowed=False)

  Check quotas and create appropriate reservations.

quota_update(context, project_id, resource, limit, user_id=None, share_type_id=None)

  Update a quota or raise if it does not exist.

quota_usage_create(context, project_id, user_id, resource, in_use, reserved=0, until_refresh=None, share_type_id=None)

  Create a quota usage.

quota_usage_get(context, project_id, resource, user_id=None, share_type_id=None)

  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.

quota_usage_get_all_by_project_and_share_type(context, project_id, share_type_id)

  Retrieve all usage associated with a given resource.

quota_usage_get_all_by_project_and_user(context, project_id, user_id)

  Retrieve all usage associated with a given resource.

quota_usage_update(context, project_id, user_id, resource, share_type_id=None, **kwargs)

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

reservation_commit(context, reservations, project_id=None, user_id=None, share_type_id=None)

  Commit quota reservations.

reservation_expire(context)

  Roll back any expired reservations.

reservation_rollback(context, reservations, project_id=None, user_id=None, share_type_id=None)

  Roll back quota reservations.

resource_lock_create(context, values)

  Create a resource lock.

resource_lock_delete(context, lock_id)

  Delete a resource lock.

resource_lock_get(context, lock_id)

  Retrieve a resource lock.

resource_lock_get_all(context, **kwargs)

  Retrieve all resource locks.

resource_lock_update(context, lock_id, values)

  Update a resource lock.

security_service_create(context, values)

  Create security service DB record.

security_service_delete(context, id)

  Delete security service DB record.

security_service_get(context, id, **kwargs)

  Get security service DB record.

security_service_get_all(context)

  Get all security service DB records.

security_service_get_all_by_project(context, project_id)

  Get all security service DB records for the given project.

security_service_get_all_by_share_network(context, share_network_id)

  Get all security service DB records for the given share network.

security_service_update(context, id, values)

  Update security service DB record.

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)

  Get all services for a given topic.

service_get_all_share_sorted(context)

  Get all share services sorted by share count.

  Returns:

    a list of (Service, share_count) tuples.

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.

share_access_check_for_existing_access(context, share_id, access_type, access_to)

  Returns True if rule corresponding to the type and client exists.

share_access_create(context, values)

  Allow access to share.

share_access_get(context, access_id)

  Get share access rule.

share_access_get_all_by_type_and_access(context, share_id, access_type, access)

  Returns share access by given type and access.

share_access_get_all_for_instance(context, instance_id, filters=None, with_share_access_data=True)

  Get all access rules related to a certain share instance.

share_access_get_all_for_share(context, share_id, filters=None)

  Get all access rules for given share.

share_access_get_with_context(context, access_id)

  Get share access rule.

share_access_metadata_delete(context, access_id, key)

  Delete metadata of share access rule.

share_access_metadata_update(context, access_id, metadata)

  Update metadata of share access rule.

share_and_snapshot_instances_status_update(context, values, share_instance_ids=None, snapshot_instance_ids=None, current_expected_status=None)

share_backup_create(context, share_id, values)

  Create new share backup with specified values.

share_backup_delete(context, backup_id)

  Deletes backup with the specified ID.

share_backup_get(context, backup_id)

  Get share backup by id.

share_backup_update(context, backup_id, values)

  Updates a share backup with given values.

share_backups_get_all(context, filters=None, limit=None, offset=None, sort_key=None, sort_dir=None)

  Get all backups.

share_create(context, share_values, create_share_instance=True)

  Create new share.

share_delete(context, share_id)

  Delete share.

share_get(context, share_id, **kwargs)

  Get share by id.

share_get_all(context, filters=None, sort_key=None, sort_dir=None)

  Get all shares.

share_get_all_by_project(context, project_id, filters=None, is_public=False, sort_key=None, sort_dir=None)

  Returns all shares with given project ID.

share_get_all_by_project_with_count(context, project_id, filters=None, is_public=False, sort_key=None, sort_dir=None)

  Returns all shares with given project ID.

share_get_all_by_share_group_id(context, share_group_id, filters=None, sort_key=None, sort_dir=None)

  Returns all shares with given project ID and share group id.

share_get_all_by_share_group_id_with_count(context, share_group_id, filters=None, sort_key=None, sort_dir=None)

  Returns all shares with given project ID and share group id.

share_get_all_by_share_server(context, share_server_id, filters=None, sort_key=None, sort_dir=None)

  Returns all shares with given share server ID.

share_get_all_by_share_server_with_count(context, share_server_id, filters=None, sort_key=None, sort_dir=None)

  Returns all shares with given share server ID.

share_get_all_expired(context)

  Get all expired share DB records.

share_get_all_soft_deleted(context, share_server_id, filters=None, sort_key=None, sort_dir=None)

  Returns all shares in recycle bin with given share server ID.

share_get_all_soft_deleted_by_network(context, share_network_id, filters=None, sort_key=None, sort_dir=None)

  Returns all shares in recycle bin with given share network ID.

share_get_all_with_count(context, filters=None, sort_key=None, sort_dir=None)

  Get all shares.

share_group_create(context, values)

  Create a share group from the values dictionary.

share_group_destroy(context, share_group_id)

  Destroy the share group or raise if it does not exist.

share_group_get(context, share_group_id)

  Get a share group or raise if it does not exist.

share_group_get_all(context, detailed=True, filters=None, sort_key=None, sort_dir=None)

  Get all share groups.

share_group_get_all_by_host(context, host, detailed=True, filters=None, sort_key=None, sort_dir=None)

  Get all share groups belonging to a host.

share_group_get_all_by_project(context, project_id, detailed=True, filters=None, sort_key=None, sort_dir=None)

  Get all share groups belonging to a project.

share_group_get_all_by_share_server(context, share_server_id, filters=None, sort_key=None, sort_dir=None)

  Get all share groups associated with a share server.

share_group_snapshot_create(context, values)

  Create a share group snapshot from the values dictionary.

share_group_snapshot_destroy(context, share_group_snapshot_id)

  Destroy the share_group_snapshot or raise if it does not exist.

share_group_snapshot_get(context, share_group_snapshot_id)

  Get a share group snapshot.

share_group_snapshot_get_all(context, detailed=True, filters=None, sort_key=None, sort_dir=None)

  Get all share group snapshots.

share_group_snapshot_get_all_by_project(context, project_id, detailed=True, filters=None, sort_key=None, sort_dir=None)

  Get all share group snapshots belonging to a project.

share_group_snapshot_member_create(context, values)

  Create a share group snapshot member from the values dictionary.

share_group_snapshot_member_update(context, member_id, values)

  Set the given properties on a share group snapshot member and update it.

  Raises NotFound if share_group_snapshot member does not exist.

share_group_snapshot_members_get_all(context, share_group_snapshot_id)

  Return the members of a share group snapshot.

share_group_snapshot_update(context, share_group_snapshot_id, values)

  Set the given properties on a share group snapshot and update it.

  Raises NotFound if share group snapshot does not exist.

share_group_type_access_add(context, type_id, project_id)

  Add share group type access for project.

share_group_type_access_get_all(context, type_id)

  Get all share group type access of a share group type.

share_group_type_access_remove(context, type_id, project_id)

  Remove share group type access for project.

share_group_type_create(context, values, projects=None)

  Create a new share group type.

share_group_type_destroy(context, type_id)

  Delete a share group type.

share_group_type_get(context, type_id, inactive=False, expected_fields=None)

  Get share_group type by id.

  Parameters:

    - context – context to query under

    - type_id – group type id to get.

    - inactive – Consider inactive group types when searching

    - expected_fields – Return those additional fields. Supported fields are: projects.

  Returns:

    share group type

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

  Get all share group types.

  Parameters:

    - context – context to query under

    - inactive – Include inactive share group types to the result set

    - filters –

      Filters for the query in the form of key/value. :is_public: Filter share group types based on visibility:

      > - True: List public group types only

      > - False: List private group types only

      > - None: List both public and private group types

  Returns:

    list of matching share group types

share_group_type_get_by_name(context, name)

  Get share group type by name.

share_group_type_specs_delete(context, type_id, key)

  Delete the given group specs item.

share_group_type_specs_get(context, type_id)

  Get all group specs for a share group type.

share_group_type_specs_update_or_create(context, type_id, group_specs)

  Create or update share group type specs.

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

share_group_update(context, share_group_id, values)

  Set the given properties on a share group and update it.

  Raises NotFound if share group does not exist.

share_instance_access_copy(context, share_id, instance_id)

  Maps the existing access rules for the share to the instance in the DB.

  Adds the instance mapping to the share’s access rules and returns the share’s access rules.

share_instance_access_create(context, values, share_instance_id)

  Allow access to share instance.

share_instance_access_delete(context, mapping_id)

  Deny access to share instance.

share_instance_access_get(context, access_id, instance_id, with_share_access_data=True)

  Get access rule mapping for share instance.

share_instance_access_update(context, access_id, instance_id, updates)

  Update the access mapping row for a given share instance and access.

share_instance_create(context, share_id, values)

  Create new share instance.

share_instance_delete(context, instance_id, session=None, need_to_update_usages=False)

  Delete share instance.

share_instance_get(context, instance_id, with_share_data=False)

  Get share instance by id.

share_instance_get_all(context, filters=None)

  Returns all share instances.

share_instance_get_all_by_host(context, host, with_share_data=False, status=None)

  Returns all share instances with given host.

share_instance_get_all_by_share(context, share_id)

  Returns list of shares that belong to given share.

share_instance_get_all_by_share_group_id(context, share_group_id)

  Returns list of share instances that belong to given share group.

share_instance_get_all_by_share_network(context, share_network_id)

  Returns list of shares that belong to given share network.

share_instance_get_all_by_share_server(context, share_server_id, with_share_data=False)

  Returns all share instances with given share_server_id.

share_instance_status_update(context, share_instance_ids, values)

  Updates the status of a bunch of share instances at once.

share_instance_update(context, instance_id, values, with_share_data=False)

  Update share instance fields.

share_metadata_delete(context, share_id, key)

  Delete the given metadata item.

share_metadata_get(context, share_id)

  Get all metadata for a share.

share_metadata_get_item(context, share_id, key)

  Get metadata item for given key and for a given share..

share_metadata_update(context, share, metadata, delete)

  Update metadata if it exists, otherwise create it.

share_metadata_update_item(context, share_id, item)

  update meta item containing key and value for given share.

share_network_add_security_service(context, id, security_service_id)

  Associate a security service with a share network.

share_network_create(context, values)

  Create a share network DB record.

share_network_delete(context, id)

  Delete a share network DB record.

share_network_get(context, id)

  Get requested share network DB record.

share_network_get_all(context)

  Get all share network DB records.

share_network_get_all_by_filter(context, filters=None)

  Get all share network DB records for the given filter.

share_network_get_all_by_project(context, project_id)

  Get all share network DB records for the given project.

share_network_get_all_by_security_service(context, security_service_id)

  Get all share network DB records for the given project.

share_network_remove_security_service(context, id, security_service_id)

  Dissociate a security service from a share network.

share_network_security_service_association_get(context, share_network_id, security_service_id)

  Get given share network and security service association.

share_network_subnet_create(context, values)

  Create a share network subnet DB record.

share_network_subnet_delete(context, network_subnet_id)

  Delete a share network subnet DB record.

share_network_subnet_get(context, network_subnet_id, parent_id=None)

  Get requested share network subnet DB record.

share_network_subnet_get_all(context)

  Get all share network subnet DB record.

share_network_subnet_get_all_by_share_server_id(context, share_server_id)

  Get the subnets that are being used by the share server.

share_network_subnet_get_all_with_same_az(context, network_subnet_id)

  Get requested az share network subnets DB record.

share_network_subnet_get_default_subnets(context, share_network_id)

  Get the default share network subnets DB records.

share_network_subnet_metadata_delete(context, share_network_subnet_id, key)

  Delete the given metadata item.

share_network_subnet_metadata_get(context, share_network_subnet_id, **kwargs)

  Get all metadata for a share network subnet.

share_network_subnet_metadata_get_item(context, share_network_subnet_id, key)

  Get metadata item for a share network subnet.

share_network_subnet_metadata_update(context, share_network_subnet_id, metadata, delete)

  Update metadata if it exists, otherwise create it.

share_network_subnet_metadata_update_item(context, share_network_subnet_id, metadata)

  Update metadata item if it exists, otherwise create it.

share_network_subnet_update(context, network_subnet_id, values)

  Update a share network subnet DB record.

share_network_subnets_get_all_by_availability_zone_id(context, share_network_id, availability_zone_id, fallback_to_default=True)

  Get the share network subnets DB record in a given AZ.

  This method returns list of subnets DB record for a given share network id and an availability zone. If the ‘availability_zone_id’ is ‘None’, a record may be returned and it will represent the default share network subnets. If there is no subnet for a specific availability zone id and “fallback_to_default” is True, this method will return the default share network subnets, if it exists.

share_network_update(context, id, values)

  Update a share network DB record.

share_network_update_security_service(context, id, current_security_service_id, new_security_service_id)

  Update a security service association with a share network.

share_replica_delete(context, share_replica_id, need_to_update_usages=True)

  Deletes a share replica.

share_replica_get(context, replica_id, with_share_server=False, with_share_data=False)

  Get share replica by id.

share_replica_update(context, share_replica_id, values, with_share_data=False)

  Updates a share replica with given values.

share_replicas_get_all(context, with_share_server=False, with_share_data=False)

  Returns all share replicas regardless of share.

share_replicas_get_all_by_share(context, share_id, with_share_server=False, with_share_data=False)

  Returns all share replicas for a given share.

share_replicas_get_available_active_replica(context, share_id, with_share_server=False, with_share_data=False)

  Returns an active replica for a given share.

share_resources_host_update(context, current_host, new_host)

  Update the host attr of all share resources that are on current_host.

share_restore(context, share_id)

  Restore share.

share_server_backend_details_delete(context, share_server_id)

  Delete backend details DB records for a share server.

share_server_backend_details_set(context, share_server_id, server_details)

  Create DB record with backend details.

share_server_create(context, values)

  Create share server DB record.

share_server_delete(context, id)

  Delete share server DB record.

share_server_get(context, id)

  Get share server DB record by ID.

share_server_get_all(context)

  Get all share server DB records.

share_server_get_all_by_host(context, host, filters=None)

  Get all share servers related to particular host.

share_server_get_all_by_host_and_share_subnet(context, host, share_subnet_id)

  Get share server DB records by host and share net.

share_server_get_all_by_host_and_share_subnet_valid(context, host, share_subnet_id)

  Get share server DB records by host and share net not error.

share_server_get_all_unused_deletable(context, host, updated_before)

  Get all free share servers DB records.

share_server_get_all_with_filters(context, filters)

  Get all share servers that match with the specified filters.

share_server_search_by_identifier(context, identifier)

  Search for share servers based on given identifier.

share_server_update(context, id, values)

  Update share server DB record.

share_servers_update(context, share_server_ids, values)

  Updates values of a bunch of share servers at once.

share_snapshot_access_create(context, values)

  Create a share snapshot access from the values dictionary.

share_snapshot_access_get(context, access_id)

  Get share snapshot access rule from given access_id.

share_snapshot_access_get_all_for_share_snapshot(context, share_snapshot_id, filters)

  Get all access rules for a given share snapshot according to filters.

share_snapshot_access_get_all_for_snapshot_instance(context, snapshot_instance_id, session=None)

  Get all access rules related to a certain snapshot instance.

share_snapshot_check_for_existing_access(context, share_snapshot_id, access_type, access_to)

  Returns True if rule corresponding to the type and client exists.

share_snapshot_create(context, values)

  Create a snapshot from the values dictionary.

share_snapshot_export_locations_get(context, snapshot_id)

  Get all export locations for a given share snapshot.

share_snapshot_get(context, snapshot_id, project_only=True)

  Get a snapshot or raise if it does not exist.

share_snapshot_get_all(context, filters=None, limit=None, offset=None, sort_key=None, sort_dir=None)

  Get all snapshots.

share_snapshot_get_all_by_project(context, project_id, filters=None, limit=None, offset=None, sort_key=None, sort_dir=None)

  Get all snapshots belonging to a project.

share_snapshot_get_all_by_project_with_count(context, project_id, filters=None, limit=None, offset=None, sort_key=None, sort_dir=None)

  Get all snapshots belonging to a project.

share_snapshot_get_all_for_share(context, share_id, filters=None, sort_key=None, sort_dir=None)

  Get all snapshots for a share.

share_snapshot_get_all_with_count(context, filters=None, limit=None, offset=None, sort_key=None, sort_dir=None)

  Get all snapshots.

share_snapshot_get_latest_for_share(context, share_id)

  Get the most recent snapshot for a share.

share_snapshot_instance_access_delete(context, access_id, snapshot_instance_id)

  Delete share snapshot instance access given its id.

share_snapshot_instance_access_get(context, share_snapshot_instance_id, access_id)

  Get the share snapshot instance access related to given ids.

share_snapshot_instance_access_update(context, access_id, instance_id, updates)

  Update the state of the share snapshot instance access.

share_snapshot_instance_create(context, snapshot_id, values)

  Create a share snapshot instance for an existing snapshot.

share_snapshot_instance_delete(context, snapshot_instance_id)

  Delete a share snapshot instance.

share_snapshot_instance_export_location_create(context, values)

  Create a share snapshot instance export location.

share_snapshot_instance_export_location_delete(context, el_id)

  Delete share snapshot instance export location given its id.

share_snapshot_instance_export_location_get(context, el_id)

  Get the share snapshot instance export location for given id.

share_snapshot_instance_export_locations_get_all(context, share_snapshot_instance_id)

  Get the share snapshot instance export locations for given id.

share_snapshot_instance_export_locations_update(context, share_snapshot_instance_id, export_locations, delete=True)

  Update export locations of a share instance.

share_snapshot_instance_get(context, instance_id, with_share_data=False)

  Get a snapshot instance or raise a NotFound exception.

share_snapshot_instance_get_all_with_filters(context, filters, with_share_data=False)

  Get all snapshot instances satisfying provided filters.

share_snapshot_instance_update(context, instance_id, values)

  Set the given properties on a share snapshot instance and update it.

  Raises NotFound if snapshot instance does not exist.

share_snapshot_instances_status_update(context, snapshot_instance_ids, values)

  Updates the status of a bunch of share snapshot instances at once.

share_snapshot_metadata_delete(context, share_snapshot_id, key)

  Delete the given metadata item.

share_snapshot_metadata_get(context, share_snapshot_id, **kwargs)

  Get all metadata for a share snapshot.

share_snapshot_metadata_get_item(context, share_snapshot_id, key)

  Get metadata item for a share snapshot.

share_snapshot_metadata_update(context, share_snapshot_id, metadata, delete)

  Update metadata if it exists, otherwise create it.

share_snapshot_metadata_update_item(context, share_snapshot_id, metadata)

  Update metadata item if it exists, otherwise create it.

share_snapshot_update(context, snapshot_id, values)

  Set the given properties on an snapshot and update it.

  Raises NotFound if snapshot does not exist.

share_soft_delete(context, share_id)

  Soft delete share.

share_type_access_add(context, type_id, project_id)

  Add share type access for project.

share_type_access_get_all(context, type_id)

  Get all share type access of a share type.

share_type_access_remove(context, type_id, project_id)

  Remove share type access for project.

share_type_create(context, values, projects=None)

  Create a new share type.

share_type_destroy(context, id)

  Delete a share type.

share_type_extra_specs_delete(context, share_type_id, key)

  Delete the given extra specs item.

share_type_extra_specs_get(context, share_type_id)

  Get all extra specs for a share type.

share_type_extra_specs_update_or_create(context, share_type_id, extra_specs)

  Create or update share type extra specs.

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

share_type_get(context, type_id, inactive=False, expected_fields=None)

  Get share type by id.

  Parameters:

    - context – context to query under

    - type_id – share type id to get.

    - inactive – Consider inactive share types when searching

    - expected_fields – Return those additional fields. Supported fields are: projects.

  Returns:

    share type

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

  Get all share types.

  Parameters:

    - context – context to query under

    - inactive – Include inactive share types to the result set

    - filters –

      Filters for the query in the form of key/value. :is_public: Filter share types based on visibility:

      > - True: List public share types only

      > - False: List private share types only

      > - None: List both public and private share types

  Returns:

    list of matching share types

share_type_get_by_name(context, name)

  Get share type by name.

share_type_get_by_name_or_id(context, name_or_id)

  Get share type by name or ID and return None if not found.

share_type_update(context, share_type_id, values)

  Update an exist share type.

share_update(context, share_id, values)

  Update share fields.

transfer_accept(context, transfer_id, user_id, project_id, accept_snapshots=False)

  Accept a share transfer.

transfer_accept_rollback(context, transfer_id, user_id, project_id, rollback_snap=False)

  Rollback a share transfer.

transfer_create(context, values)

  Create an entry in the transfers table.

transfer_destroy(context, transfer_id, update_share_status=True)

  Destroy a record in the share transfer table.

transfer_get(context, transfer_id)

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

transfer_get_all(context, limit=None, sort_key=None, sort_dir=None, filters=None, offset=None)

  Get all share transfer records.

transfer_get_all_by_project(context, project_id, limit=None, sort_key=None, sort_dir=None, filters=None, offset=None)

  Get all share transfer records for specified project.

transfer_get_all_expired(context)

  Get all expired transfers DB records.

update_share_instance_quota_usages(context, instance_id, session=None)

  Update share instance quota usages

## The Sqlalchemy Driver

### The `manila.db.sqlalchemy.api` Module

Implementation of SQLAlchemy backend.

### The `manila.db.sqlalchemy.models` Module

SQLAlchemy models for Manila data.

class AsynchronousOperationData(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents data as key-value pairs for asynchronous operations.

  created_at
  deleted
  deleted_at
  entity_uuid
  key
  updated_at
  value

class AvailabilityZone(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a private data as key-value pairs for a driver.

  created_at
  deleted
  deleted_at
  id
  name
  updated_at

class BackendInfo(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represent Backend Info.

  created_at
  deleted
  deleted_at
  host
  info_hash
  updated_at

class DriverPrivateData(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a private data as key-value pairs for a driver.

  created_at
  deleted
  deleted_at
  entity_uuid
  key
  updated_at
  value

class ManilaBase

  Bases: `ModelBase`, `TimestampMixin`, `SoftDeleteMixin`

  Base class for Manila Models.

  metadata = None
  soft_delete(session, update_status=False, status_field_name='status')

    Mark this object as deleted.

  to_dict()

class Message(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a user message.

  User messages show information about API operations to the API end-user.

  action_id
  created_at
  deleted
  deleted_at
  detail_id
  expires_at
  id
  message_level
  project_id
  request_id
  resource_id
  resource_type
  updated_at

class NetworkAllocation(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents network allocation data.

  cidr
  created_at
  deleted
  deleted_at
  gateway
  id
  ip_address
  ip_version
  label
  mac_address
  mtu
  network_type
  segmentation_id
  share_network_subnet_id
  share_server_id
  updated_at

class ProjectShareTypeQuota(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a single quota override for a share type within a project.

  created_at
  deleted
  deleted_at
  hard_limit
  id
  project_id
  resource
  share_type_id
  updated_at

class ProjectUserQuota(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a single quota override for a user with in a project.

  created_at
  deleted
  deleted_at
  hard_limit
  id
  project_id
  resource
  updated_at
  user_id

class Quota(**kwargs)

  Bases: `Base`, `ManilaBase`

  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.

  created_at
  deleted
  deleted_at
  hard_limit
  id
  project_id
  resource
  updated_at

class QuotaClass(**kwargs)

  Bases: `Base`, `ManilaBase`

  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.

  class_name
  created_at
  deleted
  deleted_at
  hard_limit
  id
  resource
  updated_at

class QuotaUsage(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents the current usage for a given resource.

  created_at
  deleted
  deleted_at
  id
  in_use
  project_id
  reserved
  resource
  share_type_id
  property total
  until_refresh
  updated_at
  user_id

class Reservation(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a resource reservation for quotas.

  created_at
  deleted
  deleted_at
  delta
  expire
  id
  project_id
  resource
  share_type_id
  updated_at
  usage_id
  user_id
  uuid

class ResourceLock(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a resource lock.

  Resource locks are held by users (or on behalf of users) and prevent actions to be performed on resources while the lock is present.

  created_at
  deleted
  deleted_at
  id
  lock_context
  lock_reason
  project_id
  resource_action
  resource_id
  resource_type
  updated_at
  user_id

class SecurityService(**kwargs)

  Bases: `Base`, `ManilaBase`

  Security service information for manila shares.

  created_at
  default_ad_site
  deleted
  deleted_at
  description
  dns_ip
  domain
  id
  name
  ou
  password
  project_id
  server
  type
  updated_at
  user

class Service(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a running service on a host.

  availability_zone
  availability_zone_id
  binary
  created_at
  deleted
  deleted_at
  disabled
  disabled_reason
  host
  id
  report_count
  state
  topic
  updated_at

class Share(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents an NFS and CIFS shares.

  property access_rules_status
  create_share_from_snapshot_support
  created_at
  deleted
  deleted_at
  display_description
  display_name
  property export_location
  property export_locations
  property has_replicas
  id
  property instance
  instances
  property is_busy
  is_public
  is_soft_deleted
  mount_snapshot_support
  property name
  property progress
  project_id
  replication_type
  revert_to_snapshot_support
  scheduled_to_be_deleted_at
  share_group_id
  share_proto
  property share_server_id
  size
  snapshot_id
  snapshot_support
  source_backup_id
  source_share_group_snapshot_member_id
  task_state
  updated_at
  user_id

class ShareAccessMapping(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents access to share.

  access_key
  access_level
  access_to
  access_type
  created_at
  deleted
  deleted_at
  id
  instance_mappings
  share
  share_id
  property state

    Get the aggregated ‘state’ from all the instance mapping states.

    An access rule is supposed to be truly ‘active’ when it has been applied across all of the share instances of the parent share object.

  updated_at

class ShareAccessRulesMetadata(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a metadata key/value pair for a share access rule.

  access
  access_id
  created_at
  deleted
  deleted_at
  id
  key
  updated_at
  value

class ShareBackup(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a backup of a share.

  property availability_zone
  availability_zone_id
  backup_type
  created_at
  deleted
  deleted_at
  display_description
  display_name
  fail_reason
  host
  id
  property name
  progress
  project_id
  restore_progress
  share_id
  size
  status
  topic
  updated_at
  user_id

class ShareGroup(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a share group.

  property availability_zone
  availability_zone_id
  consistent_snapshot_support
  created_at
  deleted
  deleted_at
  description
  host
  id
  name
  project_id
  share_group_type
  share_group_type_id
  share_network_id
  share_server_id
  source_share_group_snapshot_id
  status
  updated_at
  user_id

class ShareGroupShareTypeMapping(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents the share types in a share group.

  created_at
  deleted
  deleted_at
  id
  share_group
  share_group_id
  share_type_id
  updated_at

class ShareGroupSnapshot(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a share group snapshot.

  created_at
  deleted
  deleted_at
  description
  id
  name
  project_id
  share_group
  share_group_id
  status
  updated_at
  user_id

class ShareGroupTypeProjects(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represent projects associated share group types.

  created_at
  deleted
  deleted_at
  id
  project_id
  share_group_type
  share_group_type_id
  updated_at

class ShareGroupTypeShareTypeMapping(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents the share types supported by a share group type.

  created_at
  deleted
  deleted_at
  id
  share_group_type
  share_group_type_id
  share_type_id
  updated_at

class ShareGroupTypeSpecs(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents additional specs for a share group type.

  created_at
  deleted
  deleted_at
  id
  key
  share_group_type
  share_group_type_id
  updated_at
  value

class ShareGroupTypes(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represent possible share group types of shares offered.

  created_at
  deleted
  deleted_at
  id
  is_public
  name
  updated_at

class ShareInstance(**kwargs)

  Bases: `Base`, `ManilaBase`

  ACCESS_STATUS_PRIORITIES = {'active': 0, 'error': 2, 'syncing': 1}
  access_rules_status
  property availability_zone
  availability_zone_id
  cast_rules_to_readonly
  created_at
  deleted
  deleted_at
  property export_location
  export_locations
  host
  id
  launched_at
  mount_point_name
  property name
  progress
  replica_state
  scheduled_at
  set_share_data(share)
  share_id
  share_network_id
  share_server_id
  share_type
  share_type_id
  status
  terminated_at
  updated_at

class ShareInstanceAccessMapping(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents access to individual share instances.

  access_id
  created_at
  deleted
  deleted_at
  id
  instance
  set_share_access_data(share_access)
  share_instance_id
  state
  updated_at

class ShareInstanceExportLocations(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents export locations of share instances.

  created_at
  deleted
  deleted_at
  property el_metadata
  id
  is_admin_only
  path
  property replica_state
  share_instance_id
  updated_at
  uuid

class ShareInstanceExportLocationsMetadata(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents export location metadata of share instances.

  created_at
  deleted
  deleted_at
  export_location
  export_location_id
  property export_location_uuid
  id
  key
  updated_at
  value

class ShareMetadata(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a metadata key/value pair for a share.

  created_at
  deleted
  deleted_at
  id
  key
  share
  share_id
  updated_at
  value

class ShareNetwork(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents network data used by share.

  created_at
  deleted
  deleted_at
  description
  id
  name
  property network_allocation_update_support
  project_id
  property security_service_update_support
  security_services
  share_instances
  share_network_subnets
  status
  updated_at
  user_id

class ShareNetworkSecurityServiceAssociation(**kwargs)

  Bases: `Base`, `ManilaBase`

  Association table between compute_zones and compute_nodes tables.

  created_at
  deleted
  deleted_at
  id
  security_service_id
  share_network_id
  updated_at

class ShareNetworkSubnet(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a share network subnet used by some resources.

  property availability_zone
  availability_zone_id
  cidr
  created_at
  deleted
  deleted_at
  gateway
  id
  ip_version
  property is_default
  mtu
  network_type
  neutron_net_id
  neutron_subnet_id
  property project_id
  segmentation_id
  share_network_id
  property share_network_name
  share_servers
  property subnet_metadata
  updated_at

class ShareNetworkSubnetMetadata(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a metadata key/value pair for a subnet.

  created_at
  deleted
  deleted_at
  id
  key
  share_network_subnet
  share_network_subnet_id
  updated_at
  value

class ShareServer(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents share server used by share.

  property backend_details
  created_at
  deleted
  deleted_at
  host
  id
  identifier
  is_auto_deletable
  network_allocation_update_support
  network_allocations
  security_service_update_support
  share_groups
  share_instances
  property share_network_id
  property share_network_subnet_ids
  source_share_server_id
  status
  task_state
  updated_at

class ShareServerBackendDetails(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a metadata key/value pair for a share server.

  created_at
  deleted
  deleted_at
  id
  key
  share_server_id
  updated_at
  value

class ShareServerShareNetworkSubnetMapping(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents the Share Server and Share Network Subnet mapping.

  created_at
  deleted
  deleted_at
  id
  share_network_subnet_id
  share_server_id
  updated_at

class ShareSnapshot(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a snapshot of a share.

  property aggregate_status

    Get the aggregated ‘status’ of all instances.

    A snapshot is supposed to be truly ‘available’ when it is available across all of the share instances of the parent share object. In case of replication, we only consider replicas (share instances) that are in ‘in_sync’ replica_state.

  created_at
  deleted
  deleted_at
  display_description
  display_name
  property export_locations
  id
  property instance
  property name
  project_id
  share
  share_id
  property share_name
  share_proto
  share_size
  size
  updated_at
  user_id

class ShareSnapshotAccessMapping(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents access to share snapshot.

  access_to
  access_type
  created_at
  deleted
  deleted_at
  id
  instance_mappings
  share_snapshot_id
  property state

    Get the aggregated ‘state’ from all the instance mapping states.

    An access rule is supposed to be truly ‘active’ when it has been applied across all of the share snapshot instances of the parent share snapshot object.

  updated_at

class ShareSnapshotInstance(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a snapshot of a share.

  created_at
  deleted
  deleted_at
  export_locations
  id
  instance_size
  property name
  progress
  project_id
  provider_location
  share_group_snapshot
  share_group_snapshot_id
  property share_id
  share_instance
  share_instance_id
  property share_name
  share_proto
  property size
  snapshot
  snapshot_id
  status
  updated_at
  user_id

class ShareSnapshotInstanceAccessMapping(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents access to individual share snapshot instances.

  access_id
  created_at
  deleted
  deleted_at
  id
  instance
  set_snapshot_access_data(snapshot_access)
  share_snapshot_instance_id
  state
  updated_at

class ShareSnapshotInstanceExportLocation(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents export locations of share snapshot instances.

  created_at
  deleted
  deleted_at
  id
  is_admin_only
  path
  share_snapshot_instance_id
  updated_at

class ShareSnapshotMetadata(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a metadata key/value pair for a snapshot.

  created_at
  deleted
  deleted_at
  id
  key
  share_snapshot
  share_snapshot_id
  updated_at
  value

class ShareTypeExtraSpecs(**kwargs)

  Bases: `Base`, `ManilaBase`

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

  created_at
  deleted
  deleted_at
  id
  key
  share_type
  share_type_id
  updated_at
  value

class ShareTypeProjects(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represent projects associated share_types.

  created_at
  deleted
  deleted_at
  id
  project_id
  share_type
  share_type_id
  updated_at

class ShareTypes(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represent possible share_types of volumes offered.

  created_at
  deleted
  deleted_at
  description
  id
  is_public
  name
  updated_at

class Transfer(**kwargs)

  Bases: `Base`, `ManilaBase`

  Represents a share transfer request.

  accepted
  created_at
  crypt_hash
  deleted
  deleted_at
  destination_project_id
  display_name
  expires_at
  id
  resource_id
  resource_type
  salt
  source_project_id
  updated_at

get_access_rules_status(instances)

get_aggregated_access_rules_state(instance_mappings)

register_models()

  Register Models and create metadata.

  Called from manila.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.

## 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.

## DB migration revisions

If a DB schema needs to be updated, a new DB migration file needs to be added in `manila/db/migrations/alembic/versions`. To create such a file it’s possible to use `manila-manage db revision` or the corresponding tox command:

    tox -e dbrevision "change_foo_table"

In addition every migration script must be tested. See examples in `manila/tests/db/migrations/alembic/migrations_data_checks.py`.

Note

When writing database migrations that create tables with unique constraints or foreign keys, please ensure that the `mysql_charset` matches the referenced table.

this page last updated: 2026-03-20 00:20:57

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug