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, project_id, is_admin=None, read_deleted='no', roles=None, project_name=None, remote_address=None, timestamp=None, request_id=None, auth_token=None, overwrite=True, quota_class=None, service_catalog=None, domain=None, user_domain=None, project_domain=None, **kwargs)

Bases: oslo_context.context.RequestContext

Security context and request information.

Represents the user taking a given action within the system.

RequestContext.deepcopy()
RequestContext.elevated(read_deleted=None, overwrite=False)

Return a version of this context with admin flag set.

classmethod RequestContext.from_dict(values)
RequestContext.project_id None
RequestContext.read_deleted None
RequestContext.to_dict()
RequestContext.user_id None
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

APIException.message = u'Error while requesting %(service)s API.'
exception APITimeout(message=None, **kwargs)

Bases: cinder.exception.APIException

APITimeout.message = u'Timeout while requesting %(service)s API.'
exception AdminRequired(message=None, **kwargs)

Bases: cinder.exception.NotAuthorized

AdminRequired.message = u'User does not have admin privileges'
exception BackupDriverException(message=None, **kwargs)

Bases: cinder.exception.CinderException

BackupDriverException.message = u'Backup driver reported an error: %(message)s'
exception BackupFailedToGetVolumeBackend(message=None, **kwargs)

Bases: cinder.exception.NotFound

BackupFailedToGetVolumeBackend.message = u'Failed to identify volume backend.'
exception BackupInvalidCephArgs(message=None, **kwargs)

Bases: cinder.exception.BackupDriverException

BackupInvalidCephArgs.message = u'Invalid Ceph args provided for backup rbd operation'
exception BackupLimitExceeded(message=None, **kwargs)

Bases: cinder.exception.QuotaError

BackupLimitExceeded.message = u'Maximum number of backups allowed (%(allowed)d) exceeded'
exception BackupMetadataUnsupportedVersion(message=None, **kwargs)

Bases: cinder.exception.BackupDriverException

BackupMetadataUnsupportedVersion.message = u'Unsupported backup metadata version requested'
exception BackupNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

BackupNotFound.message = u'Backup %(backup_id)s could not be found.'
exception BackupOperationError(message=None, **kwargs)

Bases: cinder.exception.Invalid

BackupOperationError.message = u'An error has occurred during backup operation'
exception BackupRBDOperationFailed(message=None, **kwargs)

Bases: cinder.exception.BackupDriverException

BackupRBDOperationFailed.message = u'Backup RBD operation failed'
exception BackupVerifyUnsupportedDriver(message=None, **kwargs)

Bases: cinder.exception.BackupDriverException

BackupVerifyUnsupportedDriver.message = u'Unsupported backup verify driver'
exception BrocadeZoningCliException(message=None, **kwargs)

Bases: cinder.exception.CinderException

BrocadeZoningCliException.message = u'Brocade Fibre Channel Zoning CLI error: %(reason)s'
exception BrocadeZoningHttpException(message=None, **kwargs)

Bases: cinder.exception.CinderException

BrocadeZoningHttpException.message = u'Brocade Fibre Channel Zoning HTTP error: %(reason)s'
exception CgSnapshotNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

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

CinderException.code = 500
CinderException.headers = {}
CinderException.message = u'An unknown exception occurred.'
CinderException.safe = False
exception CiscoZoningCliException(message=None, **kwargs)

Bases: cinder.exception.CinderException

