You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/02/10 03:43:32 UTC
svn commit: r1069205 - in
/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli: Cli.g
CliClient.java CliMain.java CliOptions.java CliUserHelp.java
Author: jbellis
Date: Thu Feb 10 02:43:32 2011
New Revision: 1069205
URL: http://svn.apache.org/viewvc?rev=1069205&view=rev
Log:
add cli support for setting username/password at 'connect' command
patch by Pavel Yaskevich; reviewed by thobbs for CASSANDRA-2111
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliMain.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliOptions.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g?rev=1069205&r1=1069204&r2=1069205&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/Cli.g Thu Feb 10 02:43:32 2011
@@ -157,10 +157,10 @@ statement
;
connectStatement
- : CONNECT host '/' port
- -> ^(NODE_CONNECT host port)
- | CONNECT ip_address '/' port
- -> ^(NODE_CONNECT ip_address port)
+ : CONNECT host '/' port (username password)?
+ -> ^(NODE_CONNECT host port (username password)?)
+ | CONNECT ip_address '/' port (username password)?
+ -> ^(NODE_CONNECT ip_address port (username password)?)
;
helpStatement
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java?rev=1069205&r1=1069204&r2=1069205&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java Thu Feb 10 02:43:32 2011
@@ -1390,7 +1390,7 @@ public class CliClient extends CliUserHe
{
Tree idList = statement.getChild(0);
int portNumber = Integer.parseInt(statement.getChild(1).getText());
-
+
StringBuilder hostName = new StringBuilder();
int idCount = idList.getChildCount();
for (int idx = 0; idx < idCount; idx++)
@@ -1405,6 +1405,14 @@ public class CliClient extends CliUserHe
// now, connect to the newly specified host name and port
sessionState.hostName = hostName.toString();
sessionState.thriftPort = portNumber;
+
+ // if we have user name and password
+ if (statement.getChildCount() == 4)
+ {
+ sessionState.username = statement.getChild(2).getText();
+ sessionState.password = CliUtils.unescapeSQLString(statement.getChild(3).getText());
+ }
+
CliMain.connect(sessionState.hostName, sessionState.thriftPort);
}
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliMain.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliMain.java?rev=1069205&r1=1069204&r2=1069205&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliMain.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliMain.java Thu Feb 10 02:43:32 2011
@@ -115,35 +115,38 @@ public class CliMain
return;
}
}
-
+
if ((sessionState.username != null) && (sessionState.password != null))
{
- // Authenticate
+ // Authenticate
Map<String, String> credentials = new HashMap<String, String>();
credentials.put(SimpleAuthenticator.USERNAME_KEY, sessionState.username);
credentials.put(SimpleAuthenticator.PASSWORD_KEY, sessionState.password);
AuthenticationRequest authRequest = new AuthenticationRequest(credentials);
- try
+ try
{
thriftClient.login(authRequest);
cliClient.setUsername(sessionState.username);
- }
- catch (AuthenticationException e)
+ }
+ catch (AuthenticationException e)
{
+ thriftClient = null;
sessionState.err.println("Exception during authentication to the cassandra node, " +
"Verify the keyspace exists, and that you are using the correct credentials.");
return;
- }
- catch (AuthorizationException e)
+ }
+ catch (AuthorizationException e)
{
+ thriftClient = null;
sessionState.err.println("You are not authorized to use keyspace: " + sessionState.keyspace);
return;
}
- catch (TException e)
+ catch (TException e)
{
+ thriftClient = null;
sessionState.err.println("Login failure. Did you specify 'keyspace', 'username' and 'password'?");
return;
- }
+ }
}
// Lookup the cluster name, this is to make it clear which cluster the user is connected to
@@ -155,7 +158,6 @@ public class CliMain
}
catch (Exception e)
{
-
sessionState.err.println("Exception retrieving information about the cassandra node, check you have connected to the thrift port.");
if (sessionState.debug)
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliOptions.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliOptions.java?rev=1069205&r1=1069204&r2=1069205&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliOptions.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliOptions.java Thu Feb 10 02:43:32 2011
@@ -124,11 +124,19 @@ public class CliOptions
{
css.username = cmd.getOptionValue(USERNAME_OPTION);
}
+ else
+ {
+ css.username = "default";
+ }
if (cmd.hasOption(PASSWORD_OPTION))
{
css.password = cmd.getOptionValue(PASSWORD_OPTION);
}
+ else
+ {
+ css.password = "";
+ }
// Look for keyspace
if (cmd.hasOption(KEYSPACE_OPTION))
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java?rev=1069205&r1=1069204&r2=1069205&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliUserHelp.java Thu Feb 10 02:43:32 2011
@@ -83,10 +83,12 @@ public class CliUserHelp {
state.out.println("Display the general help page with a list of available commands.");
break;
case CliParser.NODE_CONNECT:
- state.out.println("connect <hostname>/<port>;\n");
- state.out.println("Connect to the specified host on the specified port.\n");
+ state.out.println("connect <hostname>/<port> (<username> '<password>')?;\n");
+ state.out.println("Connect to the specified host on the specified port (using specified username and password).\n");
state.out.println("example:");
state.out.println("connect localhost/9160;");
+ state.out.println("connect localhost/9160 user 'badpasswd';");
+ state.out.println("connect 127.0.0.1/9160 user 'badpasswd';");
break;
case CliParser.NODE_USE_TABLE:
@@ -330,7 +332,7 @@ public class CliUserHelp {
state.out.println("? Display this message.");
state.out.println("help; Display this help.");
state.out.println("help <command>; Display detailed, command-specific help.");
- state.out.println("connect <hostname>/<port>; Connect to thrift service.");
+ state.out.println("connect <hostname>/<port> (<username> '<password>')?; Connect to thrift service.");
state.out.println("use <keyspace> [<username> 'password']; Switch to a keyspace.");
state.out.println("describe keyspace (<keyspacename>)?; Describe keyspace.");
state.out.println("exit; Exit CLI.");