X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Fmethod.py;h=009220c9661ab97f0ee6a8959ead6c2cf4cfc95b;hb=30d9951e075d93127c3909dcb41be09b420b3525;hp=4c37c6766c1d32f30f78aded391921f4c1fa1817;hpb=db88e8be755e4a4c17fcd65eec98ca420eff91a4;p=sfa.git diff --git a/sfa/util/method.py b/sfa/util/method.py index 4c37c676..009220c9 100644 --- a/sfa/util/method.py +++ b/sfa/util/method.py @@ -3,18 +3,15 @@ # # -import os, time -from types import * -from types import StringTypes -import traceback +import time +from types import IntType, LongType import textwrap -import xmlrpclib - from sfa.util.sfalogging import logger -from sfa.util.faults import * -from sfa.util.parameter import Parameter, Mixed, python_type, xmlrpc_type -from sfa.trust.auth import Auth +from sfa.util.py23 import StringType +from sfa.util.faults import SfaFault, SfaInvalidAPIMethod, SfaInvalidArgumentCount, SfaInvalidArgument + +from sfa.storage.parameter import Parameter, Mixed, python_type, xmlrpc_type class Method: """ @@ -60,7 +57,7 @@ class Method: def __call__(self, *args, **kwds): """ - Main entry point for all SfaAPI functions. Type checks + Main entry point for all SFA API functions. Type checks arguments, authenticates, and executes call(). """ @@ -79,18 +76,16 @@ class Method: for name, value, expected in zip(max_args, args, self.accepts): self.type_check(name, value, expected, args) - if self.api.config.SFA_API_DEBUG: - logger.debug("method.__call__ [%s] : BEG %s"%(self.api.interface,methodname)) + logger.debug("method.__call__ [%s] : BEG %s"%(self.api.interface,methodname)) result = self.call(*args, **kwds) runtime = time.time() - start - if self.api.config.SFA_API_DEBUG or hasattr(self, 'message'): - logger.debug("method.__call__ [%s] : END %s in %02f s (%s)"%\ - (self.api.interface,methodname,runtime,getattr(self,'message',"[no-msg]"))) + logger.debug("method.__call__ [%s] : END %s in %02f s (%s)"%\ + (self.api.interface,methodname,runtime,getattr(self,'message',"[no-msg]"))) return result - except SfaFault, fault: + except SfaFault as fault: caller = "" @@ -209,7 +204,7 @@ class Method: try: self.type_check(name, value, item, args) return - except SfaInvalidArgument, fault: + except SfaInvalidArgument as fault: pass raise fault @@ -239,7 +234,7 @@ class Method: # Strings are a special case. Accept either unicode or str # types if a string is expected. - if expected_type in StringTypes and isinstance(value, StringTypes): + if issubclass(expected_type, StringType) and isinstance(value, StringType): pass # Integers and long integers are also special types. Accept @@ -249,28 +244,27 @@ class Method: elif not isinstance(value, expected_type): raise SfaInvalidArgument("expected %s, got %s" % \ - (xmlrpc_type(expected_type), - xmlrpc_type(type(value))), + (xmlrpc_type(expected_type), xmlrpc_type(type(value))), name) # If a minimum or maximum (length, value) has been specified - if expected_type in StringTypes: + if issubclass(expected_type, StringType): if min is not None and \ len(value.encode(self.api.encoding)) < min: - raise SfaInvalidArgument, "%s must be at least %d bytes long" % (name, min) + raise SfaInvalidArgument("%s must be at least %d bytes long" % (name, min)) if max is not None and \ len(value.encode(self.api.encoding)) > max: - raise SfaInvalidArgument, "%s must be at most %d bytes long" % (name, max) + raise SfaInvalidArgument("%s must be at most %d bytes long" % (name, max)) elif expected_type in (list, tuple, set): if min is not None and len(value) < min: - raise SfaInvalidArgument, "%s must contain at least %d items" % (name, min) + raise SfaInvalidArgument("%s must contain at least %d items" % (name, min)) if max is not None and len(value) > max: - raise SfaInvalidArgument, "%s must contain at most %d items" % (name, max) + raise SfaInvalidArgument("%s must contain at most %d items" % (name, max)) else: if min is not None and value < min: - raise SfaInvalidArgument, "%s must be > %s" % (name, str(min)) + raise SfaInvalidArgument("%s must be > %s" % (name, str(min))) if max is not None and value > max: - raise SfaInvalidArgument, "%s must be < %s" % (name, str(max)) + raise SfaInvalidArgument("%s must be < %s" % (name, str(max))) # If a list with particular types of items is expected if isinstance(expected, (list, tuple, set)):