Change in vdsm[master]: make vdsm/storage/storage_exception.py PEP 8 clean
zhshzhou at linux.vnet.ibm.com
zhshzhou at linux.vnet.ibm.com
Mon Sep 24 07:30:57 UTC 2012
Hello Changming Bai,
I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/8147
to review the following change.
Change subject: make vdsm/storage/storage_exception.py PEP 8 clean
......................................................................
make vdsm/storage/storage_exception.py PEP 8 clean
Change-Id: I2b46a76330363ab3882af2380e2786562cf0e164
Signed-off-by: Changming Bai <baichm at linux.vnet.ibm.com>
---
M Makefile.am
M vdsm/storage/storage_exception.py
2 files changed, 358 insertions(+), 27 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/47/8147/1
diff --git a/Makefile.am b/Makefile.am
index 932f83b..69aac61 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -90,6 +90,7 @@
vdsm/storage/resourceFactories.py \
vdsm/storage/sd.py \
vdsm/storage/securable.py \
+ vdsm/storage/storage_exception.py \
vdsm/storage/task.py \
vdsm/storage/taskManager.py \
vdsm/storage/volume.py \
diff --git a/vdsm/storage/storage_exception.py b/vdsm/storage/storage_exception.py
index f1edad4..d7d7bc9 100644
--- a/vdsm/storage/storage_exception.py
+++ b/vdsm/storage/storage_exception.py
@@ -36,8 +36,9 @@
GENERAL_EXCEPTION = lambda e: (100, str(e))
ERROR_MAP = {
- SecureError : SPM_STATUS_ERROR
+ SecureError: SPM_STATUS_ERROR
}
+
def generateResponse(error, default=GENERAL_EXCEPTION):
resp = ERROR_MAP.get(type(error), default)
@@ -46,17 +47,22 @@
code, msg = resp
- return { 'status': {'code': code, 'message': msg} }
+ return {'status': {'code': code, 'message': msg}}
+
class GeneralException(Exception):
code = 100
message = "General Exception"
+
def __init__(self, *value):
self.value = value
+
def __str__(self):
return "%s: %s" % (self.message, repr(self.value))
+
def response(self):
- return { 'status': {'code': self.code, 'message': str(self)} }
+ return {'status': {'code': self.code, 'message': str(self)}}
+
#################################################
# Validation Exceptions
@@ -65,12 +71,15 @@
class InvalidParameterException(GeneralException):
code = 1000
message = "Invalid parameter"
+
def __init__(self, name, value):
self.value = "%s=%s" % (name, value)
+
class InvalidDefaultExceptionException(GeneralException):
code = 1001
message = "Cannot set exception as default, type not supported"
+
#################################################
# General Storage Exceptions
@@ -80,15 +89,20 @@
code = 200
message = "General Storage Exception"
+
class ResourceException(GeneralException):
code = 3000
+
def __init__(self, UUID):
self.value = UUID
+
def __str__(self):
return "%s, UUID: %s" % (self.message, repr(self.value))
+
class VolumeGeneralException(GeneralException):
code = 4000
+
def __init__(self, volume, *args):
try:
sdUUID = "sdUUID: %s" % volume.sdUUID
@@ -101,9 +115,11 @@
if len(args):
self.value += list(args)
+
class UnicodeArgumentException(GeneralException):
code = 4900
message = "Unicode arguments are not supported"
+
#################################################
# Misc Exceptions
@@ -113,13 +129,16 @@
code = 2000
message = "Method not implemented"
+
class MiscFileReadException(StorageException):
code = 2001
message = "Internal file read failure"
+
class MiscFileWriteException(StorageException):
code = 2002
message = "Internal file write failure"
+
class MiscBlockReadException(StorageException):
def __init__(self, name, offset, size):
@@ -127,94 +146,117 @@
code = 2003
message = "Internal block device read failure"
+
class MiscBlockWriteException(StorageException):
def __init__(self, name, offset, size):
self.value = "name=%s, offset=%s, size=%s" % (name, offset, size)
code = 2004
message = "Internal block device write failure"
+
class OperationInProgress(StorageException):
code = 2005
message = "Operation is already in progress"
+
class MiscBlockWriteIncomplete(MiscBlockWriteException):
code = 2006
message = "Internal block device write incomplete"
+
class MiscBlockReadIncomplete(MiscBlockReadException):
code = 2007
message = "Internal block device read incomplete"
+
class MiscDirCleanupFailure(StorageException):
code = 2008
message = "Directory cleanup failure"
+
#################################################
# Volumes Exceptions
#################################################
+
class VolumeDoesNotExist(StorageException):
code = 201
message = "Volume does not exist"
+
class IncorrectFormat(StorageException):
code = 202
message = "Incorrect Volume format"
+
class VolumeIsBusy(VolumeGeneralException):
code = 203
message = "Volume is busy"
+
class VolumeImageHasChildren(VolumeGeneralException):
code = 204
message = "Cannot delete volume which has children (non-ethical)"
+
class VolumeCreationError(StorageException):
code = 205
message = "Error creating a new volume"
+
class VolumeExtendingError(StorageException):
code = 206
message = "Error extending volume"
+
class VolumeMetadataReadError(StorageException):
code = 207
message = "Error while processing volume meta data"
+
class VolumeMetadataWriteError(StorageException):
code = 208
message = "Error while updating volume meta data"
+
class VolumeAccessError(StorageException):
code = 209
message = "Error accessing a volume"
+
class VolumeUnlinkError(StorageException):
code = 210
message = "Volume unlink failed"
+
class OrphanVolumeError(StorageException):
code = 211
message = "Orphan volume, volume hasn't image"
+
class VolumeAlreadyExists(StorageException):
code = 212
message = "Volume already exists"
+
class VolumeNonWritable(VolumeGeneralException):
code = 213
message = "Volume cannot be access to writes"
+
class VolumeNonShareable(VolumeGeneralException):
code = 214
message = "Volume cannot be shared, it's not Shared/Template volume"
+
class VolumeOwnershipError(VolumeGeneralException):
code = 215
message = "Volume ownership error"
+
class VolumeCannotGetParent(StorageException):
code = 216
message = "Cannot get parent volume"
+
class CannotCloneVolume(VolumeGeneralException):
def __init__(self, src, dst, msg):
@@ -222,90 +264,112 @@
code = 217
message = "Cannot clone volume"
+
class CannotShareVolume(VolumeGeneralException):
def __init__(self, src, dst, msg):
self.value = "src=%s, dst=%s: %s" % (src, dst, msg)
code = 218
message = "Cannot share volume"
+
class SharedVolumeNonWritable(VolumeGeneralException):
code = 219
message = "Shared volume is read only"
+
class InternalVolumeNonWritable(VolumeGeneralException):
code = 220
message = "Volume cannot be access to writes, it's Internal volume"
+
class CannotModifyVolumeTime(VolumeGeneralException):
code = 221
message = "Cannot change volume's modify time"
+
class CannotDeleteVolume(StorageException):
code = 222
message = "Volume deletion error"
+
class CannotDeleteSharedVolume(StorageException):
code = 223
message = "Shared Volume cannot be deleted"
+
class NonLeafVolumeNotWritable(VolumeGeneralException):
code = 224
message = "Volume cannot be accessed to writes, it's not a leaf volume"
+
class VolumeCopyError(VolumeGeneralException):
code = 225
message = "Volume copy failed"
+
class createIllegalVolumeSnapshotError(StorageException):
code = 226
message = "Cannot create volume snapshot from illegal volume"
+
class prepareIllegalVolumeError(StorageException):
code = 227
message = "Cannot prepare illegal volume"
+
class createVolumeRollbackError(StorageException):
code = 228
message = "Failure create volume rollback"
+
class createVolumeSizeError(StorageException):
code = 229
message = "Requested size is too small. Must be larger or equal to 1"
+
class VolumeWasNotPreparedBeforeTeardown(StorageException):
code = 230
message = "Volume was not prepared before being torn down"
+
class IncorrectType(StorageException):
code = 231
message = "Incorrect Volume Preallocate Type"
+
#################################################
# Images Exceptions
#################################################
+
class ImagesActionError(StorageException):
code = 250
message = "Error images action"
+
class TemplateCreationError(StorageException):
code = 251
message = "Error creating template from VM"
+
class MergeSnapshotsError(StorageException):
code = 252
message = "Error merging snapshots"
+
class MoveImageError(StorageException):
code = 253
message = "Error moving image"
+
class ImagePathError(StorageException):
code = 254
message = "Image path does not exist or cannot be accessed/created"
+
class ImageValidationError(StorageException):
code = 255
message = "Image validation error"
+
class ImageDeleteError(StorageException):
code = 256
@@ -319,39 +383,48 @@
# code = 257
# message = "Image is not empty"
+
class ImageIsEmpty_deprecated_vdsm23(StorageException):
def __init__(self, imgUUID, sdUUID):
self.value = "image=%s, domain=%s" % (imgUUID, sdUUID)
code = 258
message = "Image is empty. Deprecated in vdsm2.3"
+
class SourceImageActionError(StorageException):
- def __init__(self, imgUUID, sdUUID, msg = ""):
+ def __init__(self, imgUUID, sdUUID, msg=""):
self.value = "image=%s, source domain=%s: %s" % (imgUUID, sdUUID, msg)
code = 259
message = "Error during source image manipulation"
+
class DestImageActionError(StorageException):
- def __init__(self, imgUUID, sdUUID, msg = ""):
- self.value = "image=%s, dest domain=%s: msg=%s" % (imgUUID, sdUUID, msg)
+ def __init__(self, imgUUID, sdUUID, msg=""):
+ self.value = ("image=%s, dest domain=%s:"
+ "msg=%s" % (imgUUID, sdUUID, msg))
code = 260
message = "Error during destination image manipulation"
+
class CopyImageError(StorageException):
code = 261
message = "low level Image copy failed"
+
class ImageIsNotLegalChain(StorageException):
code = 262
message = "Image is not a legal chain"
+
class CouldNotValideTemplateOnTargetDomain(StorageException):
code = 263
message = "Cannot validate template on target domain"
+
class MultipleMoveImageError(StorageException):
code = 264
message = "Error moving multiple image"
+
class OverwriteImageError(StorageException):
def __init__(self, imgUUID, sdUUID):
@@ -359,13 +432,16 @@
code = 265
message = "Can't overwrite image"
+
class MoveTemplateImageError(StorageException):
code = 266
message = "Cannot move template's image because it is used by a VM"
+
class MergeVolumeRollbackError(StorageException):
code = 267
message = "Cannot rollback merge volume"
+
class ImageDoesNotExistInSD(StorageException):
def __init__(self, imgUUID, sdUUID):
@@ -373,24 +449,30 @@
code = 268
message = "Image does not exist in domain"
+
#################################################
# Pool Exceptions
#################################################
+
class StoragePoolActionError(StorageException):
code = 300
message = "Error storage pool action"
+
class StoragePoolCreationError(StorageException):
code = 301
message = "Error creating a storage pool"
+
class StoragePoolConnectionError(StorageException):
code = 302
message = "Error storage pool connection"
+
class StoragePoolDisconnectionError(StorageException):
code = 303
message = "Error storage pool disconnection"
+
class StoragePoolMasterNotFound(StorageException):
def __init__(self, spUUID, msdUUID=None):
@@ -398,33 +480,41 @@
code = 304
message = "Cannot find master domain"
+
class StorageUpdateVmError(StorageException):
code = 305
message = "Cannot update VM"
+
class ReconstructMasterError(StorageException):
code = 306
message = "Cannot reconstruct master domain"
+
class StoragePoolTooManyMasters(StorageException):
code = 307
message = "Too many masters for StoragePool"
+
class StoragePoolDestroyingError(StorageException):
code = 308
message = "Error destroying a storage pool"
+
class StoragePoolUnknown(StorageException):
code = 309
message = "Unknown pool id, pool not connected"
+
class StoragePoolHasPotentialMaster(StorageException):
code = 310
message = "Master role should be moved to another domain"
+
class StoragePoolInternalError(StorageException):
code = 311
message = "Storage pool not defined"
+
class ImageMissingFromVm(StorageException):
def __init__(self, imgUUID, vmUUID):
@@ -432,37 +522,46 @@
code = 312
message = "Image missing from VM"
+
class StoragePoolNotConnected(StorageException):
code = 313
message = "Storage pool not connected"
+
class GetIsoListError(StorageException):
code = 314
message = "Cannot get ISO list"
+
class GetFloppyListError(StorageException):
code = 315
message = "Cannot get floppy list"
+
class StoragePoolAlreadyExists(StorageException):
code = 316
message = "Error creating a storage pool - pool already exists"
+
class IsoCannotBeMasterDomain(StorageException):
code = 317
message = "ISO domain cannot be a master storage domain"
+
class StoragePoolCheckError(StorageException):
code = 318
message = "Pool check failed"
+
class BackupCannotBeMasterDomain(StorageException):
code = 319
message = "Backup domain cannot be a master storage domain"
+
class MissingOvfFileFromVM(StorageException):
code = 320
message = "Missing OVF file from VM"
+
class ImageNotOnTargetDomain(StorageException):
def __init__(self, imgUUID, vmUUID, sdUUID):
@@ -470,13 +569,16 @@
code = 321
message = "Image cannot be found on the specified domain"
+
class VMPathNotExists(StorageException):
code = 322
message = "Cannot found VMs directory"
+
class CannotConnectMultiplePools(StorageException):
code = 323
message = "Cannot connect pool, already connected to another pool"
+
class StoragePoolWrongMaster(StorageException):
def __init__(self, spUUID, sdUUID):
@@ -484,44 +586,55 @@
code = 324
message = "Wrong Master domain or its version"
+
class StoragePoolConnected(StorageException):
code = 325
message = "Cannot perform action while storage pool is connected"
+
class StoragePoolHigherVersionMasterFound(StorageException):
code = 326
message = "Found master domain with higher master version than input"
+
class StoragePoolDescriptionTooLongError(StorageException):
code = 327
message = "Storage pool description is too long"
+
class TooManyDomainsInStoragePoolError(StorageException):
code = 328
message = "Too many domains in Storage pool"
+
class ImagesNotSupportedError(StorageException):
code = 329
message = "This domain does not support images"
+
class GetFileListError(StorageException):
code = 330
message = "Cannot get files list"
+
#################################################
# Domains Exceptions
#################################################
+
class StorageDomainActionError(StorageException):
code = 350
message = "Error in storage domain action"
+
class StorageDomainCreationError(StorageException):
code = 351
message = "Error creating a storage domain"
+
class StorageDomainFormatError(StorageException):
code = 352
message = "Error formatting a storage domain"
+
class StorageDomainNotInPool(StorageException):
def __init__(self, spUUID, sdUUID):
@@ -529,45 +642,56 @@
code = 353
message = "Storage domain not in pool"
+
class StorageDomainAttachError(StorageException):
code = 354
message = "Error attaching storage domain"
+
class StorageDomainMasterError(StorageException):
code = 355
message = "Error validating master storage domain"
+
class StorageDomainDetachError(StorageException):
code = 356
message = "Error detaching storage domain"
+
class StorageDomainDeactivateError(StorageException):
code = 357
message = "Error deactivating storage domain"
+
class StorageDomainDoesNotExist(StorageException):
code = 358
message = "Storage domain does not exist"
+
class StorageDomainActivateError(StorageException):
code = 359
message = "Error activating storage domain"
+
class StorageDomainFSNotMounted(StorageException):
code = 360
message = "Storage domain remote path not mounted"
+
class StorageDomainNotEmpty(StorageException):
code = 361
message = "Storage domain is not empty - requires cleaning"
+
class StorageDomainMetadataCreationError(StorageException):
code = 362
message = "Error creating a storage domain's metadata"
+
class StorageDomainMetadataFileMissing(ResourceException):
code = 363
message = "Could not retrieve metadata file name for domain"
+
class StorageDomainMetadataNotFound(StorageException):
def __init__(self, sdUUID, path):
@@ -575,9 +699,11 @@
code = 364
message = "Storage domain invalid, metadata not found"
+
class StorageDomainAlreadyExists(StorageException):
code = 365
message = "Storage domain already exists"
+
class StorageDomainMasterUnmountError(StorageException):
def __init__(self, masterdir, rc):
@@ -585,11 +711,13 @@
code = 366
message = "Error unmounting master storage domain"
+
class BlockStorageDomainMasterFSCKError(StorageException):
def __init__(self, masterfsdev, rc):
self.value = "masterfsdev=%s, rc=%s" % (masterfsdev, rc)
code = 367
message = "BlockSD master file system FSCK error"
+
class BlockStorageDomainMasterMountError(StorageException):
def __init__(self, masterfsdev, rc, out):
@@ -597,29 +725,36 @@
code = 368
message = "BlockSD master file system mount error"
+
class StorageDomainNotActive(StorageException):
code = 369
message = "Storage domain not active"
+
class StorageDomainMasterCopyError(StorageException):
code = 370
message = "Error copying master storage domain's data"
+
class StorageDomainLayoutError(StorageException):
code = 371
message = "Storage domain layout corrupted"
+
class StorageDomainTypeError(StorageException):
code = 372
message = "Unsupported Storage Domain type"
+
class GetStorageDomainListError(StorageException):
code = 373
message = "Cannot get Storage Domains list"
+
class VolumesZeroingError(StorageException):
code = 374
message = "Cannot zero out volume"
+
class StorageDomainNotMemberOfPool(StorageException):
def __init__(self, spUUID, sdUUID):
@@ -627,21 +762,26 @@
code = 375
message = "Domain is not member in pool"
+
class StorageDomainStatusError(StorageException):
code = 376
message = "Unsupported Storage Domain status"
+
class StorageDomainCheckError(StorageException):
code = 377
message = "Domain has errors"
+
class StorageDomainTypeNotBackup(StorageException):
code = 378
message = "Domain type should be 'backup' but is not"
+
class StorageDomainAccessError(StorageException):
code = 379
message = "Domain is either partially accessible or entirely inaccessible"
+
class StorageDomainAlreadyAttached(StorageException):
def __init__(self, spUUID, sdUUID):
@@ -650,78 +790,100 @@
message = "Storage domain already attached to pool"
#DEPRECATED. Should be removed.
+
+
class StorageDomainStateTransitionIllegal(StorageException):
def __init__(self, sdUUID, currState, nextState):
self.value = [sdUUID, currState, nextState]
code = 381
message = "Domain state change illegal"
+
class StorageDomainActive(StorageException):
code = 382
message = "Illegal action, domain active"
+
class CannotDetachMasterStorageDomain(StorageException):
code = 383
message = "Illegal action"
+
class FileStorageDomainStaleNFSHandle(StorageException):
code = 384
message = "Stale NFS handle on underlying NFS server"
+
class StorageDomainInsufficientPermissions(StorageException):
code = 385
message = "Insufficient access permissions to underlying storage"
+
class StorageDomainClassError(StorageException):
code = 386
message = "Invalid domain class value"
+
class StorageDomainDescriptionTooLongError(StorageException):
code = 387
message = "Storage domain description is too long"
+
class StorageDomainIsMadeFromTooManyPVs(StorageException):
code = 388
message = "Storage domain is made from too many PVs"
+
class TooManyPVsInVG(StorageException):
code = 389
message = "Tried to create a VG from too many PVs"
+
class StorageDomainIllegalRemotePath(StorageException):
code = 390
message = "Remote path is illegal"
+
class CannotFormatAttachedStorageDomain(StorageException):
code = 391
message = "Cannot format attached storage domain"
+
class CannotFormatStorageDomainInConnectedPool(StorageException):
code = 392
message = "Cannot format storage domain in connected pool"
+
class StorageDomainRefreshError(StorageException):
code = 393
message = "Cannot refresh storage domain"
+
class UnsupportedDomainVersion(StorageException):
def __init__(self, version="unspecified"):
self.value = ""
self.version = version
- self.message = "Domain version `%d` is unsupported by this version of VDSM" % version
+ self.message = ("Domain version `%d` is unsupported "
+ "by this version of VDSM" % version)
code = 394
+
class CurrentVersionTooAdvancedError(StorageException):
def __init__(self, sdUUID, curVer, expVer):
self.value = ""
- self.message = "Current domain `%s` version is too advanced, expected `%d` and found `%d`" % (sdUUID, expVer, curVer)
+ self.message = ("Current domain `%s` version is too advanced, "
+ "expected `%d` and found `%d`" %
+ (sdUUID, expVer, curVer))
code = 395
+
class PoolUpgradeInProgress(StorageException):
def __init__(self, spUUID):
self.value = ""
- self.message = "Upgrading a pool while an upgrade is in process is unsupported (pool: `%s`)" % (spUUID,)
+ self.message = ("Upgrading a pool while an upgrade is in process is "
+ "unsupported (pool: `%s`)" % (spUUID,))
code = 396
+
class NoSpaceLeftOnDomain(StorageException):
def __init__(self, sdUUID):
@@ -729,11 +891,15 @@
self.message = "No space left on domain %s" % (sdUUID,)
code = 397
+
class MixedSDVersionError(StorageException):
def __init__(self, sdUUID, domVersion, msdUUID, msdVersion):
self.value = ""
- self.message = "Domain `%s` version (%d) is different from msd %s version (%d)" % (sdUUID, domVersion, msdUUID, msdVersion)
+ self.message = ("Domain `%s` version (%d) is different from "
+ "msd %s version (%d)" %
+ (sdUUID, domVersion, msdUUID, msdVersion))
code = 398
+
#################################################
# Task Exceptions
@@ -743,235 +909,299 @@
code = 400
message = "Task invalid"
+
class UnknownTask(GeneralException):
code = 401
message = "Task id unknown"
+
class TaskClearError(GeneralException):
code = 402
message = "Could not clear task"
+
class TaskNotFinished(GeneralException):
code = 403
message = "Task not finished"
+
class InvalidTaskType(GeneralException):
code = 404
message = "Invalid task type"
+
class AddTaskError(GeneralException):
code = 405
message = "TaskManager error, unable to add task"
+
class TaskInProgress(GeneralException):
code = 406
message = "Running Task in progress"
+
def __init__(self, spUUID, task):
self.value = "Pool %s task %s" % (spUUID, task)
+
class TaskMetaDataSaveError(GeneralException):
code = 407
message = "Can't save Task Metadata"
+
class TaskMetaDataLoadError(GeneralException):
code = 408
message = "Can't load Task Metadata"
+
class TaskDirError(GeneralException):
code = 409
message = "can't find/access task dir"
+
class TaskStateError(GeneralException):
code = 410
message = "Operation is not allowed in this task state"
+
class TaskAborted(GeneralException):
code = 411
message = "Task is aborted"
- def __init__(self, value, abortedcode = code):
+
+ def __init__(self, value, abortedcode=code):
self.value = value
self.abortedcode = abortedcode
+
def __str__(self):
- return "%s: %s - code %s" % (self.message, repr(self.value), self.abortedcode)
+ return ("%s: %s - code %s" %
+ (self.message, repr(self.value), self.abortedcode))
+
class UnmanagedTask(GeneralException):
code = 412
message = "Operation can't be performed on unmanaged task"
+
class TaskPersistError(GeneralException):
code = 413
message = "Can't persist task"
+
class InvalidJob(GeneralException):
code = 420
message = "Job is invalid"
+
class InvalidRecovery(GeneralException):
code = 430
message = "Recovery is invalid"
+
class InvalidTaskMng(GeneralException):
code = 440
message = "invalid Task Manager"
+
class TaskStateTransitionError(GeneralException):
code = 441
message = "cannot move task to requested state"
+
class TaskHasRefs(GeneralException):
code = 442
message = "operation cannot be performed - task has active references"
+
class ActionStopped(GeneralException):
code = 443
message = "Action was stopped"
+
#################################################
# Connections Exceptions
#################################################
+
class StorageServerActionError(StorageException):
code = 450
message = "Error storage server action"
+
class StorageServerConnectionError(StorageException):
code = 451
message = "Error storage server connection"
+
class StorageServerDisconnectionError(StorageException):
code = 452
message = "Error storage server disconnection"
+
class StorageServerValidationError(StorageException):
code = 453
message = "The specified path does not exist or cannot be reached."\
" Verify the path is correct and for remote storage,"\
" check the connection to your storage."
+
def __init__(self, targetPath=''):
self.value = "path = %s" % targetPath
+
class StorageServeriSCSIError(StorageException):
code = 454
message = "iSCSI connection error"
+
class MultipathRestartError(StorageException):
code = 455
message = "Multipath service restart error"
+
class GetiSCSISessionListError(StorageServeriSCSIError):
code = 456
message = "Get iSCSI session list error"
+
class AddiSCSIPortalError(StorageServeriSCSIError):
code = 457
message = "Add iSCSI portal error"
+
class RemoveiSCSIPortalError(StorageServeriSCSIError):
code = 458
message = "Remove iSCSI portal error"
+
class RemoveiSCSINodeError(StorageServeriSCSIError):
code = 459
message = "Remove iSCSI node error"
+
class AddiSCSINodeError(StorageServeriSCSIError):
code = 460
message = "Add iSCSI node error"
+
class SetiSCSIAuthError(StorageServeriSCSIError):
code = 461
message = "Set iSCSI authentication error"
+
class SetiSCSIUsernameError(StorageServeriSCSIError):
code = 462
message = "Set iSCSI username error"
+
class SetiSCSIPasswdError(StorageServeriSCSIError):
code = 463
message = "Set iSCSI password error"
+
class iSCSILoginError(StorageServeriSCSIError):
code = 464
message = "Failed to login to iSCSI node"
# Not in use anymore
+
+
class iSCSISetupError(StorageServeriSCSIError):
code = 465
message = "Failed to setup iSCSI subsystem"
+
class DeviceNotFound(StorageException):
code = 466
message = "Device not found or not accessible"
+
class MultipathSetupError(StorageException):
code = 467
message = "Failed to setup multipath"
+
class StorageTypeError(StorageException):
code = 468
message = "Storage type error"
+
class StorageServerAccessPermissionError(StorageException):
code = 469
message = "Permission settings on the specified path do not allow"\
" access to the storage. Verify permission settings"\
" on the specified storage path."
+
def __init__(self, targetPath):
self.value = "path = %s" % targetPath
+
class MountTypeError(StorageException):
code = 470
message = "Mount type error"
+
class MountParsingError(StorageException):
code = 471
message = "Mount parsing error"
+
class InvalidIpAddress(StorageException):
code = 472
message = "Invalid IP address"
+
def __init__(self, ip):
self.value = "IP = %s" % (ip)
+
class iSCSIifaceError(StorageServeriSCSIError):
code = 473
message = "iscsiadm iface error"
+
class iSCSILogoutError(StorageServeriSCSIError):
code = 474
message = "Failed to logout from iSCSI node"
+
class iSCSIDiscoveryError(StorageServeriSCSIError):
code = 475
message = "Failed discovery of iSCSI targets"
+
def __init__(self, portal, err):
self.value = "portal=%s, err=%s" % (portal, err)
+
class iSCSILoginAuthError(StorageServeriSCSIError):
code = 476
message = "Failed to login to iSCSI node due to authorization failure"
+
class MountError(StorageException):
code = 477
message = "Problem while trying to mount target"
+
class StorageServerConnectionRefIdAlreadyInUse(StorageException):
code = 478
message = "Connection Reference ID is already in use"
+
class StorageServerConnectionRefIdDoesNotExist(StorageException):
code = 479
- message = "Connection Reference ID was not in the registered with this VDSM"
+ message = ("Connection Reference ID was not "
+ "in the registered with this VDSM")
+
#################################################
# LVM related Exceptions
#################################################
+
class VolumeGroupActionError(StorageException):
code = 500
message = "Error volume group action"
+
class VolumeGroupPermissionsError(StorageException):
code = 501
message = "Could not update/change volume group permissions"
+
class VolumeGroupCreateError(StorageException):
def __init__(self, vgname, devname):
@@ -979,63 +1209,78 @@
code = 502
message = "Cannot create Volume Group"
+
class VolumeGroupExtendError(StorageException):
def __init__(self, vgname, devname):
self.value = "vgname=%s, devname=%s" % (vgname, devname)
code = 503
message = "Cannot extend Volume Group"
+
class VolumeGroupSizeError(StorageException):
code = 504
message = "Volume Group not big enough"
+
class VolumeGroupAlreadyExistsError(StorageException):
code = 505
message = "Volume Group Already Exists"
+
class VolumeGroupDoesNotExist(StorageException):
code = 506
message = "Volume Group does not exist"
+
class VolumeGroupRenameError(StorageException):
code = 507
message = "Volume Group rename error"
+
class VolumeGroupRemoveError(StorageException):
code = 508
message = "Volume Group remove error"
+
class VolumeGroupUninitialized(StorageException):
code = 509
message = "Volume Group not initialize"
+
class VolumeGroupReadTagError(StorageException):
code = 510
message = "Read Volume Group's tag error"
+
class VolumeGroupAddTagError(StorageException):
code = 511
message = "Add tag to Volume Group error"
+
class VolumeGroupRemoveTagError(StorageException):
code = 512
message = "Remove tag from Volume Group error"
+
class VolumeGroupScanError(StorageException):
code = 513
message = "Volume Group scanning error"
+
class GetVolumeGroupListError(StorageException):
code = 514
message = "Get Volume Group list error"
+
class VolumeGroupHasDomainTag(StorageException):
code = 515
message = "Volume Group has domain tag - requires cleaning"
+
class VolumeGroupReplaceTagError(StorageException):
code = 516
message = "Replace Volume Group tag error"
+
class VolumeGroupBlockSizeError(StorageException):
def __init__(self, domsizes, devsizes):
@@ -1046,6 +1291,7 @@
code = 517
message = "All devices in domain must have the same block size"
+
class DeviceBlockSizeError(StorageException):
def __init__(self, devsizes):
self.value = "logblksize=%s phyblksize=%s" % \
@@ -1053,35 +1299,44 @@
code = 518
message = "Device block size is not supported"
+
class CannotCreateLogicalVolume(StorageException):
code = 550
message = "Cannot create Logical Volume"
+
class CannotRemoveLogicalVolume(StorageException):
code = 551
message = "Cannot remove Logical Volume"
+
class CannotDeactivateLogicalVolume(StorageException):
code = 552
message = "Cannot deactivate Logical Volume"
+
class CannotAccessLogicalVolume(StorageException):
code = 553
message = "Cannot access Logical Volume"
+
class LogicalVolumeExtendError(StorageException):
def __init__(self, vgname, lvname, newsize):
- self.value = "vgname=%s lvname=%s newsize=%s" % (vgname, lvname, newsize)
+ self.value = ("vgname=%s lvname=%s "
+ "newsize=%s" % (vgname, lvname, newsize))
code = 554
message = "Logical Volume extend failed"
+
class LogicalVolumesListError(StorageException):
code = 555
message = "Cannot get Logical Volumes list from Volume Group"
+
class LogicalVolumeRefreshError(StorageException):
code = 556
message = "Cannot refresh Logical Volume"
+
class LogicalVolumeScanError(StorageException):
def __init__(self, vgname, lvname):
@@ -1089,41 +1344,51 @@
code = 557
message = "Logical volume scanning error"
+
class CannotActivateLogicalVolume(StorageException):
code = 558
message = "Cannot activate Logical Volume"
+
class LogicalVolumePermissionsError(ResourceException):
code = 559
message = "Cannot update/change logical volume permissions"
+
class LogicalVolumeAddTagError(StorageException):
code = 560
message = "Add tag to Logical Volume error"
+
class LogicalVolumeRemoveTagError(StorageException):
code = 561
message = "Remove tag from Logical Volume error"
+
class GetLogicalVolumeTagError(StorageException):
code = 562
message = "Cannot get tags of Logical Volumes"
+
class GetLogicalVolumesByTagError(StorageException):
code = 563
message = "Cannot get Logical Volumes with specific tag"
+
class GetAllLogicalVolumeTagsError(StorageException):
code = 564
message = "Cannot get tags of all Logical Volumes of Volume Group"
+
class GetLogicalVolumeDevError(StorageException):
code = 565
message = "Cannot get physical devices of logical volume"
+
class LogicalVolumeRenameError(StorageException):
code = 566
message = "Cannot rename Logical Volume"
+
class CannotWriteAccessLogialVolume(StorageException):
def __init__(self, vgname, lvname):
@@ -1131,11 +1396,13 @@
code = 567
message = "Cannot access logical volume for write"
+
class CannotSetRWLogicalVolume(StorageException):
def __init__(self, vgname, lvname, rw):
self.value = "vgname=%s lvname=%s rw=%s" % (vgname, lvname, rw)
code = 568
message = "Cannot set Logical volume RW permission"
+
class LogicalVolumesScanError(StorageException):
def __init__(self, vgname, lvs):
@@ -1143,53 +1410,66 @@
code = 569
message = "Logical volume scanning error"
+
class CannotActivateLogicalVolumes(StorageException):
code = 570
message = "Cannot activate Logical Volumes"
+
class GetLogicalVolumeDataError(StorageException):
code = 571
message = "Cannot get Logical Volume Info"
+
class LogicalVolumeReplaceTagError(StorageException):
code = 572
message = "Replace Logical Volume tag error"
+
class BlockDeviceActionError(StorageException):
code = 600
message = "Error block device action"
+
class PhysDevInitializationError(StorageException):
code = 601
message = "Failed to initialize physical device"
+
class LVMSetupError(StorageException):
code = 602
message = "LVM setup failed"
+
class CouldNotRetrievePhysicalVolumeList(StorageException):
code = 603
message = "Could not retrieve pv list"
+
class LogicalVolumeAlreadyExists(StorageException):
code = 604
message = "Cannot create logical volume - already exists"
+
class CouldNotRetrieveLogicalVolumesList(StorageException):
code = 605
message = "Could not retrieve lv list"
+
class InvalidPhysDev(StorageException):
code = 606
message = "Invalid physical device"
+
class PartitionedPhysDev(StorageException):
code = 607
message = "Partitioned physical device"
+
class MkfsError(StorageException):
code = 608
message = "Cannot create filesystem on device"
+
class MissingTagOnLogicalVolume(StorageException):
def __init__(self, lvname, tag):
@@ -1197,40 +1477,52 @@
code = 609
message = "Missing logical volume tag."
+
class LogicalVolumeDoesNotExistError(StorageException):
code = 610
message = "Logical volume does not exist"
+
class LogicalVolumeCachingError(StorageException):
code = 611
message = "Logical volume cache error"
+
class LogicalVolumeWrongTagError(StorageException):
code = 612
message = "Wrong logical volume tag"
+
class VgMetadataCriticallyFull(StorageException):
def __init__(self, vgname, mdasize, mdafree):
- self.value = "vgname=%s mdasize=%s mdafree=%s" % (vgname, mdasize, mdafree)
+ self.value = ("vgname=%s mdasize=%s "
+ "mdafree=%s" % (vgname, mdasize, mdafree))
code = 613
- message = """Error - The system has reached the high watermark on the VG metadata area size.
- This is due high number of Vdisks or large Vdisks size allocated on this
- specific VG. Please call Redhat Global Support to address the issue"""
+ message = """Error - The system has reached the high watermark on the VG
+ metadata area size. This is due high number of Vdisks or
+ large Vdisks size allocated on this specific VG. Please call
+ Redhat Global Support to address the issue"""
+
class SmallVgMetadata(StorageException):
def __init__(self, vgname, mdasize, mdafree):
- self.value = "vgname=%s mdasize=%s mdafree=%s" % (vgname, mdasize, mdafree)
+ self.value = ("vgname=%s mdasize=%s "
+ "mdafree=%s" % (vgname, mdasize, mdafree))
code = 614
- message = """Warning - The allocated VG metadata area size is too small, which might limit
- its capacity (the number of Vdisks and/or their size). Refer to GSS knowledge
- base to understand the issue and how to resolve it"""
+ message = """Warning - The allocated VG metadata area size is too small,
+ which might limit its capacity (the number of Vdisks and/or
+ their size). Refer to GSS knowledge base to understand the
+ issue and how to resolve it"""
+
#################################################
# SPM/HSM Exceptions
#################################################
+
class SpmStartError(StorageException):
code = 650
message = "Error starting SPM"
+
class AcquireLockFailure(StorageException):
def __init__(self, id, rc, out, err):
@@ -1238,11 +1530,15 @@
code = 651
message = "Cannot obtain lock"
+
class SpmParamsMismatch(StorageException):
def __init__(self, oldlver, oldid, prevLVER, prevID):
- self.value = "expected previd:%s lver:%s got request for previd:%s lver:%s" % (oldid, oldlver, prevID, prevLVER)
+ self.value = ("expected previd:%s lver:%s "
+ "got request for previd:%s lver:%s" %
+ (oldid, oldlver, prevID, prevLVER))
code = 652
message = "Pool previous lver/id don't match request"
+
class SpmStopError(StorageException):
def __init__(self, spUUID, strRunningTask=None):
@@ -1250,103 +1546,130 @@
code = 653
message = "Error stopping SPM, SPM has unfinished task(s)"
+
class SpmStatusError(StorageException):
code = 654
message = "Not SPM"
+
class SpmFenceError(StorageException):
code = 655
message = "Error fencing SPM"
+
class IsSpm(StorageException):
code = 656
message = "Operation not allowed while SPM is active"
+
class DomainAlreadyLocked(StorageException):
code = 657
message = "Cannot acquire lock, resource marked as locked"
+
class DomainLockDoesNotExist(StorageException):
code = 658
message = "Cannot release lock, resource not found"
+
# Removed Exception. Commented for code number reference.
# class CannotRetrieveSpmStatus(StorageException):
# code = 659
-# message = "Cannot retrieve SPM status, master domain probably unavailable"
+# message = ("Cannot retrieve SPM status, master domain probably "
+# "unavailable")
+
class ReleaseLockFailure(StorageException):
code = 660
message = "Cannot release lock"
+
class AcquireHostIdFailure(StorageException):
code = 661
message = "Cannot acquire host id"
+
class ReleaseHostIdFailure(StorageException):
code = 662
message = "Cannot release host id"
+
class HostIdMismatch(StorageException):
code = 700
message = "Host id not found or does not match manager host id"
+
class ClusterLockInitError(StorageException):
code = 701
message = "Could not initialize cluster lock"
+
#################################################
# Meta data related Exceptions
#################################################
+
class MetaDataGeneralError(StorageException):
code = 749
message = "General Meta data error"
+
class MetaDataKeyError(MetaDataGeneralError):
code = 750
message = "Meta data key error"
+
class MetaDataKeyNotFoundError(MetaDataGeneralError):
code = 751
message = "Meta Data key not found error"
+
class MetaDataSealIsBroken(MetaDataGeneralError):
def __init__(self, cksum, computed_cksum):
- self.value = "cksum = %s, computed_cksum = %s" % (cksum, computed_cksum)
+ self.value = ("cksum = %s, "
+ "computed_cksum = %s" % (cksum, computed_cksum))
code = 752
message = "Meta Data seal is broken (checksum mismatch)"
+
class MetaDataValidationError(MetaDataGeneralError):
code = 753
message = "Meta Data self-validation failed"
+
class MetaDataMappingError(MetaDataGeneralError):
code = 754
message = "Meta Data mapping failed"
+
# Removed Exception. Commented for code number reference.
# class MetaDataParamError(MetaDataGeneralError):
# code = 755
# message = "Meta Data parameter invalid"
+
class MetadataOverflowError(MetaDataGeneralError):
code = 756
message = "Metadata is too big. Cannot change Metadata"
+
#################################################
# Import/Export Exceptions
#################################################
+
class ImportError(StorageException):
code = 800
message = "Error importing image"
+
class ImportInfoError(StorageException):
code = 801
message = "Import candidate info error"
+
class ImportUnknownType(StorageException):
code = 802
message = "Unknown import type"
+
class ExportError(StorageException):
code = 803
@@ -1361,22 +1684,29 @@
code = 850
message = "Resource Namespace is not empty"
+
class ResourceTimeout(GeneralException):
code = 851
message = "Resource timeout"
+
class ResourceDoesNotExist(GeneralException):
code = 852
message = "Resource does not exist"
+
class InvalidResourceName(GeneralException):
code = 853
message = "Invalid resource name"
+
class ResourceReferenceInvalid(GeneralException):
code = 854
- message = "Cannot perform operation. This resource has been released or expired."
+ message = ("Cannot perform operation. This resource has been released or "
+ "expired.")
+
class ResourceAcqusitionFailed(GeneralException):
code = 855
- message = "Could not acquire resource. Probably resource factory threw an exception."
+ message = ("Could not acquire resource. "
+ "Probably resource factory threw an exception.")
--
To view, visit http://gerrit.ovirt.org/8147
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2b46a76330363ab3882af2380e2786562cf0e164
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>
Gerrit-Reviewer: Changming Bai <baichm at linux.vnet.ibm.com>
More information about the vdsm-patches
mailing list