added copyright header
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Sat, 21 Jul 2012 02:42:06 +0000 (22:42 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Sat, 21 Jul 2012 02:42:06 +0000 (22:42 -0400)
sfa/util/faults.py

index ef277ff..848d818 100644 (file)
-#
-# SFA API faults
-#
-
-import xmlrpclib
-from sfa.util.genicode import GENICODE
-
-class SfaFault(xmlrpclib.Fault):
-    def __init__(self, faultCode, faultString, extra = None):
-        if extra:
-            faultString += ": " + str(extra)
-        xmlrpclib.Fault.__init__(self, faultCode, faultString)
-
-class SfaInvalidAPIMethod(SfaFault):
-    def __init__(self, method, interface = None, extra = None):
-        faultString = "Invalid method " + method
-        if interface:
-            faultString += " for interface " + interface
-        SfaFault.__init__(self, GENICODE.UNSUPPORTED, faultString, extra)
-
-class SfaInvalidArgumentCount(SfaFault):
-    def __init__(self, got, min, max = min, extra = None):
-        if min != max:
-            expected = "%d-%d" % (min, max)
-        else:
-            expected = "%d" % min
-        faultString = "Expected %s arguments, got %d" % \
-                      (expected, got)
-        SfaFault.__init__(self, GENICODE.BADARGS, faultString, extra)
-
-class SfaInvalidArgument(SfaFault):
-    def __init__(self, extra = None, name = None):
-        if name is not None:
-            faultString = "Invalid %s value" % name
-        else:
-            faultString = "Invalid argument"
-        SfaFault.__init__(self, GENICODE.BADARGS, faultString, extra)
-
-class SfaAuthenticationFailure(SfaFault):
-    def __init__(self, extra = None):
-        faultString = "Failed to authenticate call"
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-
-class SfaDBError(SfaFault):
-    def __init__(self, extra = None):
-        faultString = "Database error"
-        SfaFault.__init__(self, GENICODE.DBERROR, faultString, extra)
-
-class SfaPermissionDenied(SfaFault):
-    def __init__(self, extra = None):
-        faultString = "Permission denied"
-        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)
-
-class SfaNotImplemented(SfaFault):
-    def __init__(self, interface=None, extra = None):
-        faultString = "Not implemented"
-        if interface:
-            faultString += " at interface " + interface 
-        SfaFault.__init__(self, GENICODE.UNSUPPORTED, faultString, extra)
-
-class SfaAPIError(SfaFault):
-    def __init__(self, extra = None):
-        faultString = "Internal API error"
-        SfaFault.__init__(self, GENICODE.SERVERERROR, faultString, extra)
-
-class MalformedHrnException(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Malformed HRN: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class TreeException(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Tree Exception: %(value)s, " % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class NonExistingRecord(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Non exsiting record %(value)s, " % locals()
-        SfaFault.__init__(self, GENICODE.SEARCHFAILED, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class ExistingRecord(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Existing record: %(value)s, " % locals()
-        SfaFault.__init__(self, GENICODE.REFUSED, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-    
-class InvalidRPCParams(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Invalid RPC Params: %(value)s, " % locals()
-        SfaFault.__init__(self, GENICODE.RPCERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-# SMBAKER exceptions follow
-
-class ConnectionKeyGIDMismatch(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Connection Key GID mismatch: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra) 
-    def __str__(self):
-        return repr(self.value)
-
-class MissingCallerGID(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Missing Caller GID: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra) 
-    def __str__(self):
-        return repr(self.value)
-
-class RecordNotFound(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Record not found: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class UnknownSfaType(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Unknown SFA Type: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class MissingAuthority(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Missing authority: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class PlanetLabRecordDoesNotExist(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "PlanetLab record does not exist : %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class PermissionError(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Permission error: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class InsufficientRights(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Insufficient rights: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class MissingDelegateBit(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Missing delegate bit: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class ChildRightsNotSubsetOfParent(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Child rights not subset of parent: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class CertMissingParent(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Cert missing parent: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class CertNotSignedByParent(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Cert not signed by parent: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-    
-class GidParentHrn(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Cert URN is not an extension of its parent: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-        
-class GidInvalidParentHrn(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "GID invalid parent hrn: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class SliverDoesNotExist(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Sliver does not exist : %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class BadRequestHash(xmlrpclib.Fault):
-    def __init__(self, hash = None, extra = None):
-        faultString = "bad request hash: " + str(hash)
-        xmlrpclib.Fault.__init__(self, GENICODE.ERROR, faultString)
-
-class MissingTrustedRoots(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Trusted root directory does not exist: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.SERVERERROR, faultString, extra) 
-    def __str__(self):
-        return repr(self.value)
-
-class MissingSfaInfo(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Missing information: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra) 
-    def __str__(self):
-        return repr(self.value)
-
-class InvalidRSpec(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Invalid RSpec: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class InvalidRSpecVersion(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Invalid RSpec version: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.BADVERSION, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class UnsupportedRSpecVersion(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Unsupported RSpec version: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.UNSUPPORTED, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class InvalidRSpecElement(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Invalid RSpec Element: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class InvalidXML(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Invalid XML Document: %(value)s" % locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class AccountNotEnabled(SfaFault):
-    def __init__(self,  extra = None):
-        faultString = "Account Disabled"
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class CredentialNotVerifiable(SfaFault):
-    def __init__(self, value, extra = None):
-        self.value = value
-        faultString = "Unable to verify credential: %(value)s, " %locals()
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-    def __str__(self):
-        return repr(self.value)
-
-class CertExpired(SfaFault):
-    def __init__(self, value, extra=None):
-        self.value = value
-        faultString = "%s cert is expired" % value
-        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)
-   
+#----------------------------------------------------------------------\r
+# Copyright (c) 2008 Board of Trustees, Princeton University\r
+#\r
+# Permission is hereby granted, free of charge, to any person obtaining\r
+# a copy of this software and/or hardware specification (the "Work") to\r
+# deal in the Work without restriction, including without limitation the\r
+# rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+# and/or sell copies of the Work, and to permit persons to whom the Work\r
+# is furnished to do so, subject to the following conditions:\r
+#\r
+# The above copyright notice and this permission notice shall be\r
+# included in all copies or substantial portions of the Work.\r
+#\r
+# THE WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS \r
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF \r
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND \r
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT \r
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, \r
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, \r
+# OUT OF OR IN CONNECTION WITH THE WORK OR THE USE OR OTHER DEALINGS \r
+# IN THE WORK.\r
+#----------------------------------------------------------------------\r
+#\r
+# SFA API faults\r
+#\r
+\r
+import xmlrpclib\r
+from sfa.util.genicode import GENICODE\r
+\r
+class SfaFault(xmlrpclib.Fault):\r
+    def __init__(self, faultCode, faultString, extra = None):\r
+        if extra:\r
+            faultString += ": " + str(extra)\r
+        xmlrpclib.Fault.__init__(self, faultCode, faultString)\r
+\r
+class SfaInvalidAPIMethod(SfaFault):\r
+    def __init__(self, method, interface = None, extra = None):\r
+        faultString = "Invalid method " + method\r
+        if interface:\r
+            faultString += " for interface " + interface\r
+        SfaFault.__init__(self, GENICODE.UNSUPPORTED, faultString, extra)\r
+\r
+class SfaInvalidArgumentCount(SfaFault):\r
+    def __init__(self, got, min, max = min, extra = None):\r
+        if min != max:\r
+            expected = "%d-%d" % (min, max)\r
+        else:\r
+            expected = "%d" % min\r
+        faultString = "Expected %s arguments, got %d" % \\r
+                      (expected, got)\r
+        SfaFault.__init__(self, GENICODE.BADARGS, faultString, extra)\r
+\r
+class SfaInvalidArgument(SfaFault):\r
+    def __init__(self, extra = None, name = None):\r
+        if name is not None:\r
+            faultString = "Invalid %s value" % name\r
+        else:\r
+            faultString = "Invalid argument"\r
+        SfaFault.__init__(self, GENICODE.BADARGS, faultString, extra)\r
+\r
+class SfaAuthenticationFailure(SfaFault):\r
+    def __init__(self, extra = None):\r
+        faultString = "Failed to authenticate call"\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+\r
+class SfaDBError(SfaFault):\r
+    def __init__(self, extra = None):\r
+        faultString = "Database error"\r
+        SfaFault.__init__(self, GENICODE.DBERROR, faultString, extra)\r
+\r
+class SfaPermissionDenied(SfaFault):\r
+    def __init__(self, extra = None):\r
+        faultString = "Permission denied"\r
+        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)\r
+\r
+class SfaNotImplemented(SfaFault):\r
+    def __init__(self, interface=None, extra = None):\r
+        faultString = "Not implemented"\r
+        if interface:\r
+            faultString += " at interface " + interface \r
+        SfaFault.__init__(self, GENICODE.UNSUPPORTED, faultString, extra)\r
+\r
+class SfaAPIError(SfaFault):\r
+    def __init__(self, extra = None):\r
+        faultString = "Internal API error"\r
+        SfaFault.__init__(self, GENICODE.SERVERERROR, faultString, extra)\r
+\r
+class MalformedHrnException(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Malformed HRN: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class TreeException(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Tree Exception: %(value)s, " % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class NonExistingRecord(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Non exsiting record %(value)s, " % locals()\r
+        SfaFault.__init__(self, GENICODE.SEARCHFAILED, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class ExistingRecord(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Existing record: %(value)s, " % locals()\r
+        SfaFault.__init__(self, GENICODE.REFUSED, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+    \r
+class InvalidRPCParams(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Invalid RPC Params: %(value)s, " % locals()\r
+        SfaFault.__init__(self, GENICODE.RPCERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+# SMBAKER exceptions follow\r
+\r
+class ConnectionKeyGIDMismatch(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Connection Key GID mismatch: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra) \r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class MissingCallerGID(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Missing Caller GID: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra) \r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class RecordNotFound(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Record not found: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class UnknownSfaType(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Unknown SFA Type: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class MissingAuthority(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Missing authority: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class PlanetLabRecordDoesNotExist(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "PlanetLab record does not exist : %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class PermissionError(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Permission error: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class InsufficientRights(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Insufficient rights: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class MissingDelegateBit(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Missing delegate bit: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class ChildRightsNotSubsetOfParent(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Child rights not subset of parent: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class CertMissingParent(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Cert missing parent: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class CertNotSignedByParent(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Cert not signed by parent: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+    \r
+class GidParentHrn(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Cert URN is not an extension of its parent: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+        \r
+class GidInvalidParentHrn(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "GID invalid parent hrn: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class SliverDoesNotExist(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Sliver does not exist : %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class BadRequestHash(xmlrpclib.Fault):\r
+    def __init__(self, hash = None, extra = None):\r
+        faultString = "bad request hash: " + str(hash)\r
+        xmlrpclib.Fault.__init__(self, GENICODE.ERROR, faultString)\r
+\r
+class MissingTrustedRoots(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Trusted root directory does not exist: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.SERVERERROR, faultString, extra) \r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class MissingSfaInfo(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Missing information: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra) \r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class InvalidRSpec(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Invalid RSpec: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class InvalidRSpecVersion(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Invalid RSpec version: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.BADVERSION, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class UnsupportedRSpecVersion(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Unsupported RSpec version: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.UNSUPPORTED, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class InvalidRSpecElement(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Invalid RSpec Element: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class InvalidXML(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Invalid XML Document: %(value)s" % locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class AccountNotEnabled(SfaFault):\r
+    def __init__(self,  extra = None):\r
+        faultString = "Account Disabled"\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class CredentialNotVerifiable(SfaFault):\r
+    def __init__(self, value, extra = None):\r
+        self.value = value\r
+        faultString = "Unable to verify credential: %(value)s, " %locals()\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+    def __str__(self):\r
+        return repr(self.value)\r
+\r
+class CertExpired(SfaFault):\r
+    def __init__(self, value, extra=None):\r
+        self.value = value\r
+        faultString = "%s cert is expired" % value\r
+        SfaFault.__init__(self, GENICODE.ERROR, faultString, extra)\r
+   \r