Merge branch 'system-keyspace-cl-one' of https://github.com/dokai/cqlengine into system-keyspace-cl-one

This commit is contained in:
Jon Haddad
2013-12-11 16:24:12 -08:00
5 changed files with 23 additions and 16 deletions

View File

@@ -1,6 +1,7 @@
import json import json
import warnings import warnings
from cqlengine import SizeTieredCompactionStrategy, LeveledCompactionStrategy from cqlengine import SizeTieredCompactionStrategy, LeveledCompactionStrategy
from cqlengine import ONE
from cqlengine.named import NamedTable from cqlengine.named import NamedTable
from cqlengine.connection import connection_manager, execute from cqlengine.connection import connection_manager, execute
@@ -28,7 +29,7 @@ def create_keyspace(name, strategy_class='SimpleStrategy', replication_factor=3,
:param **replication_values: 1.2 only, additional values to ad to the replication data map :param **replication_values: 1.2 only, additional values to ad to the replication data map
""" """
with connection_manager() as con: with connection_manager() as con:
_, keyspaces = con.execute("""SELECT keyspace_name FROM system.schema_keyspaces""", {}) _, keyspaces = con.execute("""SELECT keyspace_name FROM system.schema_keyspaces""", {}, ONE)
if name not in [r[0] for r in keyspaces]: if name not in [r[0] for r in keyspaces]:
#try the 1.2 method #try the 1.2 method
replication_map = { replication_map = {
@@ -55,7 +56,7 @@ def create_keyspace(name, strategy_class='SimpleStrategy', replication_factor=3,
def delete_keyspace(name): def delete_keyspace(name):
with connection_manager() as con: with connection_manager() as con:
_, keyspaces = con.execute("""SELECT keyspace_name FROM system.schema_keyspaces""", {}) _, keyspaces = con.execute("""SELECT keyspace_name FROM system.schema_keyspaces""", {}, ONE)
if name in [r[0] for r in keyspaces]: if name in [r[0] for r in keyspaces]:
execute("DROP KEYSPACE {}".format(name)) execute("DROP KEYSPACE {}".format(name))
@@ -80,7 +81,8 @@ def sync_table(model, create_missing_keyspace=True):
with connection_manager() as con: with connection_manager() as con:
tables = con.execute( tables = con.execute(
"SELECT columnfamily_name from system.schema_columnfamilies WHERE keyspace_name = :ks_name", "SELECT columnfamily_name from system.schema_columnfamilies WHERE keyspace_name = :ks_name",
{'ks_name': ks_name} {'ks_name': ks_name},
ONE
) )
tables = [x[0] for x in tables.results] tables = [x[0] for x in tables.results]
@@ -115,7 +117,8 @@ def sync_table(model, create_missing_keyspace=True):
with connection_manager() as con: with connection_manager() as con:
_, idx_names = con.execute( _, idx_names = con.execute(
"SELECT index_name from system.\"IndexInfo\" WHERE table_name=:table_name", "SELECT index_name from system.\"IndexInfo\" WHERE table_name=:table_name",
{'table_name': raw_cf_name} {'table_name': raw_cf_name},
ONE
) )
idx_names = [i[0] for i in idx_names] idx_names = [i[0] for i in idx_names]
@@ -230,14 +233,15 @@ def get_fields(model):
logger.debug("get_fields %s %s", ks_name, col_family) logger.debug("get_fields %s %s", ks_name, col_family)
tmp = con.execute(query, {'ks_name':ks_name, 'col_family':col_family}) tmp = con.execute(query, {'ks_name': ks_name, 'col_family': col_family}, ONE)
return [Field(x[0], x[1]) for x in tmp.results] return [Field(x[0], x[1]) for x in tmp.results]
# convert to Field named tuples # convert to Field named tuples
def get_table_settings(model): def get_table_settings(model):
return schema_columnfamilies.get(keyspace_name=model._get_keyspace(), return schema_columnfamilies.objects.consistency(ONE).get(
columnfamily_name=model.column_family_name(include_keyspace=False)) keyspace_name=model._get_keyspace(),
columnfamily_name=model.column_family_name(include_keyspace=False))
def update_compaction(model): def update_compaction(model):
@@ -282,7 +286,8 @@ def drop_table(model):
with connection_manager() as con: with connection_manager() as con:
_, tables = con.execute( _, tables = con.execute(
"SELECT columnfamily_name from system.schema_columnfamilies WHERE keyspace_name = :ks_name", "SELECT columnfamily_name from system.schema_columnfamilies WHERE keyspace_name = :ks_name",
{'ks_name': ks_name} {'ks_name': ks_name},
ONE
) )
raw_cf_name = model.column_family_name(include_keyspace=False) raw_cf_name = model.column_family_name(include_keyspace=False)
if raw_cf_name not in [t[0] for t in tables]: if raw_cf_name not in [t[0] for t in tables]:

View File

@@ -320,6 +320,11 @@ class AbstractQuerySet(object):
def all(self): def all(self):
return copy.deepcopy(self) return copy.deepcopy(self)
def consistency(self, consistency):
clone = copy.deepcopy(self)
clone._consistency = consistency
return clone
def _parse_filter_arg(self, arg): def _parse_filter_arg(self, arg):
""" """
Parses a filter arg in the format: Parses a filter arg in the format:
@@ -628,11 +633,6 @@ class ModelQuerySet(AbstractQuerySet):
clone._flat_values_list = flat clone._flat_values_list = flat
return clone return clone
def consistency(self, consistency):
clone = copy.deepcopy(self)
clone._consistency = consistency
return clone
def ttl(self, ttl): def ttl(self, ttl):
clone = copy.deepcopy(self) clone = copy.deepcopy(self)
clone._ttl = ttl clone._ttl = ttl

View File

@@ -2,6 +2,7 @@ from unittest import TestCase
from cql import OperationalError from cql import OperationalError
from mock import MagicMock, patch, Mock from mock import MagicMock, patch, Mock
from cqlengine import ONE
from cqlengine.connection import ConnectionPool, Host from cqlengine.connection import ConnectionPool, Host
@@ -18,4 +19,4 @@ class OperationalErrorLoggingTest(TestCase):
with patch.object(p, 'get', return_value=MockConnection()): with patch.object(p, 'get', return_value=MockConnection()):
with self.assertRaises(OperationalError): with self.assertRaises(OperationalError):
p.execute("select * from system.peers", {}) p.execute("select * from system.peers", {}, ONE)

View File

@@ -1,5 +1,6 @@
from mock import MagicMock, patch from mock import MagicMock, patch
from cqlengine import ONE
from cqlengine.exceptions import CQLEngineException from cqlengine.exceptions import CQLEngineException
from cqlengine.management import create_table, delete_table, get_fields from cqlengine.management import create_table, delete_table, get_fields
from cqlengine.tests.base import BaseCassEngTestCase from cqlengine.tests.base import BaseCassEngTestCase
@@ -22,7 +23,7 @@ class ConnectionPoolFailoverTestCase(BaseCassEngTestCase):
with patch('cqlengine.connection.cql.connect') as mock: with patch('cqlengine.connection.cql.connect') as mock:
mock.side_effect=CQLEngineException mock.side_effect=CQLEngineException
with self.assertRaises(CQLEngineException): with self.assertRaises(CQLEngineException):
self.pool.execute("select * from system.peers", {}) self.pool.execute("select * from system.peers", {}, ONE)
def test_dead_node(self): def test_dead_node(self):
""" """

View File

@@ -18,7 +18,7 @@ Cassandra CQL 3 Object Mapper for Python
setup( setup(
name='cqlengine', name='cqlengine',
version=version, version='0.9.2-2951ba35de1fc7213121a9b45b7ff679d543c5d3',
description='Cassandra CQL 3 Object Mapper for Python', description='Cassandra CQL 3 Object Mapper for Python',
long_description=long_desc, long_description=long_desc,
classifiers = [ classifiers = [