X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Ffaults.py;h=4a614b1d88616f4a2f77032742b86caff47b1ce2;hb=45bfbdb50afc38e0c1f67d7b4f8481dd7a06f3fe;hp=4a1a5e46fcfb76bf65d030340e5031fbb83bfdb9;hpb=4cffbe34fbfb97b47e87b67fea47efbf60dade3b;p=sfa.git diff --git a/sfa/util/faults.py b/sfa/util/faults.py index 4a1a5e46..4a614b1d 100644 --- a/sfa/util/faults.py +++ b/sfa/util/faults.py @@ -1,3 +1,25 @@ +#---------------------------------------------------------------------- +# Copyright (c) 2008 Board of Trustees, Princeton University +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and/or hardware specification (the "Work") to +# deal in the Work without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Work, and to permit persons to whom the Work +# is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Work. +# +# THE WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE WORK OR THE USE OR OTHER DEALINGS +# IN THE WORK. +#---------------------------------------------------------------------- # # SFA API faults # @@ -11,6 +33,22 @@ class SfaFault(xmlrpclib.Fault): faultString += ": " + str(extra) xmlrpclib.Fault.__init__(self, faultCode, faultString) +class Forbidden(SfaFault): + def __init__(self, extra = None): + faultString = "FORBIDDEN" + SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra) + +class BadArgs(SfaFault): + def __init__(self, extra = None): + faultString = "BADARGS" + SfaFault.__init__(self, GENICODE.BADARGS, faultString, extra) + + +class CredentialMismatch(SfaFault): + def __init__(self, extra = None): + faultString = "Credential mismatch" + SfaFault.__init__(self, GENICODE.CREDENTIAL_MISMATCH, faultString, extra) + class SfaInvalidAPIMethod(SfaFault): def __init__(self, method, interface = None, extra = None): faultString = "Invalid method " + method @@ -60,7 +98,7 @@ class SfaNotImplemented(SfaFault): class SfaAPIError(SfaFault): def __init__(self, extra = None): - faultString = "Internal API error" + faultString = "Internal SFA API error" SfaFault.__init__(self, GENICODE.SERVERERROR, faultString, extra) class MalformedHrnException(SfaFault): @@ -79,6 +117,14 @@ class TreeException(SfaFault): def __str__(self): return repr(self.value) +class SearchFailed(SfaFault): + def __init__(self, value, extra = None): + self.value = value + faultString = "%s does not exist here " % self.value + SfaFault.__init__(self, GENICODE.SEARCHFAILED, faultString, extra) + def __str__(self): + return repr(self.value) + class NonExistingRecord(SfaFault): def __init__(self, value, extra = None): self.value = value @@ -255,6 +301,22 @@ class InvalidRSpec(SfaFault): 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 @@ -267,7 +329,7 @@ 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) + SfaFault.__init__(self, GENICODE.BADARGS, faultString, extra) def __str__(self): return repr(self.value) @@ -279,10 +341,13 @@ class AccountNotEnabled(SfaFault): return repr(self.value) class CredentialNotVerifiable(SfaFault): - def __init__(self, value, extra = None): + def __init__(self, value=None, extra = None): self.value = value - faultString = "Unable to verify credential: %(value)s, " %locals() - SfaFault.__init__(self, GENICODE.ERROR, faultString, extra) + faultString = "Unable to verify credential" %locals() + if value: + faultString += ": %s" % value + faultString += ", " + SfaFault.__init__(self, GENICODE.BADARGS, faultString, extra) def __str__(self): return repr(self.value) @@ -291,4 +356,16 @@ class CertExpired(SfaFault): self.value = value faultString = "%s cert is expired" % value SfaFault.__init__(self, GENICODE.ERROR, faultString, extra) - + +class SfatablesRejected(SfaFault): + def __init__(self, value, extra=None): + self.value =value + faultString = "%s rejected by sfatables" + SfaFault.__init__(self, GENICODE.FORBIDDEN, faultString, extra) + +class UnsupportedOperation(SfaFault): + def __init__(self, value, extra=None): + self.value = value + faultString = "Unsupported operation: %s" % value + SfaFault.__init__(self, GENICODE.UNSUPPORTED, faultString, extra) +