cinder.interface.backup_driver module

Core backup driver interface.

All backup drivers should support this interface as a bare minimum.

class BackupDriver

Bases: CinderInterface

Backup driver required interface.

backup(backup, volume_file, backup_metadata=False)

Start a backup of a specified volume.

If backup[‘parent_id’] is given, then an incremental backup should be performed.

If the parent backup is of different size, a full backup should be performed to ensure all data is included.

Parameters:
  • backup – The backup information.

  • volume_file – The volume or file to write the backup to.

  • backup_metadata – Whether to include volume metadata in the backup.

The variable structure of backup in the following format:

{
   'id': id,
   'availability_zone': availability_zone,
   'service': driver_name,
   'user_id': context.user_id,
   'project_id': context.project_id,
   'display_name': name,
   'display_description': description,
   'volume_id': volume_id,
   'status': fields.BackupStatus.CREATING,
   'container': container,
   'parent_id': parent_id,
   'size': size,
   'host': host,
   'snapshot_id': snapshot_id,
   'data_timestamp': data_timestamp,
}

service: backup driver parent_id: parent backup id size: equal to volume size data_timestamp: backup creation time

check_for_setup_error()

Method for checking if backup backend is successfully installed.

Depends on storage backend limitations and driver implementation this method could check if all needed config options are configurated well or try to connect to the storage to verify driver can do it without any issues.

A dummy default is provided. This method can be omitted from driver.

Returns:

None

Raises:
  • InvalidConfigurationValue – raise this if you detect a problem during a configuration check

  • BackupDriverException – raise this or one of its more specific subclasses if you detect setup problems other than invalid configuration

  • Exception – refrain from raising generic exceptions, although we catch them for the benefit of legacy code

delete_backup(backup)

Delete a backup from the backup store.

Parameters:

backup – The backup to be deleted.

export_record(backup)

Export driver specific backup record information.

If backup backend needs additional driver specific information to import backup record back into the system it must override this method and return it as a dictionary so it can be serialized into a string.

Default backup driver implementation has no extra information.

Parameters:

backup – backup object to export

Returns:

driver_info - dictionary with extra information

get_metadata(volume_id)

Get volume metadata.

Returns a json-encoded dict containing all metadata and the restore version i.e. the version used to decide what actually gets restored from this container when doing a backup restore.

Typically best to use py:class:BackupMetadataAPI for this.

Parameters:

volume_id – The ID of the volume.

Returns:

json-encoded dict of metadata.

import_record(backup, driver_info)

Import driver specific backup record information.

If backup backend needs additional driver specific information to import backup record back into the system it must override this method since it will be called with the extra information that was provided by export_record when exporting the backup.

Default backup driver implementation does nothing since it didn’t export any specific data in export_record.

Parameters:
  • backup – backup object to export

  • driver_info – dictionary with driver specific backup record information

Returns:

None

put_metadata(volume_id, json_metadata)

Set volume metadata.

Typically best to use py:class:BackupMetadataAPI for this.

Parameters:
  • volume_id – The ID of the volume.

  • json_metadata – The json-encoded dict of metadata.

restore(backup, volume_id, volume_file)

Restore volume from a backup.

Parameters:
  • backup – The backup information.

  • volume_id – The volume to be restored.

  • volume_file – The volume or file to read the data from.