reorganizing code. moving some things out of the server interface classes and into...
[sfa.git] / geni / util / faults.py
1 #
2 # GeniAPI XML-RPC faults
3 #
4 #
5
6 import xmlrpclib
7
8 class GeniFault(xmlrpclib.Fault):
9     def __init__(self, faultCode, faultString, extra = None):
10         if extra:
11             faultString += ": " + extra
12         xmlrpclib.Fault.__init__(self, faultCode, faultString)
13
14 class GeniInvalidAPIMethod(GeniFault):
15     def __init__(self, method, role = None, extra = None):
16         faultString = "Invalid method " + method
17         if role:
18             faultString += " for role " + role
19         GeniFault.__init__(self, 100, faultString, extra)
20
21 class GeniInvalidArgumentCount(GeniFault):
22     def __init__(self, got, min, max = min, extra = None):
23         if min != max:
24             expected = "%d-%d" % (min, max)
25         else:
26             expected = "%d" % min
27         faultString = "Expected %s arguments, got %d" % \
28                       (expected, got)
29         GeniFault.__init__(self, 101, faultString, extra)
30
31 class GeniInvalidArgument(GeniFault):
32     def __init__(self, extra = None, name = None):
33         if name is not None:
34             faultString = "Invalid %s value" % name
35         else:
36             faultString = "Invalid argument"
37         GeniFault.__init__(self, 102, faultString, extra)
38
39 class GeniAuthenticationFailure(GeniFault):
40     def __init__(self, extra = None):
41         faultString = "Failed to authenticate call"
42         GeniFault.__init__(self, 103, faultString, extra)
43
44 class GeniDBError(GeniFault):
45     def __init__(self, extra = None):
46         faultString = "Database error"
47         GeniFault.__init__(self, 106, faultString, extra)
48
49 class GeniPermissionDenied(GeniFault):
50     def __init__(self, extra = None):
51         faultString = "Permission denied"
52         GeniFault.__init__(self, 108, faultString, extra)
53
54 class GeniNotImplemented(GeniFault):
55     def __init__(self, extra = None):
56         faultString = "Not fully implemented"
57         GeniFault.__init__(self, 109, faultString, extra)
58
59 class GeniAPIError(GeniFault):
60     def __init__(self, extra = None):
61         faultString = "Internal API error"
62         GeniFault.__init__(self, 111, faultString, extra)