From f0fcc4cd87337bd507dfea1fad80440aa4789baa Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Tue, 9 Oct 2012 09:35:45 -0500 Subject: [PATCH] Revert "cqlsh: add thrift transport factory" This reverts commit 3f31642c39b458ee221e2e1194f3f550555c7688. --- bin/cqlsh | 43 ++++-------------- ...-4610.zip => cql-internal-only-1.0.10.zip} | Bin 70392 -> 68142 bytes pylib/cqlshlib/tfactory.py | 32 ------------- 3 files changed, 9 insertions(+), 66 deletions(-) rename lib/{cql-internal-only-1.0.10-4610.zip => cql-internal-only-1.0.10.zip} (69%) delete mode 100644 pylib/cqlshlib/tfactory.py diff --git a/bin/cqlsh b/bin/cqlsh index c242cf9f4b..f984618d41 100755 --- a/bin/cqlsh +++ b/bin/cqlsh @@ -32,7 +32,7 @@ exit 1 from __future__ import with_statement description = "CQL Shell for Apache Cassandra" -version = "2.3.0" +version = "2.2.0" from StringIO import StringIO from itertools import groupby @@ -112,7 +112,6 @@ HISTORY = os.path.expanduser(os.path.join('~', '.cqlsh_history')) DEFAULT_HOST = 'localhost' DEFAULT_PORT = 9160 DEFAULT_CQLVER = '2' -DEFAULT_TRANSPORT_FACTORY = 'cqlshlib.tfactory.regular_transport_factory' epilog = """Connects to %(DEFAULT_HOST)s:%(DEFAULT_PORT)d by default. These defaults can be changed by setting $CQLSH_HOST and/or $CQLSH_PORT. When a @@ -129,9 +128,8 @@ parser.add_option("--no-color", action='store_false', dest='color', parser.add_option("-u", "--username", help="Authenticate as user.") parser.add_option("-p", "--password", help="Authenticate using password.") parser.add_option('-k', '--keyspace', help='Authenticate to the given keyspace.') -parser.add_option("-f", "--file", help="Execute commands from FILE, then exit") -parser.add_option("-t", "--transport-factory", - help="Use the provided Thrift transport factory function.") +parser.add_option("-f", "--file", + help="Execute commands from FILE, then exit") parser.add_option('--debug', action='store_true', help='Show additional debugging information') parser.add_option('--cqlversion', default=DEFAULT_CQLVER, @@ -559,22 +557,19 @@ class Shell(cmd.Cmd): csv_dialect_defaults = dict(delimiter=',', doublequote=False, escapechar='\\', quotechar='"') - def __init__(self, hostname, port, transport_factory, color=False, - username=None, password=None, encoding=None, stdin=None, tty=True, + def __init__(self, hostname, port, color=False, username=None, + password=None, encoding=None, stdin=None, tty=True, completekey='tab', use_conn=None, cqlver=None, keyspace=None): cmd.Cmd.__init__(self, completekey=completekey) self.hostname = hostname self.port = port - self.transport_factory = transport_factory self.username = username self.password = password self.keyspace = keyspace if use_conn is not None: self.conn = use_conn else: - transport = transport_factory(hostname, port, os.environ, CONFIG_FILE) - self.conn = cql.connect(hostname, port, user=username, password=password, - transport=transport) + self.conn = cql.connect(hostname, port, user=username, password=password) self.set_expanded_cql_version(cqlver) # we could set the keyspace through cql.connect(), but as of 1.0.10, # it doesn't quote the keyspace for USE :( @@ -1799,9 +1794,9 @@ class Shell(cmd.Cmd): except IOError, e: self.printerr('Could not open %r: %s' % (fname, e)) return - subshell = Shell(self.hostname, self.port, self.transport_factory, - color=self.color, encoding=self.encoding, stdin=f, - tty=False, use_conn=self.conn, cqlver=self.cql_version) + subshell = Shell(self.hostname, self.port, color=self.color, + encoding=self.encoding, stdin=f, tty=False, + use_conn=self.conn, cqlver=self.cql_version) subshell.cmdloop() f.close() @@ -2632,21 +2627,6 @@ def should_use_color(): pass return True -def load_factory(name): - """ - Attempts to load a transport factory function given its fully qualified - name, e.g. "cqlshlib.tfactory.regular_transport_factory" - """ - parts = name.split('.') - module = ".".join(parts[:-1]) - try: - t = __import__(module) - for part in parts[1:]: - t = getattr(t, part) - return t - except (ImportError, AttributeError): - sys.exit("Can't locate transport factory function %s" % name) - def read_options(cmdlineargs, environment): configs = ConfigParser.SafeConfigParser() configs.read(CONFIG_FILE) @@ -2655,8 +2635,6 @@ def read_options(cmdlineargs, environment): optvalues.username = option_with_default(configs.get, 'authentication', 'username') optvalues.password = option_with_default(configs.get, 'authentication', 'password') optvalues.keyspace = option_with_default(configs.get, 'authentication', 'keyspace') - optvalues.transport_factory = option_with_default(configs.get, 'connection', 'factory', - DEFAULT_TRANSPORT_FACTORY) optvalues.completekey = option_with_default(configs.get, 'ui', 'completekey', 'tab') optvalues.color = option_with_default(configs.getboolean, 'ui', 'color') optvalues.debug = False @@ -2680,8 +2658,6 @@ def read_options(cmdlineargs, environment): if options.file is not None: options.tty = False - options.transport_factory = load_factory(options.transport_factory) - if optvalues.color in (True, False): options.color = optvalues.color else: @@ -2749,7 +2725,6 @@ def main(options, hostname, port): try: shell = Shell(hostname, port, - options.transport_factory, color=options.color, username=options.username, password=options.password, diff --git a/lib/cql-internal-only-1.0.10-4610.zip b/lib/cql-internal-only-1.0.10.zip similarity index 69% rename from lib/cql-internal-only-1.0.10-4610.zip rename to lib/cql-internal-only-1.0.10.zip index c98101d1ab8b8269951991c806ac39a3540c50fa..c4ca8f2eb71c1a6a89a5470d006d5a0b47f0c99d 100644 GIT binary patch delta 15332 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