CiscoZoningCliException.message = u'Cisco Fibre Channel Zoning CLI error: %(reason)s'
exception CohoException(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

CohoException.message = u'Coho Data Cinder driver failure: %(message)s'
exception ConfigNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

ConfigNotFound.message = u'Could not find config at %(path)s'
exception ConsistencyGroupNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

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

DateraAPIException.message = u'Bad response from Datera API'
exception DeviceUnavailable(message=None, **kwargs)

Bases: cinder.exception.Invalid

DeviceUnavailable.message = u'The device in the path %(path)s is unavailable: %(reason)s'
exception DotHillAuthenticationError(message=None, **kwargs)

Bases: cinder.exception.CinderException

DotHillAuthenticationError.message = u'%(message)s'
exception DotHillConnectionError(message=None, **kwargs)

Bases: cinder.exception.CinderException

DotHillConnectionError.message = u'%(message)s'
exception DotHillInvalidBackend(message=None, **kwargs)

Bases: cinder.exception.CinderException

DotHillInvalidBackend.message = u"Backend doesn't exist (%(backend)s)"
exception DotHillNotEnoughSpace(message=None, **kwargs)

Bases: cinder.exception.CinderException

DotHillNotEnoughSpace.message = u'Not enough space on backend (%(backend)s)'
exception DotHillNotTargetPortal(message=None, **kwargs)

Bases: cinder.exception.CinderException

DotHillNotTargetPortal.message = u'No active iSCSI portals with supplied iSCSI IPs'
exception DotHillRequestError(message=None, **kwargs)

Bases: cinder.exception.CinderException

DotHillRequestError.message = u'%(message)s'
exception DriverNotInitialized(message=None, **kwargs)

Bases: cinder.exception.CinderException

DriverNotInitialized.message = u'Volume driver not ready.'
exception Duplicate(message=None, **kwargs)

Bases: cinder.exception.CinderException

exception DuplicateSfVolumeNames(message=None, **kwargs)

Bases: cinder.exception.Duplicate

DuplicateSfVolumeNames.message = u'Detected more than one volume with name %(vol_name)s'
exception EMCSPUnavailableException(message=None, **kwargs)

Bases: cinder.exception.EMCVnxCLICmdError

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

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

EncryptedBackupOperationFailed.message = u'Backup operation of an encrypted volume failed.'
exception Error

Bases: exceptions.Exception

exception EvaluatorParseException

Bases: exceptions.Exception

EvaluatorParseException.message = u'Error during evaluator parsing: %(reason)s'
exception ExportFailure(message=None, **kwargs)

Bases: cinder.exception.Invalid

ExportFailure.message = u'Failed to export for volume: %(reason)s'
exception ExtendVolumeError(message=None, **kwargs)

Bases: cinder.exception.CinderException

ExtendVolumeError.message = u'Error extending volume: %(reason)s'
exception FCSanLookupServiceException(message=None, **kwargs)

Bases: cinder.exception.CinderException

FCSanLookupServiceException.message = u'Fibre Channel SAN Lookup failure: %(reason)s'
exception FCZoneDriverException(message=None, **kwargs)

Bases: cinder.exception.CinderException

FCZoneDriverException.message = u'Fibre Channel Zone operation failed: %(reason)s'
exception FailedCmdWithDump(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

FailedCmdWithDump.message = u'Operation failed with status=%(status)s. Full dump: %(data)s'
exception FileNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

FileNotFound.message = u'File %(file_path)s could not be found.'
exception GCSApiFailure(message=None, **kwargs)

Bases: cinder.exception.BackupDriverException

GCSApiFailure.message = u'Google Cloud Storage api failure: %(reason)s'
exception GCSConnectionFailure(message=None, **kwargs)

Bases: cinder.exception.BackupDriverException

GCSConnectionFailure.message = u'Google Cloud Storage connection failure: %(reason)s'
exception GCSOAuth2Failure(message=None, **kwargs)

Bases: cinder.exception.BackupDriverException

GCSOAuth2Failure.message = u'Google Cloud Storage oauth2 failure: %(reason)s'
exception GlanceConnectionFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

GlanceConnectionFailed.message = u'Connection to glance failed: %(reason)s'
exception GlanceMetadataExists(message=None, **kwargs)

Bases: cinder.exception.Invalid

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

GlanceMetadataNotFound.message = u'Glance metadata for volume/snapshot %(id)s cannot be found.'
exception GlusterfsException(message=None, **kwargs)

Bases: cinder.exception.RemoteFSException

GlusterfsException.message = u'Unknown Gluster exception'
exception GlusterfsNoSharesMounted(message=None, **kwargs)

Bases: cinder.exception.RemoteFSNoSharesMounted

GlusterfsNoSharesMounted.message = u'No mounted Gluster shares found'
exception GlusterfsNoSuitableShareFound(message=None, **kwargs)

Bases: cinder.exception.RemoteFSNoSuitableShareFound

GlusterfsNoSuitableShareFound.message = u'There is no share which can host %(volume_size)sG'
exception HBSDBusy(message=None, **kwargs)

Bases: cinder.exception.HBSDError

HBSDBusy.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.CinderException

HBSDError.message = u'HBSD error occurs.'
exception HBSDNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

HBSDNotFound.message = u'Storage resource could not be found.'
exception HBSDVolumeIsBusy(message=None, **kwargs)

Bases: cinder.exception.VolumeIsBusy

HBSDVolumeIsBusy.message = u'Volume %(volume_name)s is busy.'
exception HNASConnError(message=None, **kwargs)

Bases: cinder.exception.CinderException

HNASConnError.message = u'%(message)s'
exception HostNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

HostNotFound.message = u'Host %(host)s could not be found.'
exception ISCSITargetAttachFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

ISCSITargetAttachFailed.message = u'Failed to attach iSCSI target for volume %(volume_id)s.'
exception ISCSITargetCreateFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

ISCSITargetCreateFailed.message = u'Failed to create iscsi target for volume %(volume_id)s.'
exception ISCSITargetDetachFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

ISCSITargetDetachFailed.message = u'Failed to detach iSCSI target for volume %(volume_id)s.'
exception ISCSITargetHelperCommandFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

ISCSITargetHelperCommandFailed.message = u'%(error_message)s'
exception ISCSITargetNotFoundForVolume(message=None, **kwargs)

Bases: cinder.exception.NotFound

ISCSITargetNotFoundForVolume.message = u'No target id found for volume %(volume_id)s.'
exception ISCSITargetRemoveFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

ISCSITargetRemoveFailed.message = u'Failed to remove iscsi target for volume %(volume_id)s.'
exception ImageCopyFailure(message=None, **kwargs)

Bases: cinder.exception.Invalid

ImageCopyFailure.message = u'Failed to copy image to volume: %(reason)s'
exception ImageLimitExceeded(message=None, **kwargs)

Bases: cinder.exception.QuotaError

ImageLimitExceeded.message = u'Image quota exceeded'
exception ImageNotAuthorized(message=None, **kwargs)

Bases: cinder.exception.CinderException

ImageNotAuthorized.message = u'Not authorized for image %(image_id)s.'
exception ImageNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

ImageNotFound.message = u'Image %(image_id)s could not be found.'
exception ImageUnacceptable(message=None, **kwargs)

Bases: cinder.exception.Invalid

ImageUnacceptable.message = u'Image %(image_id)s is unacceptable: %(reason)s'
exception InfortrendCliException(message=None, **kwargs)

Bases: cinder.exception.CinderException

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

Invalid.code = 400
Invalid.message = u'Unacceptable parameters.'
exception Invalid3PARDomain(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

Invalid3PARDomain.message = u'Invalid 3PAR Domain: %(err)s'
exception InvalidAPIVersionString(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidAPIVersionString.message = u'API Version String %(version)s is of invalid format. Must be of format MajorNum.MinorNum.'
exception InvalidAuthKey(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidAuthKey.message = u'Invalid auth key: %(reason)s'
exception InvalidBackup(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidBackup.message = u'Invalid backup: %(reason)s'
exception InvalidCgSnapshot(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidCgSnapshot.message = u'Invalid CgSnapshot: %(reason)s'
exception InvalidConfigurationValue(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidConfigurationValue.message = u'Value "%(value)s" is not valid for configuration option "%(option)s"'
exception InvalidConnectorException(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

InvalidConnectorException.message = u"Connector doesn't have required information: %(missing)s"
exception InvalidConsistencyGroup(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidConsistencyGroup.message = u'Invalid ConsistencyGroup: %(reason)s'
exception InvalidContentType(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidContentType.message = u'Invalid content type %(content_type)s.'
exception InvalidGlobalAPIVersion(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidGlobalAPIVersion.message = u'Version %(req_ver)s is not supported by the API. Minimum is %(min_ver)s and maximum is %(max_ver)s.'
exception InvalidHost(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidHost.message = u'Invalid host: %(reason)s'
exception InvalidImageRef(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidImageRef.message = u'Invalid image href %(image_href)s.'
exception InvalidInput(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidInput.message = u'Invalid input received: %(reason)s'
exception InvalidMetadataType(message=None, **kwargs)

Bases: cinder.exception.Invalid

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

InvalidNestedQuotaSetup.message = u'Project quotas are not properly setup for nested quotas: %(reason)s.'
exception InvalidParameterValue(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidParameterValue.message = u'%(err)s'
exception InvalidQoSSpecs(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidQoSSpecs.message = u'Invalid qos specs: %(reason)s'
exception InvalidQuotaValue(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidQuotaValue.message = u'Change would make usage less than 0 for the following resources: %(unders)s'
exception InvalidReplicationTarget(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidReplicationTarget.message = u'Invalid Replication Target: %(reason)s'
exception InvalidReservationExpiration(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidReservationExpiration.message = u'Invalid reservation expiration %(expire)s.'
exception InvalidResults(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidResults.message = u'The results are invalid.'
exception InvalidSnapshot(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidSnapshot.message = u'Invalid snapshot: %(reason)s'
exception InvalidUUID(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidUUID.message = u'Expected a uuid but received %(uuid)s.'
exception InvalidVolume(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidVolume.message = u'Invalid volume: %(reason)s'
exception InvalidVolumeAttachMode(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidVolumeAttachMode.message = u"Invalid attaching mode '%(mode)s' for volume %(volume_id)s."
exception InvalidVolumeMetadata(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidVolumeMetadata.message = u'Invalid metadata: %(reason)s'
exception InvalidVolumeMetadataSize(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidVolumeMetadataSize.message = u'Invalid metadata size: %(reason)s'
exception InvalidVolumeType(message=None, **kwargs)

Bases: cinder.exception.Invalid

InvalidVolumeType.message = u'Invalid volume type: %(reason)s'
exception KeyManagerError(message=None, **kwargs)

Bases: cinder.exception.CinderException

KeyManagerError.message = u'key manager error: %(reason)s'
exception LockCreationFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

LockCreationFailed.message = u'Unable to create lock. Coordination backend not started.'
exception LockingFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

LockingFailed.message = u'Lock acquisition failed.'
exception MalformedRequestBody(message=None, **kwargs)

Bases: cinder.exception.CinderException

MalformedRequestBody.message = u'Malformed message body: %(reason)s'
exception MalformedResponse(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

MalformedResponse.message = u'Malformed response to command %(cmd)s: %(reason)s'
exception ManageExistingAlreadyManaged(message=None, **kwargs)

Bases: cinder.exception.CinderException

ManageExistingAlreadyManaged.message = u'Unable to manage existing volume. Volume %(volume_ref)s already managed.'
exception ManageExistingInvalidReference(message=None, **kwargs)

Bases: cinder.exception.CinderException

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

ManageExistingVolumeTypeMismatch.message = u'Manage existing volume failed due to volume type mismatch: %(reason)s'
exception MessageNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

MessageNotFound.message = u'Message %(message_id)s could not be found.'
exception MetadataAbsent(message=None, **kwargs)

Bases: cinder.exception.CinderException

MetadataAbsent.message = u'There is no metadata in DB object.'
exception MetadataCopyFailure(message=None, **kwargs)

Bases: cinder.exception.Invalid

MetadataCopyFailure.message = u'Failed to copy metadata to volume: %(reason)s'
exception MetadataCreateFailure(message=None, **kwargs)

Bases: cinder.exception.Invalid

MetadataCreateFailure.message = u'Failed to create metadata for volume: %(reason)s'
exception MetadataUpdateFailure(message=None, **kwargs)

Bases: cinder.exception.Invalid

MetadataUpdateFailure.message = u'Failed to update metadata for volume: %(reason)s'
exception NetAppDriverException(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

NetAppDriverException.message = u'NetApp Cinder Driver exception.'
exception NexentaException(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

NexentaException.message = u'%(message)s'
exception NfsException(message=None, **kwargs)

Bases: cinder.exception.RemoteFSException

NfsException.message = u'Unknown NFS exception'
exception NfsNoSharesMounted(message=None, **kwargs)

Bases: cinder.exception.RemoteFSNoSharesMounted

NfsNoSharesMounted.message = u'No mounted NFS shares found'
exception NfsNoSuitableShareFound(message=None, **kwargs)

Bases: cinder.exception.RemoteFSNoSuitableShareFound

NfsNoSuitableShareFound.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 NoValidHost(message=None, **kwargs)

Bases: cinder.exception.CinderException

NoValidHost.message = u'No valid host was found. %(reason)s'
exception NotAuthorized(message=None, **kwargs)

Bases: cinder.exception.CinderException

NotAuthorized.code = 403
NotAuthorized.message = u'Not authorized.'
exception NotFound(message=None, **kwargs)

Bases: cinder.exception.CinderException

NotFound.code = 404
NotFound.message = u'Resource could not be found.'
NotFound.safe = True
exception NotSupportedOperation(message=None, **kwargs)

Bases: cinder.exception.Invalid

NotSupportedOperation.code = 405
NotSupportedOperation.message = u'Operation not supported: %(operation)s.'
exception OverQuota(message=None, **kwargs)

Bases: cinder.exception.CinderException

OverQuota.message = u'Quota exceeded for resources: %(overs)s'
exception ParameterNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

ParameterNotFound.message = u'Could not find parameter %(param)s'
exception PasteAppNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

PasteAppNotFound.message = u"Could not load paste app '%(name)s' from %(path)s"
exception PolicyNotAuthorized(message=None, **kwargs)

Bases: cinder.exception.NotAuthorized

PolicyNotAuthorized.message = u"Policy doesn't allow %(action)s to be performed."
exception ProjectQuotaNotFound(message=None, **kwargs)

Bases: cinder.exception.QuotaNotFound

ProjectQuotaNotFound.message = u'Quota for project %(project_id)s could not be found.'
exception PureDriverException(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

PureDriverException.message = u'Pure Storage Cinder driver failure: %(reason)s'
exception QoSSpecsAssociateFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

QoSSpecsAssociateFailed.message = u'Failed to associate qos_specs: %(specs_id)s with type %(type_id)s.'
exception QoSSpecsCreateFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

QoSSpecsCreateFailed.message = u'Failed to create qos_specs: %(name)s with specs %(qos_specs)s.'
exception QoSSpecsDisassociateFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

QoSSpecsDisassociateFailed.message = u'Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s.'
exception QoSSpecsExists(message=None, **kwargs)

Bases: cinder.exception.Duplicate

QoSSpecsExists.message = u'QoS Specs %(specs_id)s already exists.'
exception QoSSpecsInUse(message=None, **kwargs)

Bases: cinder.exception.CinderException

QoSSpecsInUse.message = u'QoS Specs %(specs_id)s is still associated with entities.'
exception QoSSpecsKeyNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

QoSSpecsKeyNotFound.message = u'QoS spec %(specs_id)s has no spec with key %(specs_key)s.'
exception QoSSpecsNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

QoSSpecsNotFound.message = u'No such QoS spec %(specs_id)s.'
exception QoSSpecsUpdateFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

QoSSpecsUpdateFailed.message = u'Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s.'
exception QuotaClassNotFound(message=None, **kwargs)

Bases: cinder.exception.QuotaNotFound

QuotaClassNotFound.message = u'Quota class %(class_name)s could not be found.'
exception QuotaError(message=None, **kwargs)

Bases: cinder.exception.CinderException

QuotaError.code = 413
QuotaError.headers = {'Retry-After': '0'}
QuotaError.message = u'Quota exceeded: code=%(code)s'
QuotaError.safe = True
exception QuotaNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

QuotaNotFound.message = u'Quota could not be found'
exception QuotaResourceUnknown(message=None, **kwargs)

Bases: cinder.exception.QuotaNotFound

QuotaResourceUnknown.message = u'Unknown quota resources %(unknown)s.'
exception QuotaUsageNotFound(message=None, **kwargs)

Bases: cinder.exception.QuotaNotFound

QuotaUsageNotFound.message = u'Quota usage for project %(project_id)s could not be found.'
exception RPCTimeout(message=None, **kwargs)

Bases: cinder.exception.CinderException

RPCTimeout.code = 502
RPCTimeout.message = u'Timeout while requesting capabilities from backend %(service)s.'
exception RemoteFSConcurrentRequest(message=None, **kwargs)

Bases: cinder.exception.RemoteFSException

RemoteFSConcurrentRequest.message = u'A concurrent, possibly contradictory, request has been made.'
exception RemoteFSException(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

RemoteFSException.message = u'Unknown RemoteFS exception'
exception RemoteFSNoSharesMounted(message=None, **kwargs)

Bases: cinder.exception.RemoteFSException

RemoteFSNoSharesMounted.message = u'No mounted shares found'
exception RemoteFSNoSuitableShareFound(message=None, **kwargs)

Bases: cinder.exception.RemoteFSException

RemoteFSNoSuitableShareFound.message = u'There is no share which can host %(volume_size)sG'
exception RemoveExportException(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

RemoveExportException.message = u'Failed to remove export for volume %(volume)s: %(reason)s'
exception ReplicationError(message=None, **kwargs)

Bases: cinder.exception.CinderException

ReplicationError.message = u'Volume %(volume_id)s replication error: %(reason)s'
exception ReplicationNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

ReplicationNotFound.message = u'Volume replication for %(volume_id)s could not be found.'
exception ReservationNotFound(message=None, **kwargs)

Bases: cinder.exception.QuotaNotFound

ReservationNotFound.message = u'Quota reservation %(uuid)s could not be found.'
exception SSHInjectionThreat(message=None, **kwargs)

Bases: cinder.exception.CinderException

SSHInjectionThreat.message = u'SSH command injection detected: %(command)s'
exception SchedulerHostFilterNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

SchedulerHostFilterNotFound.message = u'Scheduler Host Filter %(filter_name)s could not be found.'
exception SchedulerHostWeigherNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

SchedulerHostWeigherNotFound.message = u'Scheduler Host Weigher %(weigher_name)s could not be found.'
exception ServerNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

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

ServiceTooOld.message = u'Service is too old to fulfil this request.'
exception ServiceUnavailable(message=None, **kwargs)

Bases: cinder.exception.Invalid

ServiceUnavailable.message = u'Service is unavailable at this time.'
exception SheepdogCmdError(message=None, **kwargs)

Bases: cinder.exception.SheepdogError

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

SheepdogError.message = u'An error has occured in SheepdogDriver. (Reason: %(reason)s)'
exception SmbfsException(message=None, **kwargs)

Bases: cinder.exception.RemoteFSException

SmbfsException.message = u'Unknown SMBFS exception.'
exception SmbfsNoSharesMounted(message=None, **kwargs)

Bases: cinder.exception.RemoteFSNoSharesMounted

SmbfsNoSharesMounted.message = u'No mounted SMBFS shares found.'
exception SmbfsNoSuitableShareFound(message=None, **kwargs)

Bases: cinder.exception.RemoteFSNoSuitableShareFound

SmbfsNoSuitableShareFound.message = u'There is no share which can host %(volume_size)sG.'
exception SnapshotIsBusy(message=None, **kwargs)

Bases: cinder.exception.CinderException

SnapshotIsBusy.message = u'deleting snapshot %(snapshot_name)s that has dependent volumes'
exception SnapshotLimitExceeded(message=None, **kwargs)

Bases: cinder.exception.QuotaError

SnapshotLimitExceeded.message = u'Maximum number of snapshots allowed (%(allowed)d) exceeded'
exception SnapshotMetadataNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

SnapshotMetadataNotFound.message = u'Snapshot %(snapshot_id)s has no metadata with key %(metadata_key)s.'
exception SnapshotNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

SnapshotNotFound.message = u'Snapshot %(snapshot_id)s could not be found.'
exception SnapshotUnavailable(message=None, **kwargs)

Bases: cinder.exception.VolumeBackendAPIException

SnapshotUnavailable.message = u'The snapshot is unavailable: %(data)s'
exception SolidFireAPIDataException(message=None, **kwargs)

Bases: cinder.exception.SolidFireAPIException

SolidFireAPIDataException.message = u'Error in SolidFire API response: data=%(data)s'
exception SolidFireAPIException(message=None, **kwargs)

Bases: cinder.exception.VolumeBackendAPIException

SolidFireAPIException.message = u'Bad response from SolidFire API'
exception SolidFireAccountNotFound(message=None, **kwargs)

Bases: cinder.exception.SolidFireDriverException

SolidFireAccountNotFound.message = u'Unable to locate account %(account_name)s on Solidfire device'
exception SolidFireDriverException(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

SolidFireDriverException.message = u'SolidFire Cinder Driver exception'
exception SolidFireRetryableException(message=None, **kwargs)

Bases: cinder.exception.VolumeBackendAPIException

SolidFireRetryableException.message = u'Retryable SolidFire Exception encountered'
exception SwiftConnectionFailed(message=None, **kwargs)

Bases: cinder.exception.BackupDriverException

SwiftConnectionFailed.message = u'Connection to swift failed: %(reason)s'
exception TegileAPIException(message=None, **kwargs)

Bases: cinder.exception.VolumeBackendAPIException

TegileAPIException.message = u'Unexpected response from Tegile IntelliFlash API'
exception TransferNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

TransferNotFound.message = u'Transfer %(transfer_id)s could not be found.'
exception UnableToFailOver(message=None, **kwargs)

Bases: cinder.exception.CinderException

UnableToFailOver.message = u'Unable to failover to replication target:%(reason)s).'
exception UnknownCmd(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

UnknownCmd.message = u'Unknown or unsupported command %(cmd)s'
exception VersionNotFoundForAPIMethod(message=None, **kwargs)

Bases: cinder.exception.Invalid

VersionNotFoundForAPIMethod.message = u'API version %(version)s is not supported on this method.'
exception ViolinBackendErr(message=None, **kwargs)

Bases: cinder.exception.CinderException

ViolinBackendErr.message = u'Backend reports: %(message)s'
exception ViolinBackendErrExists(message=None, **kwargs)

Bases: cinder.exception.CinderException

ViolinBackendErrExists.message = u'Backend reports: item already exists'
exception ViolinBackendErrNotFound(message=None, **kwargs)

Bases: cinder.exception.CinderException

ViolinBackendErrNotFound.message = u'Backend reports: item not found'
exception ViolinInvalidBackendConfig(message=None, **kwargs)

Bases: cinder.exception.CinderException

ViolinInvalidBackendConfig.message = u'Volume backend config is invalid: %(reason)s'
exception ViolinRequestRetryTimeout(message=None, **kwargs)

Bases: cinder.exception.CinderException

ViolinRequestRetryTimeout.message = u'Backend service retry timeout hit: %(timeout)s sec'
exception VolumeAdminMetadataNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

VolumeAdminMetadataNotFound.message = u'Volume %(volume_id)s has no administration metadata with key %(metadata_key)s.'
exception VolumeAttached(message=None, **kwargs)

Bases: cinder.exception.Invalid

VolumeAttached.message = u'Volume %(volume_id)s is still attached, detach volume first.'
exception VolumeAttachmentNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

VolumeAttachmentNotFound.message = u'Volume attachment could not be found with filter: %(filter)s .'
exception VolumeBackendAPIException(message=None, **kwargs)

Bases: cinder.exception.CinderException

VolumeBackendAPIException.message = u'Bad or unexpected response from the storage volume backend API: %(data)s'
exception VolumeBackupSizeExceedsAvailableQuota(message=None, **kwargs)

Bases: cinder.exception.QuotaError

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

VolumeDeviceNotFound.message = u'Volume device not found at %(device)s.'
exception VolumeDriverException(message=None, **kwargs)

Bases: cinder.exception.CinderException

VolumeDriverException.message = u'Volume driver reported an error: %(message)s'
exception VolumeGroupCreationFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

VolumeGroupCreationFailed.message = u'Failed to create Volume Group: %(vg_name)s'
exception VolumeGroupNotFound(message=None, **kwargs)

Bases: cinder.exception.CinderException

VolumeGroupNotFound.message = u'Unable to find Volume Group: %(vg_name)s'
exception VolumeIsBusy(message=None, **kwargs)

Bases: cinder.exception.CinderException

VolumeIsBusy.message = u'deleting volume %(volume_name)s that has snapshot'
exception VolumeLimitExceeded(message=None, **kwargs)

Bases: cinder.exception.QuotaError

VolumeLimitExceeded.message = u"Maximum number of volumes allowed (%(allowed)d) exceeded for quota '%(name)s'."
exception VolumeMetadataBackupExists(message=None, **kwargs)

Bases: cinder.exception.BackupDriverException

VolumeMetadataBackupExists.message = u'Metadata backup already exists for this volume'
exception VolumeMetadataNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

VolumeMetadataNotFound.message = u'Volume %(volume_id)s has no metadata with key %(metadata_key)s.'
exception VolumeMigrationFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

VolumeMigrationFailed.message = u'Volume migration failed: %(reason)s'
exception VolumeNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

VolumeNotFound.message = u'Volume %(volume_id)s could not be found.'
exception VolumeSizeExceedsAvailableQuota(message=None, **kwargs)

Bases: cinder.exception.QuotaError

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

VolumeSizeExceedsLimit.message = u'Requested volume size %(size)d is larger than maximum allowed limit %(limit)d.'
exception VolumeTypeAccessExists(message=None, **kwargs)

Bases: cinder.exception.Duplicate

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

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

VolumeTypeCreateFailed.message = u'Cannot create volume_type with name %(name)s and specs %(extra_specs)s'
exception VolumeTypeEncryptionExists(message=None, **kwargs)

Bases: cinder.exception.Invalid

VolumeTypeEncryptionExists.message = u'Volume type encryption for type %(type_id)s already exists.'
exception VolumeTypeEncryptionNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

VolumeTypeEncryptionNotFound.message = u'Volume type encryption for type %(type_id)s does not exist.'
exception VolumeTypeExists(message=None, **kwargs)

Bases: cinder.exception.Duplicate

VolumeTypeExists.message = u'Volume Type %(id)s already exists.'
exception VolumeTypeExtraSpecsNotFound(message=None, **kwargs)

Bases: cinder.exception.NotFound

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

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

VolumeTypeNotFound.message = u'Volume type %(volume_type_id)s could not be found.'
exception VolumeTypeNotFoundByName(message=None, **kwargs)

Bases: cinder.exception.VolumeTypeNotFound

VolumeTypeNotFoundByName.message = u'Volume type with name %(volume_type_name)s could not be found.'
exception VolumeTypeUpdateFailed(message=None, **kwargs)

Bases: cinder.exception.CinderException

VolumeTypeUpdateFailed.message = u'Cannot update volume_type %(id)s'
exception VzStorageException(message=None, **kwargs)

Bases: cinder.exception.RemoteFSException

VzStorageException.message = u'Unknown Virtuozzo Storage exception'
exception VzStorageNoSharesMounted(message=None, **kwargs)

Bases: cinder.exception.RemoteFSNoSharesMounted

VzStorageNoSharesMounted.message = u'No mounted Virtuozzo Storage shares found'
exception VzStorageNoSuitableShareFound(message=None, **kwargs)

Bases: cinder.exception.RemoteFSNoSuitableShareFound

VzStorageNoSuitableShareFound.message = u'There is no share which can host %(volume_size)sG'
exception WebDAVClientError(message=None, **kwargs)

Bases: cinder.exception.CinderException

WebDAVClientError.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 XIODriverException(message=None, **kwargs)

Bases: cinder.exception.VolumeDriverException

XIODriverException.message = u'X-IO Volume Driver exception!'
exception XtremIOAlreadyMappedError(message=None, **kwargs)

Bases: cinder.exception.CinderException

XtremIOAlreadyMappedError.message = u'Volume to Initiator Group mapping already exists'
exception XtremIOArrayBusy(message=None, **kwargs)

Bases: cinder.exception.CinderException

XtremIOArrayBusy.message = u'System is busy, retry operation.'
exception XtremIOSnapshotsLimitExceeded(message=None, **kwargs)

Bases: cinder.exception.CinderException

XtremIOSnapshotsLimitExceeded.message = u'Exceeded the limit of snapshots per volume'
exception ZoneManagerException(message=None, **kwargs)

Bases: cinder.exception.CinderException

ZoneManagerException.message = u'Fibre Channel connection control failure: %(reason)s'

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

RequestContextSerializer.deserialize_context(context)
RequestContextSerializer.deserialize_entity(context, entity)
RequestContextSerializer.serialize_context(context)
RequestContextSerializer.serialize_entity(context, entity)
get_client(target, version_cap=None, serializer=None)
get_server(target, endpoints, serializer=None)
get_notifier(service=None, host=None, publisher_id=None)

The cinder.test Module

The cinder.utils Module

Utilities and helper functions.

class ComparableMixin

Bases: object

class ProtectedExpatParser(forbid_dtd=True, forbid_entities=True, *args, **kwargs)

Bases: xml.sax.expatreader.ExpatParser

An expat parser which disables DTD’s and entities by default.

ProtectedExpatParser.entity_decl(entityName, is_parameter_entity, value, base, systemId, publicId, notationName)
ProtectedExpatParser.reset()
ProtectedExpatParser.start_doctype_decl(name, sysid, pubid, has_internal_subset)
ProtectedExpatParser.unparsed_entity_decl(name, base, sysid, pubid, notation_name)
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_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.
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)

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.
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_ssh_injection(cmd_list)
check_string_length(value, name, min_length=0, max_length=None)

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()
is_blk_device(dev)
is_none_string(val)

Check if a string represents a None value.

is_valid_boolstr(val)

Check if the provided string is a valid bool string or not.

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.
list_of_dicts_to_dict(seq, key)

Convert list of dicts to an indexed dict.

Takes a list of dicts, and converts it to a nested dict indexed by <key>

Parameters:seq – list of dicts
Parm key:key in dicts to index by
example:
lst = [{‘id’: 1, ...}, {‘id’: 2, ...}...] key = ‘id’ returns {1:{‘id’: 1, ...}, 2:{‘id’:2, ...}
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
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.
safe_minidom_parse_string(xml_string)

Parse an XML string using minidom safely.

sanitize_hostname(hostname)

Return a hostname which conforms to RFC-952 and RFC-1123 specs.

service_is_up(service)

Check whether a service is up based on last heartbeat.

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_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 declare_conf Module

The conf_fixture Module

set_defaults(conf)

The test_rpc Module

The runtime_conf Module