sfa-0.9-17 tag
[sfa.git] / sfa / util / faults.py
1 #
2 # SFA API faults
3 #
4 #
5
6 ### $Id: faults.py 18586 2010-08-05 23:33:41Z tmack $
7 ### $URL: http://svn.planet-lab.org/svn/sfa/trunk/sfa/util/faults.py $
8
9 import xmlrpclib
10
11 class SfaFault(xmlrpclib.Fault):
12     def __init__(self, faultCode, faultString, extra = None):
13         if extra:
14             faultString += ": " + str(extra)
15         xmlrpclib.Fault.__init__(self, faultCode, faultString)
16
17 class SfaInvalidAPIMethod(SfaFault):
18     def __init__(self, method, interface = None, extra = None):
19         faultString = "Invalid method " + method
20         if interface:
21             faultString += " for interface " + interface
22         SfaFault.__init__(self, 100, faultString, extra)
23
24 class SfaInvalidArgumentCount(SfaFault):
25     def __init__(self, got, min, max = min, extra = None):
26         if min != max:
27             expected = "%d-%d" % (min, max)
28         else:
29             expected = "%d" % min
30         faultString = "Expected %s arguments, got %d" % \
31                       (expected, got)
32         SfaFault.__init__(self, 101, faultString, extra)
33
34 class SfaInvalidArgument(SfaFault):
35     def __init__(self, extra = None, name = None):
36         if name is not None:
37             faultString = "Invalid %s value" % name
38         else:
39             faultString = "Invalid argument"
40         SfaFault.__init__(self, 102, faultString, extra)
41
42 class SfaAuthenticationFailure(SfaFault):
43     def __init__(self, extra = None):
44         faultString = "Failed to authenticate call"
45         SfaFault.__init__(self, 103, faultString, extra)
46
47 class SfaDBError(SfaFault):
48     def __init__(self, extra = None):
49         faultString = "Database error"
50         SfaFault.__init__(self, 106, faultString, extra)
51
52 class SfaPermissionDenied(SfaFault):
53     def __init__(self, extra = None):
54         faultString = "Permission denied"
55         SfaFault.__init__(self, 108, faultString, extra)
56
57 class SfaNotImplemented(SfaFault):
58     def __init__(self, interface=None, extra = None):
59         faultString = "Not implemented"
60         if interface:
61             faultString += " at interface " + interface 
62         SfaFault.__init__(self, 109, faultString, extra)
63
64 class SfaAPIError(SfaFault):
65     def __init__(self, extra = None):
66         faultString = "Internal API error"
67         SfaFault.__init__(self, 111, faultString, extra)
68
69 class MalformedHrnException(SfaFault):
70     def __init__(self, value, extra = None):
71         self.value = value
72         faultString = "Malformed HRN: %(value)s" % locals()
73         SfaFault.__init__(self, 102, faultString, extra)
74     def __str__(self):
75         return repr(self.value)
76
77 class TreeException(SfaFault):
78     def __init__(self, value, extra = None):
79         self.value = value
80         faultString = "Tree Exception: %(value)s, " % locals()
81         SfaFault.__init__(self, 111, faultString, extra)
82     def __str__(self):
83         return repr(self.value)
84
85 class NonExistingRecord(SfaFault):
86     def __init__(self, value, extra = None):
87         self.value = value
88         faultString = "Non exsiting record %(value)s, " % locals()
89         SfaFault.__init__(self, 111, faultString, extra)
90     def __str__(self):
91         return repr(self.value)
92
93 class ExistingRecord(SfaFault):
94     def __init__(self, value, extra = None):
95         self.value = value
96         faultString = "Existing record: %(value)s, " % locals()
97         SfaFault.__init__(self, 111, faultString, extra)
98     def __str__(self):
99         return repr(self.value)
100
101     
102 class NonexistingCredType(SfaFault):
103     def __init__(self, value, extra = None):
104         self.value = value
105         faultString = "Non existing record: %(value)s, " % locals()
106         SfaFault.__init__(self, 111, faultString, extra)
107     def __str__(self):
108         return repr(self.value)
109
110 class NonexistingFile(SfaFault):
111     def __init__(self, value, extra = None):
112         self.value = value
113         faultString = "Non existing file: %(value)s, " % locals()
114         SfaFault.__init__(self, 111, faultString, extra)
115     def __str__(self):
116         return repr(self.value)
117
118 class InvalidRPCParams(SfaFault):
119     def __init__(self, value, extra = None):
120         self.value = value
121         faultString = "Invalid RPC Params: %(value)s, " % locals()
122         SfaFault.__init__(self, 102, faultString, extra)
123     def __str__(self):
124         return repr(self.value)
125
126 # SMBAKER exceptions follow
127
128 class ConnectionKeyGIDMismatch(SfaFault):
129     def __init__(self, value, extra = None):
130         self.value = value
131         faultString = "Connection Key GID mismatch: %(value)s" % locals()
132         SfaFault.__init__(self, 102, faultString, extra) 
133     def __str__(self):
134         return repr(self.value)
135
136 class MissingCallerGID(SfaFault):
137     def __init__(self, value, extra = None):
138         self.value = value
139         faultString = "Missing Caller GID: %(value)s" % locals()
140         SfaFault.__init__(self, 102, faultString, extra) 
141     def __str__(self):
142         return repr(self.value)
143
144 class RecordNotFound(SfaFault):
145     def __init__(self, value, extra = None):
146         self.value = value
147         faultString = "Record not found: %(value)s" % locals()
148         SfaFault.__init__(self, 102, faultString, extra)
149     def __str__(self):
150         return repr(self.value)
151
152 class UnknownSfaType(SfaFault):
153     def __init__(self, value, extra = None):
154         self.value = value
155         faultString = "Unknown SFA Type: %(value)s" % locals()
156         SfaFault.__init__(self, 102, faultString, extra)
157     def __str__(self):
158         return repr(self.value)
159
160 class MissingAuthority(SfaFault):
161     def __init__(self, value, extra = None):
162         self.value = value
163         faultString = "Missing authority: %(value)s" % locals()
164         SfaFault.__init__(self, 102, faultString, extra)
165     def __str__(self):
166         return repr(self.value)
167
168 class PlanetLabRecordDoesNotExist(SfaFault):
169     def __init__(self, value, extra = None):
170         self.value = value
171         faultString = "PlanetLab record does not exist : %(value)s" % locals()
172         SfaFault.__init__(self, 102, faultString, extra)
173     def __str__(self):
174         return repr(self.value)
175
176 class PermissionError(SfaFault):
177     def __init__(self, value, extra = None):
178         self.value = value
179         faultString = "Permission error: %(value)s" % locals()
180         SfaFault.__init__(self, 108, faultString, extra)
181     def __str__(self):
182         return repr(self.value)
183
184 class InsufficientRights(SfaFault):
185     def __init__(self, value, extra = None):
186         self.value = value
187         faultString = "Insufficient rights: %(value)s" % locals()
188         SfaFault.__init__(self, 108, faultString, extra)
189     def __str__(self):
190         return repr(self.value)
191
192 class MissingDelegateBit(SfaFault):
193     def __init__(self, value, extra = None):
194         self.value = value
195         faultString = "Missing delegate bit: %(value)s" % locals()
196         SfaFault.__init__(self, 108, faultString, extra)
197     def __str__(self):
198         return repr(self.value)
199
200 class ChildRightsNotSubsetOfParent(SfaFault):
201     def __init__(self, value, extra = None):
202         self.value = value
203         faultString = "Child rights not subset of parent: %(value)s" % locals()
204         SfaFault.__init__(self, 103, faultString, extra)
205     def __str__(self):
206         return repr(self.value)
207
208 class CertMissingParent(SfaFault):
209     def __init__(self, value, extra = None):
210         self.value = value
211         faultString = "Cert missing parent: %(value)s" % locals()
212         SfaFault.__init__(self, 103, faultString, extra)
213     def __str__(self):
214         return repr(self.value)
215
216 class CertNotSignedByParent(SfaFault):
217     def __init__(self, value, extra = None):
218         self.value = value
219         faultString = "Cert not signed by parent: %(value)s" % locals()
220         SfaFault.__init__(self, 103, faultString, extra)
221     def __str__(self):
222         return repr(self.value)
223     
224 class GidParentHrn(SfaFault):
225     def __init__(self, value, extra = None):
226         self.value = value
227         faultString = "Cert URN is not an extension of its parent: %(value)s" % locals()
228         SfaFault.__init__(self, 103, faultString, extra)
229     def __str__(self):
230         return repr(self.value)
231         
232 class GidInvalidParentHrn(SfaFault):
233     def __init__(self, value, extra = None):
234         self.value = value
235         faultString = "GID invalid parent hrn: %(value)s" % locals()
236         SfaFault.__init__(self, 102, faultString, extra)
237     def __str__(self):
238         return repr(self.value)
239
240 class SliverDoesNotExist(SfaFault):
241     def __init__(self, value, extra = None):
242         self.value = value
243         faultString = "Sliver does not exist : %(value)s" % locals()
244         SfaFault.__init__(self, 102, faultString, extra)
245     def __str__(self):
246         return repr(self.value)
247
248 class BadRequestHash(xmlrpclib.Fault):
249     def __init__(self, hash = None, extra = None):
250         faultString = "bad request hash: " + str(hash)
251         xmlrpclib.Fault.__init__(self, 902, faultString)
252
253 class MissingTrustedRoots(SfaFault):
254     def __init__(self, value, extra = None):
255         self.value = value
256         faultString = "Trusted root directory does not exist: %(value)s" % locals()
257         SfaFault.__init__(self, 102, faultString, extra) 
258     def __str__(self):
259         return repr(self.value)
260
261 class MissingSfaInfo(SfaFault):
262     def __init__(self, value, extra = None):
263         self.value = value
264         faultString = "Missing information: %(value)s" % locals()
265         SfaFault.__init__(self, 102, faultString, extra) 
266     def __str__(self):
267         return repr(self.value)
268
269 class InvalidRSpec(SfaFault):
270     def __init__(self, value, extra = None):
271         self.value = value
272         faultString = "Invalid RSpec: %(value)s" % locals()
273         SfaFault.__init__(self, 108, faultString, extra)
274     def __str__(self):
275         return repr(self.value)
276
277 class AccountNotEnabled(SfaFault):
278     def __init__(self,  extra = None):
279         faultString = "Account Disabled"
280         SfaFault.__init__(self, 108, faultString, extra)
281     def __str__(self):
282         return repr(self.value)
283
284 class CredentialNotVerifiable(SfaFault):
285     def __init__(self, value, extra = None):
286         self.value = value
287         faultString = "Unable to verify credential: %(value)s, " %locals()
288         SfaFault.__init__(self, 115, faultString, extra)
289     def __str__(self):
290         return repr(self.value)