Common and Misc Libraries¶
Libraries common throughout Cinder or just ones that haven’t been categorized very well yet.
The cinder.context Module¶
RequestContext: context for requests that persist through all of cinder.
- 
class RequestContext(user_id=None, project_id=None, is_admin=None, read_deleted='no', project_name=None, remote_address=None, timestamp=None, quota_class=None, service_catalog=None, **kwargs)
- Bases: - oslo_context.context.RequestContext- Security context and request information. - Represents the user taking a given action within the system. - 
deepcopy()
 - 
elevated(read_deleted=None, overwrite=False)
- Return a version of this context with admin flag set. 
 - 
classmethod from_dict(values)
 - 
project_id
 - 
read_deleted
 - 
to_dict()
 - 
to_policy_values()
 - 
user_id
 
- 
- 
get_admin_context(read_deleted='no')
- 
get_internal_tenant_context()
- Build and return the Cinder internal tenant context object - This request context will only work for internal Cinder operations. It will not be able to make requests to remote services. To do so it will need to use the keystone client to get an auth_token. 
The cinder.exception Module¶
Cinder base exception handling.
Includes decorator for re-raising Cinder-type exceptions.
SHOULD include dedicated exception logging.
- 
exception APIException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Error while requesting %(service)s API.'
 
- 
- 
exception APITimeout(message=None, **kwargs)
- Bases: - cinder.exception.APIException- 
message= u'Timeout while requesting %(service)s API.'
 
- 
- 
exception AdminRequired(message=None, **kwargs)
- Bases: - cinder.exception.NotAuthorized- 
message= u'User does not have admin privileges'
 
- 
- 
exception AttachmentSpecsNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Attachment %(attachment_id)s has no key %(specs_key)s.'
 
- 
- 
exception BackupDriverException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Backup driver reported an error: %(message)s'
 
