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.