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:
Vipin Balachandran
2015-04-23 02:34:21 -07:00
parent 32c61ee8b0
commit c338f19f84
3 changed files with 38 additions and 1 deletions

View File

@@ -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,
}

View File

@@ -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
}

View File

@@ -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"))