X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=safexmlrpc.py;h=71bf4d62d478d17516d177f3952328cb785c4abd;hb=48a73b18fd7daed13c645c1adeddb57b560e7a2d;hp=7961a7570cd096bbfce4cba572aea5ae1b38ef5f;hpb=906866e3163a156c4e64ae871b08f599168c33f3;p=nodemanager.git diff --git a/safexmlrpc.py b/safexmlrpc.py index 7961a75..71bf4d6 100644 --- a/safexmlrpc.py +++ b/safexmlrpc.py @@ -1,10 +1,12 @@ """Leverage curl to make XMLRPC requests that check the server's credentials.""" +import xmlrpc.client + import curlwrapper -import xmlrpclib -class CertificateCheckingSafeTransport(xmlrpclib.Transport): +class CertificateCheckingSafeTransport (xmlrpc.client.Transport): + def __init__(self, cacert, timeout): self.cacert = cacert self.timeout = timeout @@ -12,19 +14,16 @@ class CertificateCheckingSafeTransport(xmlrpclib.Transport): def request(self, host, handler, request_body, verbose=0): self.verbose = verbose url='https://%s%s' % (host, handler) - try: - contents = curlwrapper.retrieve(url, - cacert = self.cacert, - postdata = request_body, - timeout = self.timeout) - return xmlrpclib.loads(contents)[0] - except curlwrapper.CurlException, e: - # when this triggers, the error sometimes doesn't get printed - print 'CertificateCheckingSafeTransport.request: Catching curlwrapper.CurlException with error <%s>'%str(e) - raise xmlrpclib.ProtocolError(url, -1, str(e), request_body) - -class ServerProxy(xmlrpclib.ServerProxy): + # this might raise an xmlrpclib.Protocolerror exception + contents = curlwrapper.retrieve(url, + cacert = self.cacert, + postdata = request_body, + timeout = self.timeout) + return xmlrpc.client.loads(contents)[0] + +class ServerProxy(xmlrpc.client.ServerProxy): + def __init__(self, uri, cacert, timeout = 300, **kwds): - xmlrpclib.ServerProxy.__init__(self, uri, + xmlrpc.client.ServerProxy.__init__(self, uri, CertificateCheckingSafeTransport(cacert, timeout), **kwds)