undo attempts made for python-2.7 as they're broken
[sfa.git] / sfa / util / xmlrpcprotocol.py
index 58b19e2..67d6d62 100644 (file)
@@ -1,7 +1,9 @@
-# XMLRPC-specific code for GeniClient
+# XMLRPC-specific code for SFA Client
 
 import xmlrpclib
 
+from sfa.util.sfalogging import sfa_logger
+
 ##
 # ServerException, ExceptionUnmarshaller
 #
@@ -33,22 +35,39 @@ class XMLRPCTransport(xmlrpclib.Transport):
         host, extra_headers, x509 = self.get_host_info(host)
         try:
             HTTPS = httplib.HTTPS()
+# xxx sfa-1.0-10-broken - non-working attempt for python-2.7
+#            HTTPS = httplib.HTTPSConnection(host, None)
         except AttributeError:
             raise NotImplementedError(
                 "your version of httplib doesn't support HTTPS"
                 )
         else:
             return httplib.HTTPS(host, None, key_file=self.key_file, cert_file=self.cert_file) #**(x509 or {}))
+# xxx sfa-1.0-10-broken - non-working attempt for python-2.7
+#            return httplib.HTTPSConnection(host, None, key_file=self.key_file, cert_file=self.cert_file) #**(x509 or {}))
 
     def getparser(self):
         unmarshaller = ExceptionUnmarshaller()
         parser = xmlrpclib.ExpatParser(unmarshaller)
         return parser, unmarshaller
 
-def get_server(url, key_file, cert_file):
+class XMLRPCServerProxy(xmlrpclib.ServerProxy):
+    def __init__(self, url, transport, allow_none=True, options=None):
+        verbose = False
+        if options and options.debug:
+            verbose = True
+        sfa_logger().info ("Connecting to xmlrpcserver at %s (with verbose=%s)"%(url,verbose))
+        xmlrpclib.ServerProxy.__init__(self, url, transport, allow_none=allow_none, verbose=verbose)
+
+    def __getattr__(self, attr):
+        sfa_logger().info ("Calling xml-rpc method:%s"%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)
+    return XMLRPCServerProxy(url, transport, allow_none=True, options=options)