You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2011/02/08 18:46:34 UTC

svn commit: r1068492 - in /cassandra/trunk/drivers/py/cql: connection.py connection_pool.py

Author: eevans
Date: Tue Feb  8 17:46:34 2011
New Revision: 1068492

URL: http://svn.apache.org/viewvc?rev=1068492&view=rev
Log:
authentication for Java CQL driver

Patch by eevans for CASSANDRA-1708

Modified:
    cassandra/trunk/drivers/py/cql/connection.py
    cassandra/trunk/drivers/py/cql/connection_pool.py

Modified: cassandra/trunk/drivers/py/cql/connection.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/connection.py?rev=1068492&r1=1068491&r2=1068492&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/connection.py (original)
+++ cassandra/trunk/drivers/py/cql/connection.py Tue Feb  8 17:46:34 2011
@@ -25,7 +25,7 @@ import zlib
 try:
     from cassandra import Cassandra
     from cassandra.ttypes import Compression, InvalidRequestException, \
-                                 CqlResultType
+                                 CqlResultType, AuthenticationRequest
 except ImportError:
     # Hack to run from a source tree
     import sys
@@ -38,7 +38,7 @@ except ImportError:
                          'gen-py'))
     from cassandra import Cassandra
     from cassandra.ttypes import Compression, InvalidRequestException, \
-                          CqlResultType
+                          CqlResultType, AuthenticationRequest
     
 COMPRESSION_SCHEMES = ['GZIP']
 DEFAULT_COMPRESSION = 'GZIP'
@@ -56,13 +56,18 @@ class Connection(object):
     ...     for column in row.columns:
     ...         print "%s is %s years of age" % (r.key, column.age)
     """
-    def __init__(self, host, port=9160, keyspace=None):
+    def __init__(self, host, port=9160, keyspace=None, username=None,
+                 password=None):
         socket = TSocket.TSocket(host, port)
         self.transport = TTransport.TFramedTransport(socket)
         protocol = TBinaryProtocol.TBinaryProtocolAccelerated(self.transport)
         self.client = Cassandra.Client(protocol)
         socket.open()
         
+        if username and password:
+            credentials = {"username": username, "password": password}
+            self.client.login(AuthenticationRequest(credentials=credentials))
+        
         if keyspace:
             self.execute('USE %s;' % keyspace)
 

Modified: cassandra/trunk/drivers/py/cql/connection_pool.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/connection_pool.py?rev=1068492&r1=1068491&r2=1068492&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/connection_pool.py (original)
+++ cassandra/trunk/drivers/py/cql/connection_pool.py Tue Feb  8 17:46:34 2011
@@ -37,26 +37,35 @@ class ConnectionPool(object):
     >>> conn.execute(...)
     >>> pool.return_connection(conn)
     """
-    def __init__(self, hostname, port=9160, keyspace=None, max_conns=25,
-                 max_idle=5, eviction_delay=10000):
+    def __init__(self, hostname, port=9160, keyspace=None, username=None,
+                 password=None, max_conns=25, max_idle=5, eviction_delay=10000):
         self.hostname = hostname
         self.port = port
         self.keyspace = keyspace
+        self.username = username
+        self.password = password
         self.max_conns = max_conns
         self.max_idle = max_idle
         self.eviction_delay = eviction_delay
         
         self.connections = Queue()
-        self.connections.put(Connection(hostname, port, keyspace))
+        self.connections.put(self.__create_connection())
         self.eviction = Eviction(self.connections,
                                  self.max_idle,
                                  self.eviction_delay)
+    
+    def __create_connection(self):
+        return Connection(self.hostname,
+                          port=self.port,
+                          keyspace=self.keyspace,
+                          username=self.username,
+                          password=self.password)
         
     def borrow_connection(self):
         try:
             connection = self.connections.get(block=False)
         except Empty:
-            connection = Connection(self.hostname, self.port, self.keyspace)
+            connection = self.__create_connection()
         return connection
     
     def return_connection(self, connection):