Add NoDiskSpaceException
vSphere APIs such as ExtendVirtualDisk_Task, CopyVirtualDisk_Task throw NoDiskSpace fault when there is insufficient datastore space. Currently, VMwareDriverException is thrown by oslo.vmware in response to NoDiskSpace VIM fault. This patch adds a new exception class corresponding to NoDiskSpace fault. Change-Id: I50c5a93aae7fa2b5ad29951eec4d5a07e4f02045
This commit is contained in:
@@ -38,6 +38,7 @@ NOT_AUTHENTICATED = 'NotAuthenticated'
|
||||
TASK_IN_PROGRESS = 'TaskInProgress'
|
||||
DUPLICATE_NAME = 'DuplicateName'
|
||||
SECURITY_ERROR = "SecurityError"
|
||||
NO_DISK_SPACE = 'NoDiskSpace'
|
||||
|
||||
|
||||
class VimException(Exception):
|
||||
@@ -224,6 +225,10 @@ class DuplicateName(VMwareDriverException):
|
||||
msg_fmt = _("Duplicate name.")
|
||||
|
||||
|
||||
class NoDiskSpaceException(VMwareDriverException):
|
||||
msg_fmt = _("Insufficient disk space.")
|
||||
|
||||
|
||||
# Populate the fault registry with the exceptions that have
|
||||
# special treatment.
|
||||
_fault_classes_registry = {
|
||||
@@ -239,6 +244,7 @@ _fault_classes_registry = {
|
||||
NOT_AUTHENTICATED: NotAuthenticatedException,
|
||||
TASK_IN_PROGRESS: TaskInProgress,
|
||||
DUPLICATE_NAME: DuplicateName,
|
||||
NO_DISK_SPACE: NoDiskSpaceException,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -531,7 +531,7 @@ class VMwareAPISessionTest(base.TestCase):
|
||||
|
||||
def test_poll_task_unknown_exception(self):
|
||||
_unknown_exceptions = {
|
||||
'NoDiskSpace': exceptions.VMwareDriverException,
|
||||
'NotAFile': exceptions.VMwareDriverException,
|
||||
'RuntimeFault': exceptions.VMwareDriverException
|
||||
}
|
||||
|
||||
|
||||
@@ -78,3 +78,34 @@ class ExceptionsTest(base.TestCase):
|
||||
self.assertRaises(TypeError,
|
||||
exceptions.register_fault_class,
|
||||
'ValueError', ValueError)
|
||||
|
||||
def test_get_fault_class(self):
|
||||
self.assertEqual(exceptions.AlreadyExistsException,
|
||||
exceptions.get_fault_class("AlreadyExists"))
|
||||
self.assertEqual(exceptions.CannotDeleteFileException,
|
||||
exceptions.get_fault_class("CannotDeleteFile"))
|
||||
self.assertEqual(exceptions.FileAlreadyExistsException,
|
||||
exceptions.get_fault_class("FileAlreadyExists"))
|
||||
self.assertEqual(exceptions.FileFaultException,
|
||||
exceptions.get_fault_class("FileFault"))
|
||||
self.assertEqual(exceptions.FileLockedException,
|
||||
exceptions.get_fault_class("FileLocked"))
|
||||
self.assertEqual(exceptions.FileNotFoundException,
|
||||
exceptions.get_fault_class("FileNotFound"))
|
||||
self.assertEqual(exceptions.InvalidPowerStateException,
|
||||
exceptions.get_fault_class("InvalidPowerState"))
|
||||
self.assertEqual(exceptions.InvalidPropertyException,
|
||||
exceptions.get_fault_class("InvalidProperty"))
|
||||
self.assertEqual(exceptions.NoPermissionException,
|
||||
exceptions.get_fault_class("NoPermission"))
|
||||
self.assertEqual(exceptions.NotAuthenticatedException,
|
||||
exceptions.get_fault_class("NotAuthenticated"))
|
||||
self.assertEqual(exceptions.TaskInProgress,
|
||||
exceptions.get_fault_class("TaskInProgress"))
|
||||
self.assertEqual(exceptions.DuplicateName,
|
||||
exceptions.get_fault_class("DuplicateName"))
|
||||
self.assertEqual(exceptions.NoDiskSpaceException,
|
||||
exceptions.get_fault_class("NoDiskSpace"))
|
||||
# Test unknown fault.
|
||||
self.assertEqual(exceptions.VMwareDriverException,
|
||||
exceptions.get_fault_class("NotAFile"))
|
||||
|
||||
Reference in New Issue
Block a user