blob: 2559dd3b0a13ccee69debdff536fd2cc960b66c4 [file] [log] [blame]
mbligh906b9f72007-11-29 18:56:17 +00001"""
2Internal global error types
3"""
4
5import sys
6from traceback import format_exception
7
8def format_error():
mbligh642b03e2008-01-14 16:53:15 +00009 t, o, tb = sys.exc_info()
10 trace = format_exception(t, o, tb)
11 # Clear the backtrace to prevent a circular reference
12 # in the heap -- as per tutorial
13 tb = ''
mbligh906b9f72007-11-29 18:56:17 +000014
mbligh642b03e2008-01-14 16:53:15 +000015 return ''.join(trace)
mbligh906b9f72007-11-29 18:56:17 +000016
17class JobContinue(SystemExit):
18 """Allow us to bail out requesting continuance."""
19 pass
20
21class JobComplete(SystemExit):
22 """Allow us to bail out indicating continuation not required."""
23 pass
24
25class AutotestError(Exception):
26 """The parent of all errors deliberatly thrown within the client code."""
27 pass
28
29class JobError(AutotestError):
30 """Indicates an error which terminates and fails the whole job."""
31 pass
32
33class TestError(AutotestError):
34 """Indicates an error which terminates and fails the test."""
35 pass
36
mbligh6a2a2df2008-01-16 17:41:55 +000037
mbligh906b9f72007-11-29 18:56:17 +000038class CmdError(TestError):
mbligh6a2a2df2008-01-16 17:41:55 +000039 """\
40 Indicates that a command failed, is fatal to the test unless caught.
41 """
42 def __init__(self, command, result_code):
43 TestError.__init__(self, command, result_code)
44
45
mbligh906b9f72007-11-29 18:56:17 +000046 def __str__(self):
47 return "Command <" + self.args[0] + "> failed, rc=%d" % (self.args[1])
48
49class PackageError(TestError):
mbligh642b03e2008-01-14 16:53:15 +000050 """Indicates an error trying to perform a package operation."""
51 pass
mbligh906b9f72007-11-29 18:56:17 +000052
53class UnhandledError(TestError):
54 """Indicates an unhandled exception in a test."""
55 def __init__(self, prefix):
56 msg = prefix + format_error()
57 TestError.__init__(self, msg)
mbligh03f4fc72007-11-29 20:56:14 +000058
mbligh5deff3d2008-01-04 21:21:28 +000059class InstallError(JobError):
60 """Indicates an installation error which Terminates and fails the job."""
61 pass
mbligh03f4fc72007-11-29 20:56:14 +000062
63# server-specific errors
64
65class AutoservError(Exception):
66 pass
67
68
69class AutoservRunError(AutoservError):
mbligh6a2a2df2008-01-16 17:41:55 +000070 """\
71 Errors raised by one of the run functions. Should always be
72 constructed with a tuple of two args (error description (str),
73 run result object).
74 """
75 def __init__(self, description, result_obj):
76 AutoservError.__init__(self, description, result_obj)
mbligh03f4fc72007-11-29 20:56:14 +000077
78
79class AutoservVirtError(AutoservError):
80 """Vitualization related error"""
81 pass
82
83
84class AutoservUnsupportedError(AutoservError):
85 """Error raised when you try to use an unsupported optional feature"""
86 pass
87
88class AutoservHostError(AutoservError):
89 """Error reaching a host"""
90 pass
91
92class AutoservRebootError(AutoservError):
93 """Error occured while rebooting a machine"""
94 pass