Deprecation warnings for old management functions

This commit is contained in:
Adam Holmberg
2015-02-10 14:52:21 -06:00
parent 44f061c3b1
commit cfd8091b47

View File

@@ -16,6 +16,7 @@ from collections import namedtuple
import json import json
import logging import logging
import six import six
import warnings
from cassandra.metadata import KeyspaceMetadata from cassandra.metadata import KeyspaceMetadata
from cassandra.cqlengine import SizeTieredCompactionStrategy, LeveledCompactionStrategy from cassandra.cqlengine import SizeTieredCompactionStrategy, LeveledCompactionStrategy
@@ -33,6 +34,55 @@ log = logging.getLogger(__name__)
schema_columnfamilies = NamedTable('system', 'schema_columnfamilies') schema_columnfamilies = NamedTable('system', 'schema_columnfamilies')
def create_keyspace(name, strategy_class, replication_factor, durable_writes=True, **replication_values):
"""
*Deprecated - use :func:`create_keyspace_simple` or :func:`create_keyspace_network_topology` instead*
Creates a keyspace
If the keyspace already exists, it will not be modified.
**This function should be used with caution, especially in production environments.
Take care to execute schema modifications in a single context (i.e. not concurrently with other clients).**
*There are plans to guard schema-modifying functions with an environment-driven conditional.*
:param str name: name of keyspace to create
:param str strategy_class: keyspace replication strategy class (:attr:`~.SimpleStrategy` or :attr:`~.NetworkTopologyStrategy`
:param int replication_factor: keyspace replication factor, used with :attr:`~.SimpleStrategy`
:param bool durable_writes: Write log is bypassed if set to False
:param \*\*replication_values: Additional values to ad to the replication options map
"""
msg = "Deprecated. Use create_keyspace_simple or create_keyspace_network_topology instead"
warnings.warn(msg, DeprecationWarning)
log.warn(msg)
cluster = get_cluster()
if name not in cluster.metadata.keyspaces:
# try the 1.2 method
replication_map = {
'class': strategy_class,
'replication_factor': replication_factor
}
replication_map.update(replication_values)
if strategy_class.lower() != 'simplestrategy':
# Although the Cassandra documentation states for `replication_factor`
# that it is "Required if class is SimpleStrategy; otherwise,
# not used." we get an error if it is present.
replication_map.pop('replication_factor', None)
query = """
CREATE KEYSPACE {}
WITH REPLICATION = {}
""".format(name, json.dumps(replication_map).replace('"', "'"))
if strategy_class != 'SimpleStrategy':
query += " AND DURABLE_WRITES = {}".format('true' if durable_writes else 'false')
execute(query)
def create_keyspace_simple(name, replication_factor, durable_writes=True): def create_keyspace_simple(name, replication_factor, durable_writes=True):
""" """
Creates a keyspace with SimpleStrategy for replica placement Creates a keyspace with SimpleStrategy for replica placement
@@ -80,6 +130,11 @@ def _create_keyspace(name, durable_writes, strategy_class, strategy_options):
else: else:
log.info("Not creating keyspace %s because it already exists", name) log.info("Not creating keyspace %s because it already exists", name)
def delete_keyspace(name):
msg = "Deprecated. Use drop_keyspace instead"
warnings.warn(msg, DeprecationWarning)
log.warn(msg)
drop_keyspace(name)
def drop_keyspace(name): def drop_keyspace(name):
""" """