X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=safexmlrpc.py;h=2392c0dffecd785fbd975c192a355de921bd5dca;hb=9e6b9c1ea9e020c55c85b433bac47231d63e9ffd;hp=71799ff2e2169e4e72d9bee610e078c73a05102d;hpb=347202d6aab0acc9126767ceaf89df28a29a82ad;p=nodemanager.git diff --git a/safexmlrpc.py b/safexmlrpc.py index 71799ff..2392c0d 100644 --- a/safexmlrpc.py +++ b/safexmlrpc.py @@ -1,26 +1,28 @@ """Leverage curl to make XMLRPC requests that check the server's credentials.""" -import curlwrapper import xmlrpclib +import curlwrapper + + +class CertificateCheckingSafeTransport (xmlrpclib.Transport): -class CertificateCheckingSafeTransport(xmlrpclib.Transport): def __init__(self, cacert, timeout): self.cacert = cacert self.timeout = timeout def request(self, host, handler, request_body, verbose=0): self.verbose = verbose - try: - contents = curlwrapper.retrieve('https://%s%s' % (host, handler), - cacert = self.cacert, - postdata = request_body, - timeout = self.timeout) - return xmlrpclib.loads(contents)[0] - except curlwrapper.CurlException, e: - raise xmlrpclib.ProtocolError(host + handler, -1, str(e), '') + url='https://%s%s' % (host, handler) + # this might raise an xmlrpclib.Protocolerror exception + contents = curlwrapper.retrieve(url, + cacert = self.cacert, + postdata = request_body, + timeout = self.timeout) + return xmlrpclib.loads(contents)[0] class ServerProxy(xmlrpclib.ServerProxy): + def __init__(self, uri, cacert, timeout = 300, **kwds): xmlrpclib.ServerProxy.__init__(self, uri, CertificateCheckingSafeTransport(cacert, timeout),