on client (sfi.py), when verbose flag is given print xml-rpc method calls.
authorBarış Metin <Talip-Baris.Metin@sophia.inria.fr>
Mon, 4 Oct 2010 16:17:24 +0000 (18:17 +0200)
committerBarış Metin <Talip-Baris.Metin@sophia.inria.fr>
Mon, 4 Oct 2010 16:17:24 +0000 (18:17 +0200)
sfa/client/sfi.py
sfa/util/xmlrpcprotocol.py

index f3b8490..3d9c0f1 100755 (executable)
@@ -310,9 +310,9 @@ class Sfi:
        self.cert = Certificate(filename=cert_file) 
        # Establish connection to server(s)
        if self.options.verbose : print "Contacting Registry at:", reg_url
-       self.registry = xmlrpcprotocol.get_server(reg_url, key_file, cert_file, self.options.debug)  
+       self.registry = xmlrpcprotocol.get_server(reg_url, key_file, cert_file, self.options)  
        if self.options.verbose : print "Contacting Slice Manager at:", sm_url
-       self.slicemgr = xmlrpcprotocol.get_server(sm_url, key_file, cert_file, self.options.debug)
+       self.slicemgr = xmlrpcprotocol.get_server(sm_url, key_file, cert_file, self.options)
 
        return
     
@@ -495,14 +495,14 @@ class Sfi:
         record = records[0]
   
         return self.get_server(record['hostname'], CM_PORT, self.key_file, \
-                               self.cert_file, self.options.debug)
+                               self.cert_file, self.options)
  
-    def get_server(self, host, port, keyfile, certfile, debug):
+    def get_server(self, host, port, keyfile, certfile):
         """
         Return an instnace of an xmlrpc server connection    
         """
         url = "http://%s:%s" % (host, port)
-        return xmlrpcprotocol.get_server(url, keyfile, certfile, debug)
+        return xmlrpcprotocol.get_server(url, keyfile, certfile, self.options)
 
     def get_server_from_opts(self, opts):
         """
@@ -512,8 +512,7 @@ class Sfi:
         server = self.slicemgr
         # direct connection to an aggregate
         if hasattr(opts, 'aggregate') and opts.aggregate:
-            server = self.get_server(opts.aggregate, opts.port, self.key_file, \
-                                     self.cert_file, self.options.debug)
+            server = self.get_server(opts.aggregate, opts.port, self.key_file, self.cert_file)
         # direct connection to the nodes component manager interface
         if hasattr(opts, 'component') and opts.component:
             server = self.get_component_server_from_hrn(opts.component)    
index 11a4317..d759973 100644 (file)
@@ -45,10 +45,24 @@ class XMLRPCTransport(xmlrpclib.Transport):
         parser = xmlrpclib.ExpatParser(unmarshaller)
         return parser, unmarshaller
 
-def get_server(url, key_file, cert_file, debug=False):
+class XMLRPCServerProxy(xmlrpclib.ServerProxy):
+    def __init__(self, url, transport, allow_none=True, options=None):
+        self.options = options
+        verbose = False
+        if self.options and self.options.debug:
+            verbose = True
+        xmlrpclib.ServerProxy.__init__(self, url, transport, allow_none=allow_none, verbose=verbose)
+
+    def __getattr__(self, attr):
+        if self.options.verbose:
+            print "Calling xml-rpc method:", attr
+        return xmlrpclib.ServerProxy.__getattr__(self, attr)
+
+
+def get_server(url, key_file, cert_file, options=None):
     transport = XMLRPCTransport()
     transport.key_file = key_file
     transport.cert_file = cert_file
 
-    return xmlrpclib.ServerProxy(url, transport, allow_none=True, verbose=debug)
+    return XMLRPCServerProxy(url, transport, allow_none=True, options=options)