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.");