Author: xedin Date: Wed Nov 9 00:01:11 2011 New Revision: 1199556 URL: http://svn.apache.org/viewvc?rev=1199556&view=rev Log: `describe ring` command for CLI patch by Jackson Chung; reviewed by Pavel Yaskevich for CASSANDRA-3220
Modified: cassandra/branches/cassandra-1.0/CHANGES.txt cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/Cli.g cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliClient.java cassandra/branches/cassandra-1.0/src/resources/org/apache/cassandra/cli/CliHelp.yaml Modified: cassandra/branches/cassandra-1.0/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1199556&r1=1199555&r2=1199556&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/CHANGES.txt (original) +++ cassandra/branches/cassandra-1.0/CHANGES.txt Wed Nov 9 00:01:11 2011 @@ -14,6 +14,7 @@ Merged from 0.8: * Revert CASSANDRA-2855 * Fix bug preventing the use of efficient cross-DC writes (CASSANDRA-3472) * Report compression ratio in CFSMBean (CASSANDRA-3393) + * `describe ring` command for CLI (CASSANDRA-3220) 1.0.2 * "defragment" rows for name-based queries under STCS (CASSANDRA-2503) Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/Cli.g URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/Cli.g?rev=1199556&r1=1199555&r2=1199556&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/Cli.g (original) +++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/Cli.g Wed Nov 9 00:01:11 2011 @@ -63,6 +63,7 @@ tokens { NODE_ASSUME; NODE_CONSISTENCY_LEVEL; NODE_DROP_INDEX; + NODE_DESCRIBE_RING; // Internal Nodes. NODE_COLUMN_ACCESS; @@ -163,6 +164,7 @@ statement | assumeStatement | consistencyLevelStatement | dropIndex + | describeRing | -> ^(NODE_NO_OP) ; @@ -210,6 +212,8 @@ helpStatement -> ^(NODE_HELP NODE_DEL_COLUMN_FAMILY) | HELP DROP INDEX -> ^(NODE_HELP NODE_DROP_INDEX) + | HELP DESCRIBE RING + -> ^(NODE_HELP NODE_DESCRIBE_RING) | HELP GET -> ^(NODE_HELP NODE_THRIFT_GET) | HELP SET @@ -350,6 +354,11 @@ dropIndex -> ^(NODE_DROP_INDEX columnFamily columnName) ; +describeRing + : DESCRIBE RING (keyspace)? + -> ^(NODE_DESCRIBE_RING (keyspace)?) + ; + showVersion : SHOW API_VERSION -> ^(NODE_SHOW_VERSION) @@ -580,6 +589,7 @@ CONSISTENCYLEVEL: 'CONSISTENCYLEVEL'; INDEX: 'INDEX'; ON: 'ON'; SCHEMA: 'SCHEMA'; +RING: 'RING'; IP_ADDRESS : IntegerPositiveLiteral '.' IntegerPositiveLiteral '.' IntegerPositiveLiteral '.' IntegerPositiveLiteral Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliClient.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliClient.java?rev=1199556&r1=1199555&r2=1199556&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliClient.java (original) +++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliClient.java Wed Nov 9 00:01:11 2011 @@ -284,6 +284,9 @@ public class CliClient case CliParser.NODE_DROP_INDEX: executeDropIndex(tree); break; + case CliParser.NODE_DESCRIBE_RING: + executeDescribeRing(tree); + break; case CliParser.NODE_NO_OP: // comment lines come here; they are treated as no ops. @@ -1430,6 +1433,59 @@ public class CliClient keyspacesMap.put(keySpace, thriftClient.describe_keyspace(keySpace)); } + private void executeDescribeRing(Tree statement) throws TException, InvalidRequestException + { + if (!CliMain.isConnected()) + return; + + int argCount = statement.getChildCount(); + + if (argCount > 1) // in case somebody changes Cli grammar + throw new RuntimeException("`describe ring` command takes maximum one argument. See `help describe ring;`"); + + KsDef currentKeySpace = keyspacesMap.get(keySpace); + + if (argCount == 0 && currentKeySpace != null) + { + describeRing(currentKeySpace.name); + } + else if (argCount == 1) + { + String entityName = statement.getChild(0).getText(); + KsDef inputKsDef = CliUtils.getKeySpaceDef(entityName, thriftClient.describe_keyspaces()); + + if (inputKsDef == null) + { + sessionState.out.println("Sorry, no Keyspace was found with name: " + entityName); + return; + } + + describeRing(inputKsDef.name); + } + else + { + sessionState.out.println("Authenticate to a Keyspace before using `describe ring` or `describe ring <keyspace>`"); + } + } + + private void describeRing(String name) throws TException + { + List<TokenRange> tokenRangeList; + + try + { + for (TokenRange tokenRange : thriftClient.describe_ring(name)) + sessionState.out.println(tokenRange); + } + catch (InvalidRequestException e) + { + sessionState.err.println(e.getWhy()); + + if (sessionState.debug) + e.printStackTrace(); + } + } + // TRUNCATE <columnFamily> private void executeTruncate(String columnFamily) throws TException, InvalidRequestException, UnavailableException { Modified: cassandra/branches/cassandra-1.0/src/resources/org/apache/cassandra/cli/CliHelp.yaml URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/resources/org/apache/cassandra/cli/CliHelp.yaml?rev=1199556&r1=1199555&r2=1199556&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/resources/org/apache/cassandra/cli/CliHelp.yaml (original) +++ cassandra/branches/cassandra-1.0/src/resources/org/apache/cassandra/cli/CliHelp.yaml Wed Nov 9 00:01:11 2011 @@ -40,6 +40,7 @@ help: | create keyspace Add a keyspace to the cluster. del Delete a column, super column or row. decr Decrements a counter column. + describe ring Describe the token range information. describe cluster Describe the cluster configuration. describe Describe a keyspace and it's column families or column family in current keyspace. drop column family Remove a column family and it's data. @@ -132,6 +133,18 @@ commands: describe; - Describes current authenticated keyspace describe <keyspace>; - Describe this keyspace describe <column_family>; - Describe the colum family in the current authenticated keyspace + - name: NODE_DESCRIBE_RING + help: | + describe ring <keyspace>; + + Describes the token range settings for the named keyspace. + + Optional Parameters: + - keyspace: Name of the keyspace to describe. + + Examples: + describe ring; - Describes the token range settings for the current authenticated keyspace + describe <keyspace>; - Describe the token range settings for this keyspace - name: help: | describe cluster;