# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2006 The Trustees of Princeton University
#
-# $Id$
-# $URL$
-#
-
import xmlrpclib
from types import *
import textwrap
from PLC.Faults import *
from PLC.Parameter import Parameter, Mixed, python_type, xmlrpc_type
from PLC.Auth import Auth
-from PLC.Debug import profile, log
+from PLC.Debug import profile
from PLC.Events import Event, Events
from PLC.Nodes import Node, Nodes
from PLC.Persons import Person, Persons
return True
- def __init__(self, api):
+ def __init__(self, api,caller=None):
self.name = self.__class__.__name__
self.api = api
- # Auth may set this to a Person instance (if an anonymous
- # method, will remain None).
- self.caller = None
+ if caller:
+ # let a method call another one by propagating its caller
+ self.caller=caller
+ else:
+ # Auth may set this to a Person instance (if an anonymous
+ # method, will remain None).
+ self.caller = None
+
# API may set this to a (addr, port) tuple if known
self.source = None
start = time.time()
# legacy code cannot be type-checked, due to the way Method.args() works
- if not hasattr(self,"skip_typecheck"):
+ # as of 5.0-rc16 we don't use skip_type_check anymore
+ if not hasattr(self,"skip_type_check"):
(min_args, max_args, defaults) = self.args()
# Check that the right number of arguments were passed in