You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by se...@apache.org on 2013/04/18 22:52:26 UTC

svn commit: r1469563 - in /hbase/branches/0.95: hbase-it/src/test/java/org/apache/hadoop/hbase/HBaseClusterManager.java src/main/docbkx/developer.xml

Author: sershe
Date: Thu Apr 18 20:52:26 2013
New Revision: 1469563

URL: http://svn.apache.org/r1469563
Log:
HBASE-8350 enable ChaosMonkey to run commands as different users

Modified:
    hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/HBaseClusterManager.java
    hbase/branches/0.95/src/main/docbkx/developer.xml

Modified: hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/HBaseClusterManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/HBaseClusterManager.java?rev=1469563&r1=1469562&r2=1469563&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/HBaseClusterManager.java (original)
+++ hbase/branches/0.95/hbase-it/src/test/java/org/apache/hadoop/hbase/HBaseClusterManager.java Thu Apr 18 20:52:26 2013
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseClusterManager.CommandProvider.Operation;
 import org.apache.hadoop.hbase.util.Pair;
 import org.apache.hadoop.util.Shell;
@@ -37,16 +38,33 @@ import org.apache.hadoop.util.Shell;
  */
 @InterfaceAudience.Private
 public class HBaseClusterManager extends ClusterManager {
+  private String sshUserName;
+  private String sshOptions;
+
+  @Override
+  public void setConf(Configuration conf) {
+    super.setConf(conf);
+    if (conf == null) {
+      // Configured gets passed null before real conf. Why? I don't know.
+      return;
+    }
+    sshUserName = conf.get("hbase.it.clustermanager.ssh.user", "");
+    String extraSshOptions = conf.get("hbase.it.clustermanager.ssh.opts", "");
+    sshOptions = System.getenv("HBASE_SSH_OPTS");
+    if (!extraSshOptions.isEmpty()) {
+      sshOptions = StringUtils.join(new Object[] { sshOptions, extraSshOptions }, " ");
+    }
+    LOG.info("Running with SSH user [" + sshUserName + "] and options [" + sshOptions + "]");
+  }
 
   /**
    * Executes commands over SSH
    */
-  static class RemoteShell extends Shell.ShellCommandExecutor {
+  protected class RemoteShell extends Shell.ShellCommandExecutor {
 
     private String hostname;
 
     private String sshCmd = "/usr/bin/ssh";
-    private String sshOptions = System.getenv("HBASE_SSH_OPTS"); //from conf/hbase-env.sh
 
     public RemoteShell(String hostname, String[] execString, File dir, Map<String, String> env,
         long timeout) {
@@ -71,11 +89,12 @@ public class HBaseClusterManager extends
 
     @Override
     public String[] getExecString() {
+      String userAndHost = sshUserName.isEmpty() ? hostname : (sshUserName + "@" + hostname);
       return new String[] {
           "bash", "-c",
           StringUtils.join(new String[] { sshCmd,
-              sshOptions == null ? "" : sshOptions,
-              hostname,
+              (sshOptions == null) ? "" : sshOptions,
+              userAndHost,
               "\"" + StringUtils.join(super.getExecString(), " ") + "\""
           }, " ")};
     }
@@ -84,22 +103,6 @@ public class HBaseClusterManager extends
     public void execute() throws IOException {
       super.execute();
     }
-
-    public void setSshCmd(String sshCmd) {
-      this.sshCmd = sshCmd;
-    }
-
-    public void setSshOptions(String sshOptions) {
-      this.sshOptions = sshOptions;
-    }
-
-    public String getSshCmd() {
-      return sshCmd;
-    }
-
-    public String getSshOptions() {
-      return sshOptions;
-    }
   }
 
   /**

Modified: hbase/branches/0.95/src/main/docbkx/developer.xml
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/src/main/docbkx/developer.xml?rev=1469563&r1=1469562&r2=1469563&view=diff
==============================================================================
Binary files - no diff available.