X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Fmethod.py;h=4c37c6766c1d32f30f78aded391921f4c1fa1817;hb=8d1e057a4da2ae30f93b3fd4e5ac7b05d0c42bdf;hp=125629d07111c72a16ba73262b017860169ed26b;hpb=cb83b38f6586314d51e23dad227047d126bd4b76;p=sfa.git diff --git a/sfa/util/method.py b/sfa/util/method.py index 125629d0..4c37c676 100644 --- a/sfa/util/method.py +++ b/sfa/util/method.py @@ -3,9 +3,6 @@ # # -### $Id$ -### $URL$ - import os, time from types import * from types import StringTypes @@ -14,13 +11,12 @@ import textwrap import xmlrpclib -from sfa.util.sfalogging import sfa_logger +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 -# we inherit object because we use new-style classes for legacy methods -class Method (object): +class Method: """ Base class for all SfaAPI functions. At a minimum, all SfaAPI functions must define: @@ -48,10 +44,8 @@ class Method (object): def call(self, *args): """ Method body for all SfaAPI functions. Must override. - """ - - return True + return None def __init__(self, api): self.name = self.__class__.__name__ @@ -76,23 +70,23 @@ class Method (object): if not self.api.interface or self.api.interface not in self.interfaces: raise SfaInvalidAPIMethod(methodname, self.api.interface) - # legacy code cannot be type-checked, due to the way Method.args() works - if not hasattr(self,"skip_typecheck"): - (min_args, max_args, defaults) = self.args() - - # Check that the right number of arguments were passed in - if len(args) < len(min_args) or len(args) > len(max_args): - raise SfaInvalidArgumentCount(len(args), len(min_args), len(max_args)) + (min_args, max_args, defaults) = self.args() + + # Check that the right number of arguments were passed in + if len(args) < len(min_args) or len(args) > len(max_args): + raise SfaInvalidArgumentCount(len(args), len(min_args), len(max_args)) - for name, value, expected in zip(max_args, args, self.accepts): - self.type_check(name, value, expected, args) + 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)) result = self.call(*args, **kwds) - runtime = time.time() - start + runtime = time.time() - start if self.api.config.SFA_API_DEBUG or hasattr(self, 'message'): - msg=getattr(self,'message',"method %s completed in %02f s"%(methodname,runtime)) - sfa_logger().debug(msg) + logger.debug("method.__call__ [%s] : END %s in %02f s (%s)"%\ + (self.api.interface,methodname,runtime,getattr(self,'message',"[no-msg]"))) return result @@ -103,7 +97,7 @@ class Method (object): # Prepend caller and method name to expected faults fault.faultString = caller + ": " + self.name + ": " + fault.faultString runtime = time.time() - start - sfa_logger().log_exc("Method %s raised an exception"%self.name) + logger.log_exc("Method %s raised an exception"%self.name) raise fault