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.RequestContextSecurity 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 
BadResetResourceStatus(message=None, **kwargs) Bases:
cinder.exception.CinderException- 
message= u’Bad reset resource status : %(message)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.ExceptionBase 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 
ErrorInFetchingConfiguration(message=None, **kwargs) Bases:
cinder.exception.VolumeDriverException- 
message= u”Error in fetching configuration for ‘%(persona)s’” 
- 
 
- 
exception 
ErrorInHyperScaleVersion(message=None, **kwargs) Bases:
cinder.exception.VolumeDriverException- 
message= u”Error in getting HyperScale version ‘%(cmd_error)s’” 
- 
 
- 
exception 
ErrorInParsingArguments(message=None, **kwargs) Bases:
cinder.exception.VolumeDriverException- 
message= u’Error in parsing message arguments : Invalid Payload’ 
- 
 
- 
exception 
ErrorInSendingMsg(message=None, **kwargs) Bases:
cinder.exception.VolumeDriverException- 
message= u”Error in sending message ‘%(cmd_error)s’” 
- 
 
- 
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 
GPFSDriverUnsupportedOperation(message=None, **kwargs) Bases:
cinder.exception.VolumeBackendAPIException- 
message= u’GPFS driver unsupported operation: %(msg)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.CinderExceptionNo 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 
ReplicationGroupError(message=None, **kwargs) Bases:
cinder.exception.CinderException- 
message= u’Group %(group_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 
UnableToExecuteHyperScaleCmd(message=None, **kwargs) Bases:
cinder.exception.VolumeDriverException- 
message= u”Failed HyperScale command for ‘%(message)s’” 
- 
 
- 
exception 
UnableToFailOver(message=None, **kwargs) Bases:
cinder.exception.CinderException- 
message= u’Unable to failover to replication target: %(reason)s).’ 
- 
 
- 
exception 
UnableToProcessHyperScaleCmdOutput(message=None, **kwargs) Bases:
cinder.exception.VolumeDriverException- 
message= u”Failed processing command output ‘%(cmd_out)s’ for HyperScale command” 
- 
 
- 
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 
ValidationError(message=None, **kwargs) Bases:
cinder.exception.Invalid- 
message= ‘%(detail)s’ 
- 
 
- 
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 
VolumeSnapshotNotFound(message=None, **kwargs) Bases:
cinder.exception.NotFound- 
message= u’No snapshots found for volume %(volume_id)s.’ 
- 
 
- 
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.TestCaseTest case base class for all unit tests.
- 
MOCK_TOOZ= True 
- 
MOCK_WORKER= True 
- 
POLICY_PATH= ‘cinder/tests/unit/policy.json’ 
- 
assertTrue(x, *args, **kwargs) 
- 
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:
strClass that literrally does nothing.
We inherit from str in case it’s called with json.dumps.
- 
class 
TraceWrapperMetaclass Bases:
typeMetaclass 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.TraceWrapperMetaclassMetaclass 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, default=False) 
- 
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_log_levels(prefix) 
- 
get_log_method(level_string) 
- 
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 are 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.
- 
paths_normcase_equal(path_a, path_b) 
- 
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) 
- 
set_log_levels(prefix, level_string) 
- 
setup_tracing(trace_flags) Set global variables for each trace flag.
Sets variables TRACE_METHOD and TRACE_API, which represent whether to log methods or 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.TestCaseTests 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) 
-