from sfa.util.sfalogging import logger
except:
import logging
- logger=logging.getLogger('sfaprotocol')
+ logger=logging.getLogger('sfaserverproxy')
##
# ServerException, ExceptionUnmarshaller
logger.debug ("xml-rpc %s method:%s"%(self.url,attr))
return xmlrpclib.ServerProxy.__getattr__(self, attr)
-def server_proxy(url, key_file, cert_file, timeout=None, verbose=False):
- transport = XMLRPCTransport(key_file, cert_file, timeout)
- return XMLRPCServerProxy(url, transport, allow_none=True, verbose=verbose)
+########## the object on which we can send methods that get sent over xmlrpc
+class SfaServerProxy:
+
+ def __init__ (self, url, keyfile, certfile, verbose=False, timeout=None):
+ self.url=url
+ self.keyfile=keyfile
+ self.certfile=certfile
+ self.verbose=verbose
+ self.timeout=timeout
+ # an instance of xmlrpclib.ServerProxy
+ transport = XMLRPCTransport(keyfile, certfile, timeout)
+ self.serverproxy = XMLRPCServerProxy(url, transport, allow_none=True, verbose=verbose)
+
+ # this is python magic to return the code to run when
+ # SfaServerProxy receives a method call
+ # so essentially we send the same method with identical arguments
+ # to the server_proxy object
+ def __getattr__(self, name):
+ def func(*args, **kwds):
+ return getattr(self.serverproxy, name)(*args, **kwds)
+ return func