From 7b93cbea11f07f1cfac1a819411484ac12d21422 Mon Sep 17 00:00:00 2001 From: Frank-Robert Kline Date: Fri, 29 May 2015 10:07:50 -0700 Subject: [PATCH] adds ssl support with TSSLSocket compatible with existing by default --- pyhs2/connections.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pyhs2/connections.py b/pyhs2/connections.py index 2291479..881ae21 100644 --- a/pyhs2/connections.py +++ b/pyhs2/connections.py @@ -2,6 +2,7 @@ from thrift.protocol.TBinaryProtocol import TBinaryProtocol from thrift.transport.TSocket import TSocket +from thrift.transport.TSSLSocket import TSSLSocket from thrift.transport.TTransport import TBufferedTransport import sasl from cloudera.thrift_sasl import TSaslClientTransport @@ -16,7 +17,7 @@ class Connection(object): client = None session = None - def __init__(self, host=None, port=10000, authMechanism=None, user=None, password=None, database=None, configuration=None, timeout=None): + def __init__(self, host=None, port=10000, authMechanism=None, user=None, password=None, database=None, configuration=None, timeout=None, ssl=False, ssl_validate=True): authMechanisms = set(['NOSASL', 'PLAIN', 'KERBEROS', 'LDAP']) if authMechanism not in authMechanisms: raise NotImplementedError('authMechanism is either not supported or not implemented') @@ -24,7 +25,11 @@ def __init__(self, host=None, port=10000, authMechanism=None, user=None, passwor #Open issue with python-sasl if authMechanism == 'PLAIN' and (password is None or len(password) == 0): password = 'password' - socket = TSocket(host, port) + socket = None + if ssl: + socket = TSSLSocket(host, port, ssl_validate) + else: + socket = TSocket(host, port) socket.setTimeout(timeout) if authMechanism == 'NOSASL': transport = TBufferedTransport(socket) @@ -75,4 +80,4 @@ def cursor(self): def close(self): req = TCloseSessionReq(sessionHandle=self.session) - self.client.CloseSession(req) \ No newline at end of file + self.client.CloseSession(req)