- 
- 
exception BackupFailedToGetVolumeBackend(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Failed to identify volume backend.'
 
- 
- 
exception BackupInvalidCephArgs(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Invalid Ceph args provided for backup rbd operation'
 
- 
- 
exception BackupLimitExceeded(message=None, **kwargs)
- Bases: - cinder.exception.QuotaError- 
message= u'Maximum number of backups allowed (%(allowed)d) exceeded'
 
- 
- 
exception BackupMetadataUnsupportedVersion(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Unsupported backup metadata version requested'
 
- 
- 
exception BackupNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Backup %(backup_id)s could not be found.'
 
- 
- 
exception BackupOperationError(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'An error has occurred during backup operation'
 
- 
- 
exception BackupRBDOperationFailed(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Backup RBD operation failed'
 
- 
- 
exception BackupVerifyUnsupportedDriver(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Unsupported backup verify driver'
 
- 
- 
exception BadHTTPResponseStatus(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Bad HTTP response status %(status)s'
 
- 
- 
exception BrocadeZoningCliException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Brocade Fibre Channel Zoning CLI error: %(reason)s'
 
- 
- 
exception BrocadeZoningHttpException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Brocade Fibre Channel Zoning HTTP error: %(reason)s'
 
- 
- 
exception CappedVersionUnknown(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u"Unrecoverable Error: Versioned Objects in DB are capped to unknown version %(version)s. Most likely your environment contains only new services and you're trying to start an older one. Use `cinder-manage service list` to check that and upgrade this service."
 
- 
- 
exception CgSnapshotNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'CgSnapshot %(cgsnapshot_id)s could not be found.'
 
- 
- 
exception CinderException(message=None, **kwargs)
- Bases: - exceptions.Exception- Base Cinder Exception - To correctly use this class, inherit from it and define a ‘message’ property. That message will get printf’d with the keyword arguments provided to the constructor. - 
code= 500
 - 
headers= {}
 - 
message= u'An unknown exception occurred.'
 - 
safe= False
 
- 
- 
exception CiscoZoningCliException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Cisco Fibre Channel Zoning CLI error: %(reason)s'
 
- 
- 
exception CleanableInUse(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'%(type)s with id %(id)s is already being cleaned up or another host has taken over it.'
 
- 
- 
exception ClusterExists(message=None, **kwargs)
- Bases: - cinder.exception.Duplicate- 
message= u'Cluster %(name)s already exists.'
 
- 
- 
exception ClusterHasHosts(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Cluster %(id)s still has hosts.'
 
- 
- 
exception ClusterNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Cluster %(id)s could not be found.'
 
- 
- 
exception CohoException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Coho Data Cinder driver failure: %(message)s'
 
- 
- 
exception ConfigNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Could not find config at %(path)s'
 
- 
- 
exception ConsistencyGroupNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'ConsistencyGroup %(consistencygroup_id)s could not be found.'
 
- 
- 
exception ConvertedException(code=500, title='', explanation='')
- Bases: - webob.exc.WSGIHTTPException
- 
exception DateraAPIException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'Bad response from Datera API'
 
- 
- 
exception DellDriverRetryableException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'Retryable Dell Exception encountered'
 
- 
- 
exception DellDriverUnknownSpec(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Dell driver failure: %(reason)s'
 
- 
- 
exception DeviceUnavailable(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'The device in the path %(path)s is unavailable: %(reason)s'
 
- 
- 
exception DotHillAuthenticationError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= '%(message)s'
 
- 
- 
exception DotHillConnectionError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= '%(message)s'
 
- 
- 
exception DotHillInvalidBackend(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u"Backend doesn't exist (%(backend)s)"
 
- 
- 
exception DotHillNotEnoughSpace(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Not enough space on backend (%(backend)s)'
 
- 
- 
exception DotHillNotTargetPortal(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'No active iSCSI portals with supplied iSCSI IPs'
 
- 
- 
exception DotHillRequestError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= '%(message)s'
 
- 
- 
exception DriverNotInitialized(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Volume driver not ready.'
 
- 
- 
exception Duplicate(message=None, **kwargs)
- 
exception DuplicateSfVolumeNames(message=None, **kwargs)
- Bases: - cinder.exception.Duplicate- 
message= u'Detected more than one volume with name %(vol_name)s'
 
- 
- 
exception EMCSPUnavailableException(message=None, **kwargs)
- Bases: - cinder.exception.EMCVnxCLICmdError- 
message= u'EMC VNX Cinder Driver SPUnavailableException: %(cmd)s (Return Code: %(rc)s) (Output: %(out)s).'
 
- 
- 
exception EMCVnxCLICmdError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'EMC VNX Cinder Driver CLI exception: %(cmd)s (Return Code: %(rc)s) (Output: %(out)s).'
 
- 
- 
exception EncryptedBackupOperationFailed(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Backup operation of an encrypted volume failed.'
 
- 
- 
exception Error
- Bases: - exceptions.Exception
- 
exception EvaluatorParseException
- Bases: - exceptions.Exception- 
message= u'Error during evaluator parsing: %(reason)s'
 
- 
- 
exception ExportFailure(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Failed to export for volume: %(reason)s'
 
- 
- 
exception ExtendVolumeError(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Error extending volume: %(reason)s'
 
- 
- 
exception FCSanLookupServiceException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Fibre Channel SAN Lookup failure: %(reason)s'
 
- 
- 
exception FCZoneDriverException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Fibre Channel Zone operation failed: %(reason)s'
 
- 
- 
exception FailedCmdWithDump(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Operation failed with status=%(status)s. Full dump: %(data)s'
 
- 
- 
exception FileNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'File %(file_path)s could not be found.'
 
- 
- 
exception GCSApiFailure(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Google Cloud Storage api failure: %(reason)s'
 
- 
- 
exception GCSConnectionFailure(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Google Cloud Storage connection failure: %(reason)s'
 
- 
- 
exception GCSOAuth2Failure(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Google Cloud Storage oauth2 failure: %(reason)s'
 
- 
- 
exception GlanceConnectionFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Connection to glance failed: %(reason)s'
 
- 
- 
exception GlanceMetadataExists(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Glance metadata cannot be updated, key %(key)s exists for volume id %(volume_id)s'
 
- 
- 
exception GlanceMetadataNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Glance metadata for volume/snapshot %(id)s cannot be found.'
 
- 
- 
exception GroupLimitExceeded(message=None, **kwargs)
- Bases: - cinder.exception.QuotaError- 
message= u'Maximum number of groups allowed (%(allowed)d) exceeded'
 
- 
- 
exception GroupNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Group %(group_id)s could not be found.'
 
- 
- 
exception GroupSnapshotNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'GroupSnapshot %(group_snapshot_id)s could not be found.'
 
- 
- 
exception GroupTypeAccessExists(message=None, **kwargs)
- Bases: - cinder.exception.Duplicate- 
message= u'Group type access for %(group_type_id)s / %(project_id)s combination already exists.'
 
- 
- 
exception GroupTypeAccessNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Group type access not found for %(group_type_id)s / %(project_id)s combination.'
 
- 
- 
exception GroupTypeCreateFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Cannot create group_type with name %(name)s and specs %(group_specs)s'
 
- 
- 
exception GroupTypeEncryptionExists(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Group type encryption for type %(type_id)s already exists.'
 
- 
- 
exception GroupTypeEncryptionNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Group type encryption for type %(type_id)s does not exist.'
 
- 
- 
exception GroupTypeExists(message=None, **kwargs)
- Bases: - cinder.exception.Duplicate- 
message= u'Group Type %(id)s already exists.'
 
- 
- 
exception GroupTypeInUse(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Group Type %(group_type_id)s deletion is not allowed with groups present with the type.'
 
- 
- 
exception GroupTypeNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Group type %(group_type_id)s could not be found.'
 
- 
- 
exception GroupTypeNotFoundByName(message=None, **kwargs)
- Bases: - cinder.exception.GroupTypeNotFound- 
message= u'Group type with name %(group_type_name)s could not be found.'
 
- 
- 
exception GroupTypeSpecsNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Group Type %(group_type_id)s has no specs with key %(group_specs_key)s.'
 
- 
- 
exception GroupTypeUpdateFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Cannot update group_type %(id)s'
 
- 
- 
exception GroupVolumeTypeMappingExists(message=None, **kwargs)
- Bases: - cinder.exception.Duplicate- 
message= u'Group volume type mapping for %(group_id)s / %(volume_type_id)s combination already exists.'
 
- 
- 
exception HBSDBusy(message=None, **kwargs)
- Bases: - cinder.exception.HBSDError- 
message= 'Device or resource is busy.'
 
- 
- 
exception HBSDCmdError(message=None, ret=None, err=None)
- Bases: - cinder.exception.HBSDError
- 
exception HBSDError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'HBSD error occurs.'
 
- 
- 
exception HBSDNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Storage resource could not be found.'
 
- 
- 
exception HBSDVolumeIsBusy(message=None, **kwargs)
- Bases: - cinder.exception.VolumeIsBusy- 
message= u'Volume %(volume_name)s is busy.'
 
- 
- 
exception HNASConnError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= '%(message)s'
 
- 
- 
exception HostNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Host %(host)s could not be found.'
 
- 
- 
exception ISCSITargetAttachFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Failed to attach iSCSI target for volume %(volume_id)s.'
 
- 
- 
exception ISCSITargetCreateFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Failed to create iscsi target for volume %(volume_id)s.'
 
- 
- 
exception ISCSITargetDetachFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Failed to detach iSCSI target for volume %(volume_id)s.'
 
- 
- 
exception ISCSITargetHelperCommandFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= '%(error_message)s'
 
- 
- 
exception ISCSITargetNotFoundForVolume(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'No target id found for volume %(volume_id)s.'
 
- 
- 
exception ISCSITargetRemoveFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Failed to remove iscsi target for volume %(volume_id)s.'
 
- 
- 
exception ImageCopyFailure(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Failed to copy image to volume: %(reason)s'
 
- 
- 
exception ImageLimitExceeded(message=None, **kwargs)
- Bases: - cinder.exception.QuotaError- 
message= u'Image quota exceeded'
 
- 
- 
exception ImageNotAuthorized(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Not authorized for image %(image_id)s.'
 
- 
- 
exception ImageNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Image %(image_id)s could not be found.'
 
- 
- 
exception ImageUnacceptable(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Image %(image_id)s is unacceptable: %(reason)s'
 
- 
- 
exception InfortrendCliException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Infortrend CLI exception: %(err)s Param: %(param)s (Return Code: %(rc)s) (Output: %(out)s)'
 
- 
- 
exception Invalid(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
code= 400
 - 
message= u'Unacceptable parameters.'
 
- 
- 
exception Invalid3PARDomain(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Invalid 3PAR Domain: %(err)s'
 
- 
- 
exception InvalidAPIVersionString(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'API Version String %(version)s is of invalid format. Must be of format MajorNum.MinorNum.'
 
- 
- 
exception InvalidAttachment(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid attachment: %(reason)s'
 
- 
- 
exception InvalidAuthKey(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid auth key: %(reason)s'
 
- 
- 
exception InvalidBackup(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid backup: %(reason)s'
 
- 
- 
exception InvalidCgSnapshot(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid CgSnapshot: %(reason)s'
 
- 
- 
exception InvalidConfigurationValue(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Value "%(value)s" is not valid for configuration option "%(option)s"'
 
- 
- 
exception InvalidConnectorException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u"Connector doesn't have required information: %(missing)s"
 
- 
- 
exception InvalidConsistencyGroup(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid ConsistencyGroup: %(reason)s'
 
- 
- 
exception InvalidContentType(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid content type %(content_type)s.'
 
- 
- 
exception InvalidGlobalAPIVersion(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Version %(req_ver)s is not supported by the API. Minimum is %(min_ver)s and maximum is %(max_ver)s.'
 
- 
- 
exception InvalidGroup(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid Group: %(reason)s'
 
- 
- 
exception InvalidGroupSnapshot(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid GroupSnapshot: %(reason)s'
 
- 
- 
exception InvalidGroupSnapshotStatus(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid GroupSnapshot Status: %(reason)s'
 
- 
- 
exception InvalidGroupStatus(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid Group Status: %(reason)s'
 
- 
- 
exception InvalidGroupType(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid group type: %(reason)s'
 
- 
- 
exception InvalidHost(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid host: %(reason)s'
 
- 
- 
exception InvalidImageRef(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid image href %(image_href)s.'
 
- 
- 
exception InvalidInput(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid input received: %(reason)s'
 
- 
- 
exception InvalidMetadataType(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'The type of metadata: %(metadata_type)s for volume/snapshot %(id)s is invalid.'
 
- 
- 
exception InvalidNestedQuotaSetup(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Project quotas are not properly setup for nested quotas: %(reason)s.'
 
- 
- 
exception InvalidParameterValue(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= '%(err)s'
 
- 
- 
exception InvalidQoSSpecs(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid qos specs: %(reason)s'
 
- 
- 
exception InvalidQuotaValue(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Change would make usage less than 0 for the following resources: %(unders)s'
 
- 
- 
exception InvalidReplicationTarget(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid Replication Target: %(reason)s'
 
- 
- 
exception InvalidReservationExpiration(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid reservation expiration %(expire)s.'
 
- 
- 
exception InvalidResults(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'The results are invalid.'
 
- 
- 
exception InvalidSnapshot(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid snapshot: %(reason)s'
 
- 
- 
exception InvalidUUID(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Expected a uuid but received %(uuid)s.'
 
- 
- 
exception InvalidVolume(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid volume: %(reason)s'
 
- 
- 
exception InvalidVolumeAttachMode(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u"Invalid attaching mode '%(mode)s' for volume %(volume_id)s."
 
- 
- 
exception InvalidVolumeMetadata(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid metadata: %(reason)s'
 
- 
- 
exception InvalidVolumeMetadataSize(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid metadata size: %(reason)s'
 
- 
- 
exception InvalidVolumeType(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid volume type: %(reason)s'
 
- 
- 
exception KaminarioCinderDriverException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'KaminarioCinderDriver failure: %(reason)s'
 
- 
- 
exception KaminarioRetryableException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Kaminario retryable exception: %(reason)s'
 
- 
- 
exception KeyManagerError(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'key manager error: %(reason)s'
 
- 
- 
exception LockCreationFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Unable to create lock. Coordination backend not started.'
 
- 
- 
exception LockingFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Lock acquisition failed.'
 
- 
- 
exception MalformedRequestBody(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Malformed message body: %(reason)s'
 
- 
- 
exception MalformedResponse(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Malformed response to command %(cmd)s: %(reason)s'
 
- 
- 
exception ManageExistingAlreadyManaged(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Unable to manage existing volume. Volume %(volume_ref)s already managed.'
 
- 
- 
exception ManageExistingInvalidReference(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Manage existing volume failed due to invalid backend reference %(existing_ref)s: %(reason)s'
 
- 
- 
exception ManageExistingVolumeTypeMismatch(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Manage existing volume failed due to volume type mismatch: %(reason)s'
 
- 
- 
exception MessageNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Message %(message_id)s could not be found.'
 
- 
- 
exception MetadataAbsent(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'There is no metadata in DB object.'
 
- 
- 
exception MetadataCopyFailure(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Failed to copy metadata to volume: %(reason)s'
 
- 
- 
exception MetadataCreateFailure(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Failed to create metadata for volume: %(reason)s'
 
- 
- 
exception MetadataUpdateFailure(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Failed to update metadata for volume: %(reason)s'
 
- 
- 
exception MissingRequired(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u"Missing required element '%(element)s' in request body."
 
- 
- 
exception NetAppDriverException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'NetApp Cinder Driver exception.'
 
- 
- 
exception NexentaException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= '%(message)s'
 
- 
- 
exception NfsException(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSException- 
message= u'Unknown NFS exception'
 
- 
- 
exception NfsNoSharesMounted(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSNoSharesMounted- 
message= u'No mounted NFS shares found'
 
- 
- 
exception NfsNoSuitableShareFound(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSNoSuitableShareFound- 
message= u'There is no share which can host %(volume_size)sG'
 
- 
- 
exception NoMoreTargets(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- No more available targets. 
- 
exception NoValidBackend(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'No valid backend was found. %(reason)s'
 
- 
- 
exception NotAuthorized(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
code= 403
 - 
message= u'Not authorized.'
 
- 
- 
exception NotFound(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
code= 404
 - 
message= u'Resource could not be found.'
 - 
safe= True
 
- 
- 
exception NotSupportedOperation(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
code= 405
 - 
message= u'Operation not supported: %(operation)s.'
 
- 
- 
exception OverQuota(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Quota exceeded for resources: %(overs)s'
 
- 
- 
exception ParameterNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Could not find parameter %(param)s'
 
- 
- 
exception PolicyNotAuthorized(message=None, **kwargs)
- Bases: - cinder.exception.NotAuthorized- 
message= u"Policy doesn't allow %(action)s to be performed."
 
- 
- 
exception ProgrammingError(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Programming error in Cinder: %(reason)s'
 
- 
- 
exception ProjectQuotaNotFound(message=None, **kwargs)
- Bases: - cinder.exception.QuotaNotFound- 
message= u'Quota for project %(project_id)s could not be found.'
 
- 
- 
exception PureDriverException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Pure Storage Cinder driver failure: %(reason)s'
 
- 
- 
exception PureRetryableException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'Retryable Pure Storage Exception encountered'
 
- 
- 
exception QoSSpecsAssociateFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Failed to associate qos_specs: %(specs_id)s with type %(type_id)s.'
 
- 
- 
exception QoSSpecsCreateFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Failed to create qos_specs: %(name)s with specs %(qos_specs)s.'
 
- 
- 
exception QoSSpecsDisassociateFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s.'
 
- 
- 
exception QoSSpecsExists(message=None, **kwargs)
- Bases: - cinder.exception.Duplicate- 
message= u'QoS Specs %(specs_id)s already exists.'
 
- 
- 
exception QoSSpecsInUse(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'QoS Specs %(specs_id)s is still associated with entities.'
 
- 
- 
exception QoSSpecsKeyNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'QoS spec %(specs_id)s has no spec with key %(specs_key)s.'
 
- 
- 
exception QoSSpecsNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'No such QoS spec %(specs_id)s.'
 
- 
- 
exception QoSSpecsUpdateFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s.'
 
- 
- 
exception QuotaClassNotFound(message=None, **kwargs)
- Bases: - cinder.exception.QuotaNotFound- 
message= u'Quota class %(class_name)s could not be found.'
 
- 
- 
exception QuotaError(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
code= 413
 - 
headers= {'Retry-After': '0'}
 - 
message= u'Quota exceeded: code=%(code)s'
 - 
safe= True
 
- 
- 
exception QuotaNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Quota could not be found'
 
- 
- 
exception QuotaResourceUnknown(message=None, **kwargs)
- Bases: - cinder.exception.QuotaNotFound- 
message= u'Unknown quota resources %(unknown)s.'
 
- 
- 
exception QuotaUsageNotFound(message=None, **kwargs)
- Bases: - cinder.exception.QuotaNotFound- 
message= u'Quota usage for project %(project_id)s could not be found.'
 
- 
- 
exception RPCTimeout(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
code= 502
 - 
message= u'Timeout while requesting capabilities from backend %(service)s.'
 
- 
- 
exception RdxAPICommandException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Reduxio API Command Exception'
 
- 
- 
exception RdxAPIConnectionException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Reduxio API Connection Exception'
 
- 
- 
exception RemoteFSConcurrentRequest(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSException- 
message= u'A concurrent, possibly contradictory, request has been made.'
 
- 
- 
exception RemoteFSException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Unknown RemoteFS exception'
 
- 
- 
exception RemoteFSNoSharesMounted(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSException- 
message= u'No mounted shares found'
 
- 
- 
exception RemoteFSNoSuitableShareFound(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSException- 
message= u'There is no share which can host %(volume_size)sG'
 
- 
- 
exception RemoveExportException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Failed to remove export for volume %(volume)s: %(reason)s'
 
- 
- 
exception ReplicationError(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Volume %(volume_id)s replication error: %(reason)s'
 
- 
- 
exception ReplicationNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Volume replication for %(volume_id)s could not be found.'
 
- 
- 
exception ReservationNotFound(message=None, **kwargs)
- Bases: - cinder.exception.QuotaNotFound- 
message= u'Quota reservation %(uuid)s could not be found.'
 
- 
- 
exception SSHInjectionThreat(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'SSH command injection detected: %(command)s'
 
- 
- 
exception SchedulerHostFilterNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Scheduler Host Filter %(filter_name)s could not be found.'
 
- 
- 
exception SchedulerHostWeigherNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Scheduler Host Weigher %(weigher_name)s could not be found.'
 
- 
- 
exception ServerNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Instance %(uuid)s could not be found.'
 
- 
- 
exception ServiceNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound
- 
exception ServiceTooOld(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Service is too old to fulfil this request.'
 
- 
- 
exception ServiceUnavailable(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Service is unavailable at this time.'
 
- 
- 
exception SheepdogCmdError(message=None, **kwargs)
- Bases: - cinder.exception.SheepdogError- 
message= u'(Command: %(cmd)s) (Return Code: %(exit_code)s) (Stdout: %(stdout)s) (Stderr: %(stderr)s)'
 
- 
- 
exception SheepdogError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'An error has occurred in SheepdogDriver. (Reason: %(reason)s)'
 
- 
- 
exception SmbfsException(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSException- 
message= u'Unknown SMBFS exception.'
 
- 
- 
exception SmbfsNoSharesMounted(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSNoSharesMounted- 
message= u'No mounted SMBFS shares found.'
 
- 
- 
exception SmbfsNoSuitableShareFound(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSNoSuitableShareFound- 
message= u'There is no share which can host %(volume_size)sG.'
 
- 
- 
exception SnapshotIsBusy(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'deleting snapshot %(snapshot_name)s that has dependent volumes'
 
- 
- 
exception SnapshotLimitExceeded(message=None, **kwargs)
- Bases: - cinder.exception.QuotaError- 
message= u'Maximum number of snapshots allowed (%(allowed)d) exceeded'
 
- 
- 
exception SnapshotMetadataNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s.'
 
- 
- 
exception SnapshotNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Snapshot %(snapshot_id)s could not be found.'
 
- 
- 
exception SnapshotUnavailable(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'The snapshot is unavailable: %(data)s'
 
- 
- 
exception SolidFireAPIDataException(message=None, **kwargs)
- Bases: - cinder.exception.SolidFireAPIException- 
message= u'Error in SolidFire API response: data=%(data)s'
 
- 
- 
exception SolidFireAPIException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'Bad response from SolidFire API'
 
- 
- 
exception SolidFireAccountNotFound(message=None, **kwargs)
- Bases: - cinder.exception.SolidFireDriverException- 
message= u'Unable to locate account %(account_name)s on Solidfire device'
 
- 
- 
exception SolidFireDriverException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'SolidFire Cinder Driver exception'
 
- 
- 
exception SolidFireRetryableException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'Retryable SolidFire Exception encountered'
 
- 
- 
exception SwiftConnectionFailed(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Connection to swift failed: %(reason)s'
 
- 
- 
exception SynoAPIHTTPError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'HTTP exit code: [%(code)s]'
 
- 
- 
exception SynoAuthError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Synology driver authentication failed: %(reason)s.'
 
- 
- 
exception SynoLUNNotExist(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'LUN not found by UUID: %(uuid)s.'
 
- 
- 
exception TegileAPIException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'Unexpected response from Tegile IntelliFlash API'
 
- 
- 
exception TransferNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Transfer %(transfer_id)s could not be found.'
 
- 
- 
exception UnableToFailOver(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Unable to failover to replication target: %(reason)s).'
 
- 
- 
exception UnavailableDuringUpgrade(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Cannot perform %(action)s during system upgrade.'
 
- 
- 
exception UnexpectedOverQuota(message=None, **kwargs)
- Bases: - cinder.exception.QuotaError- 
message= u'Unexpected over quota on %(name)s.'
 
- 
- 
exception UnknownCmd(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Unknown or unsupported command %(cmd)s'
 
- 
- 
exception VSPBusy(message=None, **kwargs)
- Bases: - cinder.exception.VSPError- 
message= u'Device or resource is busy.'
 
- 
- 
exception VSPError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'VSP error occurred. %(message)s'
 
- 
- 
exception VSPNotSupported(message=None, **kwargs)
- Bases: - cinder.exception.VSPError- 
message= u'The function on the storage is not supported.'
 
- 
- 
exception VersionNotFoundForAPIMethod(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'API version %(version)s is not supported on this method.'
 
- 
- 
exception ViolinBackendErr(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'Backend reports: %(message)s'
 
- 
- 
exception ViolinBackendErrExists(message=None, **kwargs)
- Bases: - cinder.exception.VolumeBackendAPIException- 
message= u'Backend reports: item already exists'
 
- 
- 
exception ViolinBackendErrNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Backend reports: item not found'
 
- 
- 
exception ViolinInvalidBackendConfig(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Volume backend config is invalid: %(reason)s'
 
- 
- 
exception ViolinRequestRetryTimeout(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Backend service retry timeout hit: %(timeout)s sec'
 
- 
- 
exception ViolinResourceNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Backend reports: %(message)s'
 
- 
- 
exception VolumeAdminMetadataNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Volume %(volume_id)s has no administration metadata with key %(metadata_key)s.'
 
- 
- 
exception VolumeAttached(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Volume %(volume_id)s is still attached, detach volume first.'
 
- 
- 
exception VolumeAttachmentNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Volume attachment could not be found with filter: %(filter)s .'
 
- 
- 
exception VolumeBackendAPIException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Bad or unexpected response from the storage volume backend API: %(data)s'
 
- 
- 
exception VolumeBackupSizeExceedsAvailableQuota(message=None, **kwargs)
- Bases: - cinder.exception.QuotaError- 
message= u'Requested backup exceeds allowed Backup gigabytes quota. Requested %(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed.'
 
- 
- 
exception VolumeDeviceNotFound(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Volume device not found at %(device)s.'
 
- 
- 
exception VolumeDriverException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Volume driver reported an error: %(message)s'
 
- 
- 
exception VolumeGroupCreationFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Failed to create Volume Group: %(vg_name)s'
 
- 
- 
exception VolumeGroupNotFound(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Unable to find Volume Group: %(vg_name)s'
 
- 
- 
exception VolumeIsBusy(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'deleting volume %(volume_name)s that has snapshot'
 
- 
- 
exception VolumeLimitExceeded(message=None, **kwargs)
- Bases: - cinder.exception.QuotaError- 
message= u"Maximum number of volumes allowed (%(allowed)d) exceeded for quota '%(name)s'."
 
- 
- 
exception VolumeMetadataBackupExists(message=None, **kwargs)
- Bases: - cinder.exception.BackupDriverException- 
message= u'Metadata backup already exists for this volume'
 
- 
- 
exception VolumeMetadataNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Volume %(volume_id)s has no metadata with key %(metadata_key)s.'
 
- 
- 
exception VolumeMigrationFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Volume migration failed: %(reason)s'
 
- 
- 
exception VolumeNotDeactivated(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Volume %(name)s was not deactivated in time.'
 
- 
- 
exception VolumeNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Volume %(volume_id)s could not be found.'
 
- 
- 
exception VolumeSizeExceedsAvailableQuota(message=None, **kwargs)
- Bases: - cinder.exception.QuotaError- 
message= u'Requested volume or snapshot exceeds allowed %(name)s quota. Requested %(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed.'
 
- 
- 
exception VolumeSizeExceedsLimit(message=None, **kwargs)
- Bases: - cinder.exception.QuotaError- 
message= u'Requested volume size %(size)dG is larger than maximum allowed limit %(limit)dG.'
 
- 
- 
exception VolumeTypeAccessExists(message=None, **kwargs)
- Bases: - cinder.exception.Duplicate- 
message= u'Volume type access for %(volume_type_id)s / %(project_id)s combination already exists.'
 
- 
- 
exception VolumeTypeAccessNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Volume type access not found for %(volume_type_id)s / %(project_id)s combination.'
 
- 
- 
exception VolumeTypeCreateFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Cannot create volume_type with name %(name)s and specs %(extra_specs)s'
 
- 
- 
exception VolumeTypeEncryptionExists(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Volume type encryption for type %(type_id)s already exists.'
 
- 
- 
exception VolumeTypeEncryptionNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Volume type encryption for type %(type_id)s does not exist.'
 
- 
- 
exception VolumeTypeExists(message=None, **kwargs)
- Bases: - cinder.exception.Duplicate- 
message= u'Volume Type %(id)s already exists.'
 
- 
- 
exception VolumeTypeExtraSpecsNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Volume Type %(volume_type_id)s has no extra specs with key %(extra_specs_key)s.'
 
- 
- 
exception VolumeTypeInUse(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Volume Type %(volume_type_id)s deletion is not allowed with volumes present with the type.'
 
- 
- 
exception VolumeTypeNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Volume type %(volume_type_id)s could not be found.'
 
- 
- 
exception VolumeTypeNotFoundByName(message=None, **kwargs)
- Bases: - cinder.exception.VolumeTypeNotFound- 
message= u'Volume type with name %(volume_type_name)s could not be found.'
 
- 
- 
exception VolumeTypeUpdateFailed(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Cannot update volume_type %(id)s'
 
- 
- 
exception VzStorageException(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSException- 
message= u'Unknown Virtuozzo Storage exception'
 
- 
- 
exception VzStorageNoSharesMounted(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSNoSharesMounted- 
message= u'No mounted Virtuozzo Storage shares found'
 
- 
- 
exception VzStorageNoSuitableShareFound(message=None, **kwargs)
- Bases: - cinder.exception.RemoteFSNoSuitableShareFound- 
message= u'There is no share which can host %(volume_size)sG'
 
- 
- 
exception WebDAVClientError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'The WebDAV request failed. Reason: %(msg)s, Return code/reason: %(code)s, Source Volume: %(src)s, Destination Volume: %(dst)s, Method: %(method)s.'
 
- 
- 
exception WorkerExists(message=None, **kwargs)
- Bases: - cinder.exception.Duplicate- 
message= u'Worker for %(type)s %(id)s already exists.'
 
- 
- 
exception WorkerNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Worker with %s could not be found.'
 
- 
- 
exception XIODriverException(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'X-IO Volume Driver exception!'
 
- 
- 
exception XtremIOAlreadyMappedError(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Volume to Initiator Group mapping already exists'
 
- 
- 
exception XtremIOArrayBusy(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'System is busy, retry operation.'
 
- 
- 
exception XtremIOSnapshotsLimitExceeded(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Exceeded the limit of snapshots per volume'
 
- 
- 
exception ZadaraAttachmentsNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Failed to retrieve attachments for volume %(name)s'
 
- 
- 
exception ZadaraInvalidAttachmentInfo(message=None, **kwargs)
- Bases: - cinder.exception.Invalid- 
message= u'Invalid attachment info for volume %(name)s: %(reason)s'
 
- 
- 
exception ZadaraServerCreateFailure(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Unable to create server object for initiator %(name)s'
 
- 
- 
exception ZadaraServerNotFound(message=None, **kwargs)
- Bases: - cinder.exception.NotFound- 
message= u'Unable to find server object for initiator %(name)s'
 
- 
- 
exception ZadaraVPSANoActiveController(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= u'Unable to find any active VPSA controller'
 
- 
- 
exception ZadaraVolumeNotFound(message=None, **kwargs)
- Bases: - cinder.exception.VolumeDriverException- 
message= '%(reason)s'
 
- 
- 
exception ZoneManagerException(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Fibre Channel connection control failure: %(reason)s'
 
- 
- 
exception ZoneManagerNotInitialized(message=None, **kwargs)
- Bases: - cinder.exception.CinderException- 
message= u'Fibre Channel Zone Manager not initialized'
 
- 
The cinder.common.config Module¶
Command-line flag library.
Emulates gflags by wrapping cfg.ConfigOpts.
The idea is to move fully to cfg eventually, and this wrapper is a stepping stone.
- 
set_middleware_defaults()
- Update default configuration options for oslo.middleware. 
The cinder.rpc Module¶
- 
init(conf)
- 
cleanup()
- 
set_defaults(control_exchange)
- 
add_extra_exmods(*args)
- 
clear_extra_exmods()
- 
get_allowed_exmods()
- 
class RequestContextSerializer(base)
- Bases: - oslo_messaging.serializer.Serializer- 
deserialize_context(context)
 - 
deserialize_entity(context, entity)
 - 
serialize_context(context)
 - 
serialize_entity(context, entity)
 
- 
- 
get_client(target, version_cap=None, serializer=None)
- 
get_server(target, endpoints, serializer=None)
- 
get_notifier(*args, **kwargs)
The cinder.test Module¶
Base classes for our unit tests.
Allows overriding of CONF for use of fakes, and some black magic for inline callbacks.
- 
class Database(db_api, db_migrate, sql_connection)
- Bases: - fixtures.fixture.Fixture- 
setUp()
 
- 
- 
class ModelsObjectComparatorMixin
- Bases: - object
- 
class RPCAPITestCase(*args, **kwargs)
- Bases: - cinder.test.TestCase,- cinder.test.ModelsObjectComparatorMixin- 
setUp()
 
- 
- 
class TestCase(*args, **kwargs)
- Bases: - testtools.testcase.TestCase- Test case base class for all unit tests. - 
MOCK_WORKER= True
 - 
POLICY_PATH= 'cinder/tests/unit/policy.json'
 - 
assert_notify_called(mock_notify, calls)
 - 
flags(**kw)
- Override CONF variables for a test. 
 - 
mock_object(obj, attr_name, *args, **kwargs)
- Use python mock to mock an object attribute - Mocks the specified objects attribute with the given value. Automatically performs ‘addCleanup’ for the mock. 
 - 
override_config(name, override, group=None)
- Cleanly override CONF variables. 
 - 
patch(path, *args, **kwargs)
- Use python mock to mock a path with automatic cleanup. 
 - 
setUp()
- Run before each test method to initialize test environment. 
 - 
start_service(name, host=None, **kwargs)
 
- 
- 
exception TestingException
- Bases: - exceptions.Exception
The cinder.utils Module¶
Utilities and helper functions.
- 
class ComparableMixin
- Bases: - object
- 
DO_NOTHING
- Class that literrally does nothing. - We inherit from str in case it’s called with json.dumps. 
- 
class DoNothing
- Bases: - str- Class that literrally does nothing. - We inherit from str in case it’s called with json.dumps. 
- 
class TraceWrapperMetaclass
- Bases: - type- Metaclass that wraps all methods of a class with trace_method. - This metaclass will cause every function inside of the class to be decorated with the trace_method decorator. - To use the metaclass you define a class like so: @six.add_metaclass(utils.TraceWrapperMetaclass) class MyClass(object): 
- 
class TraceWrapperWithABCMetaclass
- Bases: - abc.ABCMeta,- cinder.utils.TraceWrapperMetaclass- Metaclass that wraps all methods of a class with trace. 
- 
add_visible_admin_metadata(volume)
- Add user-visible admin metadata to regular metadata. - Extracts the admin metadata keys that are to be made visible to non-administrators, and adds them to the regular metadata structure for the passed-in volume. 
- 
as_int(obj, quiet=True)
- 
brick_attach_volume_encryptor(context, attach_info, encryption)
- Attach encryption layer. 
- 
brick_detach_volume_encryptor(attach_info, encryption)
- Detach encryption layer. 
- 
brick_get_connector(protocol, driver=None, use_multipath=False, device_scan_attempts=3, *args, **kwargs)
- Wrapper to get a brick connector object. - This automatically populates the required protocol as well as the root_helper needed to execute commands. 
- 
brick_get_connector_properties(multipath=False, enforce_multipath=False)
- Wrapper to automatically set root_helper in brick calls. - Parameters: - multipath – A boolean indicating whether the connector can support multipath.
- enforce_multipath – If True, it raises exception when multipath=True is specified but multipathd is not running. If False, it falls back to multipath=False when multipathd is not running.
 
- 
brick_get_encryptor(connection_info, *args, **kwargs)
- Wrapper to get a brick encryptor object. 
- 
build_or_str(elements, str_format=None)
- Builds a string of elements joined by ‘or’. - Will join strings with the ‘or’ word and if a str_format is provided it will be used to format the resulted joined string. If there are no elements an empty string will be returned. - Parameters: - elements (String or iterable of strings.) – Elements we want to join.
- str_format (String.) – String to use to format the response.
 
- 
calculate_virtual_free_capacity(total_capacity, free_capacity, provisioned_capacity, thin_provisioning_support, max_over_subscription_ratio, reserved_percentage, thin)
- Calculate the virtual free capacity based on thin provisioning support. - Parameters: - total_capacity – total_capacity_gb of a host_state or pool.
- free_capacity – free_capacity_gb of a host_state or pool.
- provisioned_capacity – provisioned_capacity_gb of a host_state or pool.
- thin_provisioning_support – thin_provisioning_support of a host_state or a pool.
- max_over_subscription_ratio – max_over_subscription_ratio of a host_state or a pool
- reserved_percentage – reserved_percentage of a host_state or a pool.
- thin – whether volume to be provisioned is thin
 - Returns: - the calculated virtual free capacity. 
- 
check_exclusive_options(**kwargs)
- Checks that only one of the provided options is actually not-none. - Iterates over all the kwargs passed in and checks that only one of said arguments is not-none, if more than one is not-none then an exception will be raised with the names of those arguments who were not-none. 
- 
check_metadata_properties(metadata=None)
- Checks that the volume metadata properties are valid. 
- 
check_ssh_injection(cmd_list)
- 
check_string_length(value, name, min_length=0, max_length=None, allow_all_spaces=True)
- Check the length of specified string. - Parameters: - value – the value of the string
- name – the name of the string
- min_length – the min_length of the string
- max_length – the max_length of the string
 
- 
convert_str(text)
- Convert to native string. - Convert bytes and Unicode strings to native strings: - convert to bytes on Python 2: encode Unicode using encodeutils.safe_encode()
- convert to Unicode on Python 3: decode bytes from UTF-8
 
- 
execute(*cmd, **kwargs)
- Convenience wrapper around oslo’s execute() method. 
- 
get_blkdev_major_minor(path, lookup_for_file=True)
- Get ‘major:minor’ number of block device. - Get the device’s ‘major:minor’ number of a block device to control I/O ratelimit of the specified path. If lookup_for_file is True and the path is a regular file, lookup a disk device which the file lies on and returns the result for the device. 
- 
get_bool_param(param_string, params)
- 
get_file_gid(path)
- This primarily exists to make unit testing easier. 
- 
get_file_mode(path)
- This primarily exists to make unit testing easier. 
- 
get_file_size(path)
- Returns the file size. 
- 
get_root_helper()
- 
if_notifications_enabled(f)
- Calls decorated method only if notifications are enabled. 
- 
is_blk_device(dev)
- 
is_none_string(val)
- Check if a string represents a None value. 
- 
last_completed_audit_period(unit=None)
- This method gives you the most recently completed audit period. - arguments:
- units: string, one of ‘hour’, ‘day’, ‘month’, ‘year’
- Periods normally begin at the beginning (UTC) of the period unit (So a ‘day’ period begins at midnight UTC, a ‘month’ unit on the 1st, a ‘year’ on Jan, 1) unit string may be appended with an optional offset like so: 'day@18‘ This will begin the period at 18:00 UTC. 'month@15‘ starts a monthly period on the 15th, and year@3 begins a yearly one on March 1st.
 
- returns: 2 tuple of datetimes (begin, end)
- The begin timestamp of this audit period is the same as the end of the previous.
 
- 
log_unsupported_driver_warning(driver)
- Annoy the log about unsupported drivers. 
- 
make_dev_path(dev, partition=None, base='/dev')
- Return a path to a particular device. - >>> make_dev_path('xvdc') /dev/xvdc - >>> make_dev_path('xvdc', 1) /dev/xvdc1 
- 
monkey_patch()
- Patches decorators for all functions in a specified module. - If the CONF.monkey_patch set as True, this function patches a decorator for all functions in specified modules. - You can set decorators for each modules using CONF.monkey_patch_modules. The format is “Module path:Decorator function”. Example: ‘cinder.api.ec2.cloud:’ cinder.openstack.common.notifier.api.notify_decorator’ - Parameters of the decorator is as follows. (See cinder.openstack.common.notifier.api.notify_decorator) - Parameters: - name – name of the function
- function – object of the function
 
- 
notifications_enabled(conf)
- Check if oslo notifications are enabled. 
- 
read_file_as_root(file_path)
- Secure helper to read file as root. 
- 
remove_invalid_filter_options(context, filters, allowed_search_options)
- Remove search options that are not valid for non-admin API/context. 
- 
require_driver_initialized(driver)
- Verifies if driver is initialized - If the driver is not initialized, an exception will be raised. - Params driver: - The driver instance. - Raises: - exception.DriverNotInitialized 
- 
resolve_hostname(hostname)
- Resolves host name to IP address. - Resolves a host name (my.data.point.com) to an IP address (10.12.143.11). This routine also works if the data passed in hostname is already an IP. In this case, the same IP address will be returned. - Parameters: - hostname – Host name to resolve. - Returns: - IP Address for Host name. 
- 
retry(exceptions, interval=1, retries=3, backoff_rate=2, wait_random=False)
- 
robust_file_write(directory, filename, data)
- Robust file write. - Use “write to temp file and rename” model for writing the persistence file. - Parameters: - directory – Target directory to create a file.
- filename – File name to store specified data.
- data – String data.
 
- 
sanitize_hostname(hostname)
- Return a hostname which conforms to RFC-952 and RFC-1123 specs. 
- 
service_expired_time(with_timezone=False)
- 
setup_tracing(trace_flags)
- Set global variables for each trace flag. - Sets variables TRACE_METHOD and TRACE_API, which represent whether to log method and api traces. - Parameters: - trace_flags – a list of strings 
- 
tempdir(*args, **kwds)
- 
temporary_chown(*args, **kwds)
- Temporarily chown a path. - Params owner_uid: - UID of temporary owner (defaults to current user) 
- 
trace(f)
- Trace calls to the decorated function. - This decorator should always be defined as the outermost decorator so it is defined last. This is important so it does not interfere with other decorators. - Using this decorator on a function will cause its execution to be logged at DEBUG level with arguments, return values, and exceptions. - Returns: - a function decorator 
- 
trace_api(f)
- Decorates a function if TRACE_API is true. 
- 
trace_method(f)
- Decorates a function if TRACE_METHOD is true. 
- 
validate_dictionary_string_length(specs)
- Check the length of each key and value of dictionary. 
- 
validate_integer(value, name, min_value=None, max_value=None)
- Make sure that value is a valid integer, potentially within range. - Parameters: - value – the value of the integer
- name – the name of the integer
- min_length – the min_length of the integer
- max_length – the max_length of the integer
 - Returns: - integer 
- 
walk_class_hierarchy(clazz, encountered=None)
- Walk class hierarchy, yielding most derived classes first. 
The cinder.wsgi Module¶
Tests¶
The conf_fixture Module¶
- 
set_defaults(conf)
The test_rpc Module¶
- 
class FakeAPI
- Bases: - cinder.rpc.RPCAPI- 
BINARY= 'cinder-scheduler'
 - 
RPC_API_VERSION= '1.5'
 - 
TOPIC= 'cinder-scheduler-topic'
 
- 
- 
class RPCAPITestCase(*args, **kwargs)
- Bases: - cinder.test.TestCase- Tests RPCAPI mixin aggregating stuff related to RPC compatibility. - 
setUp()
 - 
test_init(*args, **keywargs)
 - 
test_init_cached_caps(*args, **keywargs)
 - 
test_init_no_notifications_1___()
- Test short-circuiting notifications with default and noop driver. 
 - 
test_init_no_notifications_2___noop__()
- Test short-circuiting notifications with default and noop driver. 
 - 
test_init_no_notifications_3___noop____noop__()
- Test short-circuiting notifications with default and noop driver. 
 - 
test_init_none_caps(*args, **keywargs)
- Test that with no service latest versions are selected. 
 - 
test_init_notifications(*args, **keywargs)
 
-